OSGi的基本主题是什么?

OSGi的基本主题是什么?,osgi,Osgi,OSGi是一个面向Java的动态模块化系统。好的,但是基线主题是什么,为什么要开发OSGi?使用OSGi的好处是什么?开发OSGi的主要故事是什么?它为什么存在?是 Java模块系统:它提供了一种导出和导入Java包并强制执行模块边界的方法,包括显式依赖关系和版本信息 Java系统的通用容器:bundle可以在不停止系统的情况下动态加载和卸载,其中“bundle”基本上是jar文件 面向服务的编程系统:除了通过包对系统进行模块化之外,OSGi还支持面向服务的模块化,包括(PDF)之类的东西

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

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

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

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


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

如果仔细看,Java中的类路径概念真的很糟糕

您可以在JAR文件中分发类,但在运行时,Java会(几乎)盲目地将所有JAR文件中的所有类放在一个大袋子中,在这个袋子中,同名的类相互掩盖,然后以意外的方式进行交互

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

我强烈建议阅读一些关于OSGi的介绍性文章,这些文章将对这一切意味着什么给出更具体的想法。Alex Blewitt关于Java模块化的InfoQ系列文章可能是一个很好的起点:


我想问题可以归结为“模块化的价值是什么”。有关Kirk Knorenschild关于此主题的优秀系列文章,请参阅。我相信一本书也在酝酿之中

如果你有学术倾向,最近出版的一本书——《多样性与复杂性》充分探讨了模块化和动态系统组装的力量(http://press.princeton.edu/titles/9208.html). 虽然不是以软件为中心,但本书解释了为什么下一代自适应/健壮的软件系统必须是模块化的

注意,除了作为Java模块化的行业标准之外(因此支持上述所有功能);OSGi还提供了强大的“JVM内部的SOA”服务架构

最后,要了解如何在OSGi中进行开发,请尝试Neil Bartlett的《OSGi实践》一书

问候


Richard

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


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

在OSGi联盟更名之前,OSGi代表“开放服务网关计划”。它的主要目标是嵌入式家庭网关和路由器。我不同意,捆绑包周围的工具非常好,所以它本身可以做很多事情(Bnd和Felix注释,您涵盖了很多)。许多开源库已经有OSGi清单条目(正是因为它很容易添加)。例如:Maven bundle插件生成的配置文件被Felix视为格式错误而拒绝(并且必须手动修复),“Apply to classpath”会破坏Maven项目,当某些东西无法工作时不会出现错误或警告,在wazoo的样板中,iPOJO默默地没有完成它的工作,在消息中拼写错误,需要黑客(pax url)使IDE和部署的JAR之间的工作相同,因为他们过度设计了它,并假设每台机器都将有一个管理员控制OSGi容器,部署可插拔的游戏、图形,对于普通用户来说,音频软件是不合理的。osgi是这样说的:“嘿,我们知道程序员会有坏习惯,但这里有一种方法可以让你更容易养成坏习惯。”