为什么使用osgi?

时间:2011-12-06 08:27:28

标签: java osgi

我想知道为什么在构建java应用程序时使用OSGI框架。我在网上搜索这个,但答案看起来很复杂。任何人都可以解释为什么我们需要采用osgi。

很抱歉,如果问题不适合stackoverflow 我很感激读者的耐心。感谢。

5 个答案:

答案 0 :(得分:16)

OSGi提供了一个模块化系统,其中包含模块的版本控制,以及一些生命周期管理。它管理模块之间的依赖关系,模块的动态/延迟启动/卸载,查找/发现等。

部分内容将成为java语言的一部分。它比类型的意大利面布线更复杂。

答案 1 :(得分:7)

IMHO OSGI本身需要大量的锅炉板代码。但是,如果您使用像Karaf& amp; iPOJO隐藏了大部分开销,您将获得大部分收益。

主要好处是能够控制使用哪些版本以及正确的模块隔离。例如,你可以

  • 让容器从像nexus这样的maven存储库下载正确的版本。
  • 使用同一个库的多个版本,并且需要使用正确库的模块。
  • 在应用程序运行时停止,升级和启动模块。
  • 一个Web控制台,可以查看所有模块的状态并集体或单独管理它们。

答案 2 :(得分:2)

对我而言,OSGi的最佳部分是它促进了面向服务的系统视图,这有助于解耦,测试和团队合作。

我不认为它必须是复杂的,因为我试图用我的" OSGi为凡人演示"示例应用[1]和幻灯片[2](两个无耻的插头; - )

[1] https://github.com/bdelacretaz/OSGi-for-mere-mortals

[2] http://www.slideshare.net/bdelacretaz/osgi-for-mere-mortals

答案 3 :(得分:1)

彻底完成此tutorial。你可能会得到答案。

答案 4 :(得分:0)

OSGi是一个快速框架,因为它借助于预定义的xml 文件,知道将哪个服务加载到OSGi环境中。由于懒惰状态,它降低了运行时成本。服务实例在需要时创建。某个捆绑软件的不同版本可以被其他捆绑软件同时使用。由于每个插件都具有自己的类加载器,因此可以停止,启动,安装或卸载任何捆绑软件,而无需停止 Java虚拟机。通过界面在OSGi环境中使用声明式服务或服务跟踪器。使用界面经常为可重用代码铺平道路。尽管OSGi框架包含许多类和接口,但是可以使用它来创建功能强大的项目。由于Java随处可见,因此OSGi也可以也可以运行