所以到昨天早上为止,我都不知道 OSGi 到底是什么。OSGi只是一个我反复看到的流行词,所以我终于腾出一些时间来温习它。
实际上它看起来很酷,所以我想首先声明(郑重声明)我在任何方面都不反对 OSGi,这也不是什么“抨击 OSGi”的问题。
归根结底,OSGi 似乎已经基本上解决了 Java 模块化的 JSR 277问题,它认识到 JAR
文件规范存在缺陷,在某些角落情况下可能导致名称空间解析和类加载问题。OSGi 还做了很多其他很酷的事情,但是据我所知,这是它最大的吸引力(或者说是其中之一)。
对我来说——作为一个相当新的(几年前) Java EE 开发者,这绝对是令人难以置信的,我们在2011年,目前生活在 Java 7的时代,这些类加载问题仍然存在; 特别是在企业环境中,一个应用服务器可能有数百个 JAR,其中许多取决于不同版本的另一个和所有运行(或多或少)并发。
我的问题是:
尽管我对 OSGi 很感兴趣,尽管我很想开始学习它,看看它在哪里/是否对我的项目有用,但我没有时间坐下来学习那么大的东西,至少现在是这样。
那么,当这些问题出现时,非 OSGi 开发人员应该怎么做呢?目前有哪些 爪哇咖啡(Oracle/Sun/JCP)解决方案(如果有的话) ?为什么电锯杀人狂会从 J7身上割下来?社区对 Jigsaw 明年在 J8中实现有多大把握?尽管 Jigsaw 还不是 Java 平台的一部分,但是否有可能为您的项目获得 Jigsaw?
我想我现在要问的是恐慌,阴谋,还有手掌的组合。现在我终于明白了什么是 OSGi,我只是不“明白”像 Jigsaw 这样的东西是如何花了20多年才实现的,以及它是如何从一个发布版本中被封装起来的。这是最基本的。
而且,作为一个开发人员,我也很好奇我的解决方案是什么,没有 OSGi。
另外,注意: 我知道这不是一个“ 纯粹的编程”类型的问题,但是在你们中的一些人把你们的鼻子弄歪之前,我想声明(再次声明) ,我故意把这个问题放在 SO 上。那是因为我对我的 SOers 同伴们只有最大的尊重,而且我正在从我每天看到的潜伏在这里的一些“ IT 之神”那里寻找一个架构级别的答案。
但是,对于那些绝对 坚持的人来说,这个问题需要一些代码段来支持:
int x = 9;
(感谢任何可以在这个 OSGi/Jigsaw/classloader/name space/JAR 鬼东西上权衡利弊的人!)