Izz*_*zza 14 java eclipse osgi
我正在java中开发一个基于语义的搜索应用程序.为了使应用程序模块化,我想使用osgi架构.但由于我是osgi的新手,我不知道使用它的优点和缺点.任何人都可以解释使用osgi的优点/缺点,使用osgi /应用程序将通过这样做获得什么样的应用程序将受益?
谢谢!!
Pio*_*otr 25
简而言之,OSGi是用于构建模块化应用程序的标准.它增加了新的模块化水平 - 捆绑(又称组件,模块).每个包都包含类和接口,它必须明确指出最重要的内容:
从技术角度来看,bundle是jar文件,它有一些扩展META-INF/MANIFEST.MF文件.所有上述信息都存储在MANIFEST.MF文件中.
从实际的角度来看,这种显性既有优点也有缺点.对我来说,最大的优势是您不得不在标准应用程序中考虑您的体系结构,模块和它们之间的交互.这可以创建更好的架构,其中每个模块负责明确定义的任务,并且可以重用模块.如果遇到缺点,创建大量模块有时可能会很痛苦.拥有大量模块非常容易,如果你真的有很多模块,那么很难维护模块之间的所有依赖关系(依赖循环非常痛苦).
OSGi不仅是构建模块化应用程序的标准.它还指定捆绑存在和运行的环境.这是您应该注意的事项 - 使用OSGi时,您必须在特殊环境中启动应用程序.此环境(例如Eclipse Equinox)负责运行您的应用程序.它提供了一些奇特的可能性.例如,您可以在已经运行的应用程序中添加一个包而无需停止此应用程序 - 这在某些类型的应用程序中可能是一个非常重要的元素(但是恕我直言,没有那么多应用程序真正需要这个).
真正重要的还有一个事实,即某些开源库可能与OSGi基础架构不完全兼容,并且可能很难在标准Java应用程序中使用它们(请记住,在OSGi中,一切都应该是束).但是,许多流行的库都被包装成了捆绑包 - 例如,Spring提供了包含许多流行库(但不是全部)的bundle库.
OSGi非常复杂,很难用几句话来描述它及其可能性.我写的只是OSGi中最重要的(IMO)元素.但是OSGI要多得多,例如捆绑可以互相发送事件,它们可以互相提供服务.如果您对更多细节感兴趣,我建议您阅读教程.我可以在Java World中推荐这个.之后你可以看看这个关于OSGi的免费电子书(它包含很多细节).关于OSGi的所有细节都可以在官方规格中找到,但我不会说它们很容易阅读(至少在开头) - 你可以在这里找到它们(在下载之前你必须接受许可证和一些法律声明) .
总结一下,我认为OSGi在构建模块化应用程序时非常有用,但这肯定不是免费的.这是一个沉重的标准,它可能会让你不能做某些事情并强迫你做OSGi的方式.
一些相关的SO问题:
| 归档时间: |
|
| 查看次数: |
5524 次 |
| 最近记录: |