ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-02-16 15:01:52  阅读:270  来源: 互联网

标签:架构设计 Java Eclipse 包和类 模块 OSGi 加载


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,Eclipse,包和类,模块,OSGi,加载
来源: https://www.cnblogs.com/etbird/p/14406691.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有