【发布时间】:2011-11-21 20:22:42
【问题描述】:
所以截至昨天早上,我对 OSGi 甚至是什么一无所知。 OSGi 只是我不断看到的一些流行词,所以我终于抽出一些时间来复习它。
这实际上看起来很酷,所以我想首先声明(为了记录)我在任何方面都不反对 OSGi,这也不是一些“抨击 OSGi”的问题。
归根结底,OSGi 似乎 - 基本上 - 解决了 Java Modularity 上的 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。
另外,注意:我知道这不是一个“纯编程”类型的问题,但在你们中的一些人鼻子弯曲之前,我想声明(再次记录在案)我故意将这个问题放在 SO 上。那是因为我只对我的 SOers 同胞表示最大的尊重,我正在从我每天看到的一些“IT 之神”那里寻找架构级别的答案。
但是,对于那些绝对坚持 SO 问题需要有一些代码段支持的人:
int x = 9;
(感谢任何可以权衡这个 OSGi/Jigsaw/classloader/namespace/JAR 地狱的东西的人!)
【问题讨论】:
-
嗯,Java 9 昨天就在这里,还有 Jigsaw。很高兴阅读:The Top 10 Jigsaw and Java 9 Misconceptions Debunked
标签: java osgi classloader java-platform-module-system