OSGi是一种模块化架构,JavaBeans是一种组件架构。 什么是差异?
答案 0 :(得分:6)
OSGi和Java Bean之间的主要区别在于类加载器的工作方式。在标准的.jar文件或EJB中,rt.jar文件或EJB等效项维护类路径。此外,如果您使用容器部署应用程序,则可能会有多个类路径维护机制导致问题。因此,例如,当您创建.war文件时,通常会创建一个包含所有.war的.jar依赖项的lib目录。如果你的应用程序中只有一个war或.jar,那就不是那么糟糕了。但想象一下,包含100个EJB的大型企业部署都包含apache-commons!你最终得到了100个apache-commons实例,它们都在同一个容器中运行,吸收资源。
在OSGi中,您将每个.jar文件(我们称之为捆绑包,现在称为OSGi)部署到OSGi容器中。每个.jar文件都公开(导出)它想要其他包使用的包,并且还标识包的版本。此外,每个捆绑包还明确说明(导入)其他捆绑包所需的包以进行工作。然后,OSGi容器将管理所有这些导出,并将它们与适当的导入进行匹配。现在,您可以为每个要提供的EJB提供apache-commons。您已经取消了/ lib目录,现在您的应用程序占用的资源更少。
在您的问题中,您询问了组件架构和模块化架构之间的区别。模块化是指使每个捆绑包成为自己的部署单元并允许它与其他捆绑包进行通信而不是将它们全部整合到一个大型.jar文件中的过程。