我是OSGI框架的新手。我正在浏览这些网站并阅读有关OSGI框架的内容。坦率地说,我没有理解任何东西。以下是我的疑惑osgi相关的一些疑问
- OSGi应该提供模块化。我们不能通过普通罐子来实现模块化吗?
- 这是什么意思,OSGi有一个动态组件模型?
- 软件包可以安装,启动,停止,更新等。我们为什么要安装捆绑软件?为什么不能像我们访问其他普通罐子一样直接访问?
我完全困惑。有人可以回答我吗?如果可以举一些例子。
我是OSGI框架的新手。我正在浏览这些网站并阅读有关OSGI框架的内容。坦率地说,我没有理解任何东西。以下是我的疑惑osgi相关的一些疑问
我完全困惑。有人可以回答我吗?如果可以举一些例子。
我试着来回答你在OSGi博客第一个问题:http://blog.osgi.org/2013/08/dear-prudence-cant-we-achieve.html
下周,将解答下。
阅读OSGi规范的实现可能会有所帮助。
如果您使用过Eclipse,那么您已经体验到了OSGi的一些优点,甚至可能不知道它。
下面是关于Equinox的基础知识的很好的描述。
我的一个模块的定义是封装(即它隐藏内部细节),其与通过合同一个(即预定义的一组可能的相互作用的)其他模块通信的单元。 JAR文件不是模块,因为它不具备这些属性。没有封装,所有内部实现细节都可以从外部看到和访问。没有合同,只需将JAR文件放在classpath中,并希望它提供您所需的功能。
动态表示可以在运行时期间安装,升级或卸载OSGi软件包(模块)。这对于升级正在运行的系统或将软件有效地部署到大型网络非常有用。
必须安装软件包,因为在使用软件之前必须安装软件。 JAR文件也必须安装!只有安装方式略有不同,即将JAR文件添加到类路径中,而使用install
命令安装捆绑软件(也可以通过脚本或API调用)。 OSGi给我们更多的控制这个过程。
除了捆绑的方面作为真正的模块,这在所有其他的答案被处理,还有其他一些功能,使OSGi的非常强大:
我保证我没有试图变得sn,不驯,但OSGi提供的功能只有在Java最佳实践环境中才有意义。 OSGi是构建真正架构良好的Java应用程序的一种强大工具。如果没有这个目标和一系列的缺陷,模块化,组件生命周期和“JVM中的SOA”概念就没有太多可看的地方了。 – chad
@chad:我认为你在那里表现得非常好 - 根本不会嗤之以鼻:) –