【发布时间】:2010-12-21 14:02:56
【问题描述】:
OSGi 是 Java 的动态模块化系统。好的,但是基线主题是什么,为什么要开发 OSGi?使用 OSGi 有什么好处?开发 OSGi 的主要故事是什么?为什么会存在?
【问题讨论】:
-
osgi 是一种表达方式,“嘿,我们知道你会程序员有坏习惯,但这里有一种方法可以让你更容易养成坏习惯。”
标签: osgi
OSGi 是 Java 的动态模块化系统。好的,但是基线主题是什么,为什么要开发 OSGi?使用 OSGi 有什么好处?开发 OSGi 的主要故事是什么?为什么会存在?
【问题讨论】:
标签: osgi
无论 OSGi 提供什么好处,它们都被灵活性的损失、构建环境的修改和许多其他变化所掩盖,这些变化主要是由(经验丰富的)开发人员无能引起的。
这些障碍会降低开发人员的工作效率,从而降低对源代码进行所有改进(不仅仅是模块化改进)的速度。
【讨论】:
如果你仔细观察,Java 中的类路径的概念真的很糟糕。
您在 JAR 文件中分发您的类,但在运行时 Java 将(几乎)盲目地将所有 JAR 文件中的所有类放入一个大包中,其中同名的类相互遮盖,然后以意想不到的方式交互。
OSGi 为 Java 平台带来了适当的运行时模块化,并在此之上提供了强大的服务模型,有时称为“JVM 内的 SOA”。
我强烈建议阅读一些关于 OSGi 的介绍性文章,这些文章将更具体地了解这一切的含义。一个很好的起点可能是 Alex Blewitt 在 InfoQ 上关于 Java 模块化的系列文章:
【讨论】:
我想这个问题可以简化为“模块化的价值是什么”。有关 Kirk Knoernschild 就该主题撰写的一系列优秀文章,请参阅 http://techdistrict.kirkk.com/。我相信一本书也在制作中。
如果您有学术倾向 - 最近出版的一本书 - “多样性和复杂性”(http://press.princeton.edu/titles/9208.html)很好地探索了模块化和动态系统组装的力量。虽然不是以软件为中心——这本书解释了为什么下一代自适应/稳健的软件系统必须是模块化的。
请注意,除了作为 Java 模块化的行业标准之外(因此启用上述所有功能); OSGi 还带来了强大的“JVM 内的 SOA”服务架构。
最后,对于使用 OSGi 进行开发的温和而精心制作的介绍 - 试试 Neil Bartlett 的书“实践中的 OSGi”http://njbartlett.name/osgibook.html
问候
理查德
【讨论】:
OSGi是
Java 的模块系统:它提供了一种导出和导入 Java 包并强制执行模块边界的方法,包括显式依赖和版本信息。
Java 系统的通用容器:bundle 可以在不停止系统的情况下动态加载和卸载,其中“bundle”基本上是 jar 文件。
面向服务的编程系统:除了通过包对系统进行模块化之外,OSGi 还支持面向服务的模块化,包括 whiteboard pattern (PDF) 之类的东西。
OSGi 最初是为了支持高端嵌入式系统(例如机顶盒)而开发的,这会激发显式依赖关系和版本控制,并使其在用作较新的企业端容器时相当轻巧。
【讨论】: