OSGi的基本主题是什么?

时间:2009-11-30 09:34:56

标签: osgi

OSGi是一个用于Java的动态模块化系统。好的,但基线主题是什么,为什么OSGi开发了?使用OSGi有什么好处?开发OSGi的主要故事是什么?它为什么存在?

4 个答案:

答案 0 :(得分:17)

如果你仔细观察,Java中classpath的概念真的很糟糕。

您在JAR文件中分发类,但在运行时,Java会(几乎)盲目地将所有JAR文件中的所有类放入一个大包,其中具有相同名称的类相互遮盖,然后以意想不到的方式进行交互。

OSGi为Java平台带来了适当的运行时模块化,并在此基础上提供了强大的服务模型,有时称为“JVM内部的SOA”。

我强烈建议您阅读一些关于OSGi的介绍性文章,这些文章将更加具体地说明这一切意味着什么。一个很好的起点可能是由Alex Blewitt撰写的关于Java模块化的InfoQ系列文章:

答案 1 :(得分:5)

OSGi

  • Java模块系统:它提供了一种导出和导入Java包并强制执行模块边界的方法,包括显式依赖和版本信息。

  • Java系统的通用容器:可以在不停止系统的情况下动态加载和卸载bundle,其中“bundle”基本上是jar文件。

  • 面向服务的编程系统:除了按包模块化系统外,OSGi还支持面向服务的模块化,包括whiteboard pattern(PDF)等。

OSGi最初是为支持机顶盒等高端嵌入式系统而开发的,它可以激发显式依赖关系和版本控制,并在用作更新的企业级容器时使其相当轻量级。

答案 2 :(得分:4)

无论OSGi提供什么好处,它们都被灵活性的损失,构建环境的修改以及许多其他变化所掩盖,这些变化主要是由(经验丰富的)开发人员无能造成的。

这些障碍会降低开发人员的工作效率,从而降低对源代码进行所有改进的速度(不仅仅是模块化改进)。

答案 3 :(得分:3)

我想问题可以归结为“模块化的价值是什么”。关于Kirk Knoernschild关于这一主题的一系列优秀文章,请参阅http://techdistrict.kirkk.com/。我相信一本书也在起作用。

如果你有学术倾向 - 最近出版的书“多样性和复杂性”(http://press.princeton.edu/titles/9208.html)很好地探讨了模块化和动态系统组装的力量。虽然不是以软件为中心 - 但这本书解释了为什么下一代自适应/强大的软件系统必须是模块化的。

请注意,除了作为Java Modularity的行业标准(因此启用上述所有内容); OSGi还为表提供了一个强大的“SOA-JVM”服务架构。

最后,对于OSGi开发的温和而精心设计的介绍 - 试试Neil Bartlett的书“OSGi in Practice”http://njbartlett.name/osgibook.html

此致

理查德