OSGi是Java领域里无可辩驳的最成熟的模块系统,它与Java几乎是如影相随,最早出现于JSR 8,但是最新规范是JSR 291。OSGi在JAR的MANIFEST.MF文件中定义了额外的元数据,用来指明每个包所要求的依赖。这就让模块能够(在运行时)检查其依赖是否满足要求, 另外,可以让每个模块有自己的私有 classpath(因为每个模块都有一个ClassLoader)。这可以让dependency hell尽早被发现,但是不能完全避免。
不过,Java社区领袖Adam Bien最近在其博客中认为,从技术角度讲,OSGi的确是实现模块化的可行办法,但OSGi的主要挑战不是技术,而是模块和bundle的管理。他建议在决定采用OSGi框架开发项目之前,考虑以下问题:
针对模块(bundle),采取何种版本 控制方案?大、小版本如何定义?
采用何种软件配置管理策略?允许开放和维 护模块所有版本的分支吗?预计要维护多少个分支?通过SVN吗?
在生产环境中,同时存在多少不同版本的模块?
针对模块和模块组合,如何进行测试?每一个版本都会显著增加复杂度。
采用何种发布管理策略?提供客户专属的模 块组合吗?缺陷修补/补丁策略是什么?
需要在系统运行中替换模块吗?如何处理正 在进行的事务?
对于Eclipse RCP应用,是否应该开放插件给最终用户?
采用何种软件分发系统?很多公司已经有了一套软件分发系统。应用和JVM经常打包到一个二进制文件中整体安装。增量更新几乎是不可能的。
模块之间如何交互?只通过Java接口吗?如果是,那么JPA实体的直接关联如何处理?
是否采用Maven描述模块和 OSGi?Maven模块版本会在OSGi bundle版本中得到体现吗?
Adam Bien认为,在深入思考这十个问题之后,OSGi可能就不再是项目的最佳选择。
读者朋友是否同意Adam Bien的观点,针对他的十个问题,有何看法?在实际开发中又是如何解决的?欢迎踊跃发表意见。
分享到:
相关推荐
SSM(Spring、SpringMVC、MyBatis)框架是Java Web开发中常见的技术栈,而OSGi(Open Service Gateway Initiative)则是一种模块化系统,主要用于解决Java应用程序的动态性、可扩展性和版本管理问题。将SSM框架与...
3. **系统稳定性**:采用微核机制,即使Bundle出现问题,也不会影响到整个系统的稳定运行,确保系统不会因单个组件崩溃而整体崩溃。 4. **模块化开发**:OSGI提供了一套规范的模块化开发和部署方式,有助于软件公司...
1. **模块化提升**:通过采用OSGi框架,企业可以将复杂的业务逻辑拆分成可管理的小模块,每个模块都有明确的责任边界,易于维护和扩展。 2. **生态系统的支持**:目前,几乎所有主流的企业应用服务器都支持OSGi,...
为了更好地满足这一需求,许多开发团队开始关注并采用OSGi(Open Service Gateway Initiative)和Spring框架。这两种技术各自拥有独特的优点,而它们的结合更是能够发挥出更大的协同效应。 - **OSGi**:作为一种...
Spring-DM,即Spring Dynamic Modules,是Spring官方在2008年推出的项目,旨在将Spring框架与OSGi模块化平台相结合,为Java开发者提供了一套全面的工具和API,以支持在OSGi环境中开发、部署和管理Spring应用程序。...
Equinox是Eclipse项目使用的OSGi框架,它是Eclipse插件体系的基础,确保了Eclipse平台的稳定性和可扩展性。由于IBM的强力支持,Equinox不仅具有良好的文档和社区资源,也成为开发者进行OSGi应用开发的首选框架。 ...
本书通过一系列章节详细介绍了OSGi框架的核心理念和技术细节,并提供了多个实际案例来帮助读者更好地理解和应用这些技术。 **1.1 什么是模块?** 在软件工程领域,模块化是指将大型软件系统分解为独立且可重用的...
采用OSGi框架后,可以通过以下步骤改进: 1. **模块化设计**:将每一个命令功能封装成独立的Bundle。 2. **动态加载**:根据用户的输入动态加载相应的Bundle,而不是静态编译时确定。 3. **服务注册与查找**:通过...
在Eclipse集成开发环境中,OSGI扮演着核心角色,从Eclipse 3.0开始,它便采用了OSGI作为其插件体系结构的基础。 OSGI的核心概念是 Bundle,每个Bundle都相当于一个独立的Java应用程序,拥有自己的类加载器,可以在...
- 涵盖了如何使用OSGi框架开发基础的Web应用程序。 - 可能包含了创建OSGi模块和组件、配置Web容器以及部署的步骤。 3. 持久化的价值 - 探讨在OSGi环境中如何有效地进行数据持久化。 - 分析企业应用中数据管理的...
9. **案例研究**:分析实际项目中采用OSGI的案例,展示其在大型分布式系统、企业级应用和物联网等领域的应用。 通过阅读这本书,你可以获得对OSGI的全面认识,从理论到实践,从而在你的项目中更好地利用OSGI的优势...
通过采用OSGi框架结合Apache CXF及其cxf-dosgi扩展,可以有效地开发和部署支持多版本的Web服务。这种方法不仅提高了服务的灵活性和可维护性,还简化了服务的生命周期管理。对于那些需要同时支持多个服务版本的场景来...
**基于OSGi的Web应用开发**是现代软件开发中的一种技术实践,它允许开发者构建模块化、可扩展和可维护的Web应用。OSGi(Open Service Gateway Initiative)是一种开放的标准,提供了一种服务导向的、模块化的Java...
2. 依赖管理:通过Import-Package声明所需的其他模块,OSGI框架会自动处理依赖关系,解决类加载问题。 3. 动态部署:在运行时可以添加、移除或更新Bundle,无需重启整个系统,提高软件的可维护性。 三、OSGI进阶 1....
OSGi(Open Services Gateway Initiative)框架是一个用于Java平台的动态...随着更多企业采用OSGi,这一技术的影响力和重要性将持续增长,对于理解和掌握OSGi,将对提升开发者在现代软件开发中的竞争力具有重要意义。
描述中提到"OSGI的源码实现,采用JAVA书写,其框架很有借鉴意义",这意味着这个压缩包包含的是Apache Felix Oscar项目的源代码,对于学习和理解OSGI框架的运作机制,以及如何在Java中实现模块化系统具有很高的价值。...