2009-11-30 41 views
8

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

+0

osgi是一种说法,“嘿,我们知道你们所有的程序员都有坏习惯,但这是一种让你更容易练习坏习惯的方法。” – 2016-06-15 16:43:44

回答

5

OSGi

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

  • 为Java系统的广义容器:束可以被动态地加载和卸载,而不停止该系统,其中“束”基本上是JAR文件。

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

OSGi的最初开发是为了支持高端嵌入式系统,例如机顶盒,这激发了明确的依赖关系和版本,以及作为一个较新的,企业端使用时使其相当轻量级容器。

+1

在OSGi联盟重新命名之前,OSGi代表“开放服务网关倡议”。主要目标是嵌入式家庭网关和路由器。 – akr 2009-12-08 01:11:16

17

如果你仔细看,类路径中的Java概念真的很烂。

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

的OSGi带来了正确的运行时模块到Java平台和一个功能强大的服务模型之上,有时也被称为“SOA在JVM内部”。

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

3

我想这个问题可以降低到“什么是Modularisation'的价值。有关Kirk Knoernschild关于此主题的优秀系列文章,请参见http://techdistrict.kirkk.com/。我相信一本书也在作品中。

如果您在学术上倾斜 - 模块化和动力系统总成的动力深受最近出版的新书探讨 - “多样性和复杂性”(http://press.princeton.edu/titles/9208.html)。尽管不是以软件为中心的,本书解释了为什么下一代自适应/强大的软件系统必须是模块化的。

请注意,除了成为Java模块化的行业标准(因此启用上述所有功能); OSGi还为桌面带来了强大的“SOA-内部JVM”服务架构。

最后,一个温柔以及制作介绍到OSGi的发展 - 尝试尼尔·巴特利特的书“OSGi的实践” http://njbartlett.name/osgibook.html

问候

理查德

3

任何好处的OSGi提供,他们黯然失色由于缺乏灵活性,对构建环境的修改以及大量其他变化,这主要是由(经验丰富的)开发人员无能所致。

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

+0

我不同意,Bundles上的工具非常好,所以它本身可以做很多事情(Bnd和Felix注释,你涵盖了很多)。许多开源库已经有OSGi清单条目(正因为它很容易添加)。 – eckes 2014-04-16 02:58:28

+0

示例:由Felix拒绝生成配置文件的Maven bundle插件由于格式不正确(并且必须手动修复它们),“应用到classpath”会中断maven项目,当某些操作失败时没有错误或警告,样板文件iPOJO默默无法完成工作,消息中的拼写错误,需要黑客(pax url)在IDE和部署的JAR之间进行相同的工作,因为它们对它进行了过度设计,并假定每台机器都将有一个管理员来控制OSGi容器,部署可插拔游戏,图形,音频软件给普通用户不合理。 – user515655 2015-11-03 17:20:20