【问题标题】:What is the underlying theme in OSGi?OSGi 的基本主题是什么?
【发布时间】:2010-12-21 14:02:56
【问题描述】:

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

【问题讨论】:

  • osgi 是一种表达方式,“嘿,我们知道你会程序员有坏习惯,但这里有一种方法可以让你更容易养成坏习惯。”

标签: osgi


【解决方案1】:

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

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

【讨论】:

  • 我不同意,Bundles 周围的工具非常好,所以它本身可以做很多事情(Bnd 和 Felix Annotations,你涵盖了很多内容)。而且很多开源库已经有了 OSGi 清单条目(正是因为它很容易添加)。
  • 示例:Maven 捆绑插件生成的配置文件被 Felix 拒绝为格式错误(并且必须手动修复它们),“应用到类路径”会破坏 maven 项目,当某些东西无法工作时不会出现错误或警告,wazoo 的样板,iPOJO 默默地无法完成它的工作,消息中的拼写错误,需要黑客(pax url)以使 IDE 和部署的 JAR 之间的工作相同,因为他们过度设计它并假设每台机器都会有一个管理员控制 OSGi 容器,使得向普通用户部署可插拔游戏、图形、音频软件变得不合理。
【解决方案2】:

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

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

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

我强烈建议阅读一些关于 OSGi 的介绍性文章,这些文章将更具体地了解这一切的含义。一个很好的起点可能是 Alex Blewitt 在 InfoQ 上关于 Java 模块化的系列文章:

【讨论】:

    【解决方案3】:

    我想这个问题可以简化为“模块化的价值是什么”。有关 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

    问候

    理查德

    【讨论】:

      【解决方案4】:

      OSGi

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

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

      • 面向服务的编程系统:除了通过包对系统进行模块化之外,OSGi 还支持面向服务的模块化,包括 whiteboard pattern (PDF) 之类的东西。

      OSGi 最初是为了支持高端嵌入式系统(例如机顶盒)而开发的,这会激发显式依赖关系和版本控制,并使其在用作较新的企业端容器时相当轻巧。

      【讨论】:

      • 在 OSGi 联盟更名之前,OSGi 代表“开放服务网关倡议”。它的主要目标是嵌入式家庭网关和路由器。
      猜你喜欢
      • 2010-11-06
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 2016-08-03
      • 2016-05-29
      • 2018-08-01
      相关资源
      最近更新 更多