我在维基百科和其他网站上读过关于OSGi的文章,但我并没有真正看到大局。它说它是一个基于组件的平台,并且您可以在运行时重新加载模块。同样,到处都给出的“实际示例”是Eclipse插件框架。
我的问题是:
OSGi清晰而简单的定义是什么? 它能解决什么常见问题?
所谓“常见问题”,我指的是我们每天都要面对的问题,比如“OSGi能做些什么来让我们的工作更高效/有趣/简单?”
我在维基百科和其他网站上读过关于OSGi的文章,但我并没有真正看到大局。它说它是一个基于组件的平台,并且您可以在运行时重新加载模块。同样,到处都给出的“实际示例”是Eclipse插件框架。
我的问题是:
OSGi清晰而简单的定义是什么? 它能解决什么常见问题?
所谓“常见问题”,我指的是我们每天都要面对的问题,比如“OSGi能做些什么来让我们的工作更高效/有趣/简单?”
当前回答
至少,OSGi让您考虑到模块化、代码重用、版本控制以及项目的一般管道。
其他回答
You can, analogically speaking, change the motor of your car without turning it off. You can customize complex systems for the customers. See the power of Eclipse. You can reuse entire components. Better than just objects. You use a stable platform to develop component based Applications. The benefits of this are huge. You can build Components with the black box concept. Other components don't need to know about hidden interfaces, them see just the published interfaces. You can use in the same system several equal components, but in different releases, without compromise the application. OSGi solves the Jar Hell problem. With OSGi you develop thinking to architect systems with CBD
对于使用Java的每个人来说,有很多好处(我现在只提醒了这些)。
为清晰起见,经过编辑。OSGi页面给出了一个比我更好的简单答案
一个简单的答案:OSGi服务平台为协作网络服务提供了一个标准化的、面向组件的计算环境。这种体系结构显著降低了构建、维护和部署应用程序的整体复杂性。 OSGi服务平台提供了在各种网络的设备上动态改变组合的功能,不需要重新启动。
在单个应用程序结构中,比如Eclipse IDE,在安装新插件时重新启动并不是什么大问题。完全使用OSGi实现,您应该能够在运行时添加插件,获得新功能,而完全不需要重新启动eclipse。
同样,这不是每天都要做的大事,只是应用程序的小用途。
但是,当你开始研究多计算机、分布式应用框架时,这就是它开始变得有趣的地方。当关键系统必须有100%的正常运行时间时,热插拔组件或在运行时添加新功能的能力非常有用。当然,现在大多数情况下都有这样做的能力,但是OSGi正试图将所有东西捆绑到一个具有公共接口的漂亮的小框架中。
OSGi能解决常见问题吗,我不确定。我的意思是,它可以,但对于更简单的问题,开销可能不值得。但是当您开始处理更大的、网络化的应用程序时,需要考虑这一点。
其他人已经详细概述了OSGi的好处,我在此解释我所见过或使用过的实际用例。
In one of our application, we have event based flow and flow is defined in plugins based on OSGi platform so tomorrow if some client wants different/additional flow then he just have to deploy one more plugin, configure it from our console and he is done. It is used for deploying different Store connectors, for example, suppose we already have Oracle DB connector and tomorrow mongodb is required to be connected then write a new connector and deploy it and configure the details through console and again you are done. deployment of connnectors is handled by OSGi plugin framework.
在它的官方网站上已经有了一个很有说服力的声明,我可以引用
OSGi技术如此成功的关键原因是它提供了一个非常成熟的组件系统,实际上可以在数量惊人的环境中工作。OSGi组件系统实际上用于构建高度复杂的应用程序,如ide (Eclipse)、应用服务器(GlassFish、IBM Websphere、Oracle/BEA Weblogic、Jonas、JBoss)、应用程序框架(Spring、Guice)、工业自动化、住宅网关、电话等等。
至于开发商的利益?
开发人员:OSGi通过为当今大规模分布式系统和小型嵌入式应用程序提供模块化体系结构来降低复杂性。从内部和现成的模块构建系统可以显著降低复杂性,从而降低开发和维护费用。OSGi编程模型实现了基于组件的系统的承诺。
请参阅使用OSGi的好处。
至少,OSGi让您考虑到模块化、代码重用、版本控制以及项目的一般管道。