本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看 活动链接
问题:OSGi解决了什么问题?
我在维基百科和其他网站上读到过关于OSGi的内容,但我并没有真正看明白。它们说它是一个基于组件的平台,你可以在运行时重新加载模块。同样随处可见的“实际例子”是Eclipse插件框架。
我的问题是: 简单来说OSGi的定义是什么?
它解决了哪些常见问题?
我所说的“常见问题”是指我们每天都要面对的问题,比如“OSGi能做些什么来让我们的工作更高效/有趣/简单?”
回答一
在OSGi中,我找到了以下好处:
-
每个插件都是一个有版本的artifact,它有自己的类加载器。
-
每个插件都依赖于它所包含的特定的jar以及其他具体版本的插件。
-
由于版本控制和独立的类加载器,同一artifact的不同版本可以同时加载。如果应用程序的一个组件依赖于插件的一个版本,而另一个组件依赖于另一个版本,那么它们可以同时加载。
这样,您就可以将应用程序构建为一组按需加载的版本化插件artifact。每个插件都是一个独立的组件。就像Maven帮助您构建项目一样,它是可重复的,并且由一组创建它的artifact的具体版本来定义,OSGi帮助你在运行时完成这一工作。
回答二
至少,OSGi使你可以考虑模块化、代码重用、版本控制以及一般项目的探索。
文章翻译自Stack Overflow:stackoverflow.com/questions/1…