因此,截至昨天早上,我对 OSGi 甚至是什么一无所知。OSGi只是我不断看到的一个流行词,所以我终于抽出一些时间来复习它。
它实际上看起来很酷,所以我想首先声明(记录在案)我在任何方面都不是反 OSGi,这也不是一些“抨击 OSGi”的问题。
归根结底,OSGi 似乎 - 基本上 - 解决了 Java 模块化的JSR 277,它认识到JAR
文件规范存在缺陷,在某些极端情况下可能导致命名空间解析和类加载问题。OSGi 还做了很多其他非常酷的东西,但据我所知,这是它最大的吸引力(或其中之一)。
对我来说——作为一个相当新的(几年前)Java EE 开发人员,我们在 2011 年并且目前生活在 Java 7 时代,而且这些类加载问题仍然存在,这绝对是令人难以置信的;尤其是在企业环境中,一个应用服务器上可能有数百个 JAR,其中许多依赖于彼此的不同版本,并且都(或多或少)同时运行。
我的问题:
尽管我对 OSGi 很感兴趣,并且我想开始学习它以了解它在哪里/是否对我的项目有用,但我只是没有时间坐下来学习那么大的东西,至少现在。
那么当这些问题出现时,非 OSGi 开发人员应该怎么做呢?当前存在哪些Java (Oracle/Sun/JCP) 解决方案(如果有)?Jigsaw为什么会从J7中删减?Jigsaw 明年将在 J8 中实施的社区有多大把握?即使它还不是 Java 平台的一部分,是否有可能为您的项目获取 Jigsaw?
我想我在这里要问的是恐慌、阴谋和面子的结合。现在我终于明白了什么是 OSGi,我只是不“明白”像 Jigsaw 这样的东西是如何用了 20 多年才实现的,然后又是如何从一个版本中删除的。这似乎是基本的。
而且,作为一名开发人员,我也很好奇我的解决方案是什么,没有 OSGi。
另外,注意:我知道这不是一个“纯编程”类型的问题,但在你们中的一些人鼻子弯曲之前,我想声明(再次,为了记录)我故意提出这个问题所以。那是因为我对我的 SOers 同胞表示最大的尊重,我正在从我每天看到的一些“IT 之神”那里寻找架构级别的答案。
但是,对于那些绝对坚持用一些代码段支持 SO 问题的人:
int x = 9;
(感谢任何可以权衡这个 OSGi/Jigsaw/classloader/namespace/JAR 地狱的东西的人!)