码迷,mamicode.com
首页 > 编程语言 > 详细

Java应用架构设计 - 模块化模式与OSGi

时间:2021-02-18 13:23:48      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:undle   依赖   nbsp   今天   cli   java包   了解   世纪   隐藏   

OSGi(Open Service Gateway Initative)会带来生态系统吗?这个问题值得探讨。

OSGi并不是新鲜的事物,它从20世纪90年代就存在了。

OSGi是Java平台上的动态模块系统,但是它并没有被广泛地采用。

模块化并不是新的理念,OSGi也不是。

OSGi是成熟稳定的规范。

多年以来,OSGi技术在嵌入式系统以及网络设备市场上大放异彩,而对企业级的开发人员来说,OSGi依然是一种相对陌生的技术。

使用OSGI的平台有:

  Eclipse

  在2003年,Eclipse团队在寻找使Eclipse更动态化的方式。他们的决定是使用OSGi创建支持插件(plug-in)架构的富客户端平台,这是我们今天所了解的生态系统的第一步。开发人员使用Eclipse的一个原因就是有大量可用的插件,这些插件可以让他们高效的完成工作。其他开发人员创建Eclipse插件的原因是Eclipse是被众多开发人员广泛使用的IDE。同样的,生态系统养活了自己。Eclipse团队提供了如今的Eclipse生态系统赖以发展的环境。

  关于Eclipse和OSGi的历史,可以参考:https://www.eclipse.org/equinox/documents/transition.html

  Atlassian

  Atlassian插件框架(Atlassian plugin framework)是另一个使用功能OSGi的样例。

  Liferay7.0开始引入

 

OSGi原理:

  OSGi中的每个模块(bundle)都包含Java包和类。模块可以声明它所依赖的需要导入(import)的其它模块的Java包和类(通过Import-Package),也可以声明导出(export)自己的包和类,供其它模块使用(通过Export-Package)。也就是说,需要能够隐藏和共享一个模块中的某些Java包和类。这是通过OSGi特有的类加载器机制来实现的。OSGi中的每个模块都有对应的一个类加载器。它负责加载模块自己包含的Java包和类。当它需要加载Java核心库的类时(以java开头的包和类),它会代理给父类加载器(通常是启动类加载器)来完成。当它需要加载所导入的Java类时,它会代理给导出此Java类的模块来完成加载。模块也可以显式的声明某些Java包和类,必须由父类加载器来加载。只需要设置系统属性org.osgi.framework.bootdelegation的值即可。

 

Java应用架构设计 - 模块化模式与OSGi

标签:undle   依赖   nbsp   今天   cli   java包   了解   世纪   隐藏   

原文地址:https://www.cnblogs.com/etbird/p/14406691.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!