`
sunxboy
  • 浏览: 2868919 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

采用OSGi框架开发项目的十个问题

阅读更多

近期,InfoQ针对Java模块化(基于OSGi)这一热点技术问题连续做了四篇深度报道:

其中对OSGi的基本概念和现状以及模块化技术细节做了详细描述:

OSGi 是Java领域里无可辩驳的最成熟的模块系统,它与Java几乎是如影相随,最早出现于JSR 8 ,但是最新规范是JSR 291 。 OSGi在JAR的MANIFEST.MF文件中定义了额外的元数据,用来指明每个包所要求的依赖。这就让模块能够(在运行时)检查其依赖是否满足要求, 另外,可以让每个模块有自己的私有 classpath(因为每个模块都有一个ClassLoader)。这可以让dependency hell尽早被发现,但是不能完全避免。和JDBC一样,OSGi也是规范(目前是4.2版 ),有多个开源(及商业)实现。因为模块不需要依赖任何OSGi的特定代码,许多开源类库现在都将其元信息嵌入到manifest中,以便OSGi运行时使用。有些程序包没有这么做,也可以用bnd 这样的工具,它可以处理一个已有的JAR文件并为其产生合适的默认元信息。自2004年Eclipse 3.0 从专有plugin系统切换到OSGi 之后,许多其他专有内核系统(JBoss、WebSphere、Weblogic)也都随之将其运行时转向基于OSGi内核。
.......

不过,Java社区领袖Adam Bien最近在其博客 中认为,从技术角度讲,OSGi的确是实现模块化的可行办法,但OSGi的主要挑战不是技术,而是模块和bundle的管理。他建议在决定采用OSGi框架开发项目之前,考虑以下问题:

  1. 针对模块(bundle),采取何种版本控制方案?大、小版本如何定义?
  2. 采用何种软件配置管理策略?允许开放和维护模块所有版本的分支吗?预计要维护多少个分支?通过SVN吗?
  3. 在生产环境中,同时存在多少不同版本的模块?
  4. 针对模块和模块组合,如何进行测试?每一个版本都会显著增加复杂度。
  5. 采用何种发布管理策略?提供客户专属的模块组合吗?缺陷修补/补丁策略是什么?
  6. 需要在系统运行中替换模块吗?如何处理正在进行的事务?
  7. 对于Eclipse RCP应用,是否应该开放插件给最终用户?
  8. 采用何种软件分发系统?很多公司已经有了一套软件分发系统。应用和JVM经常打包到一个二进制文件中整体安装。增量更新几乎是不可能的。
  9. 模块之间如何交互?只通过Java接口吗?如果是,那么JPA实体的直接关联如何处理?
  10. 是否采用Maven描述模块和OSGi?Maven模块版本会在OSGi bundle版本中得到体现吗?

 

分享到:
评论

相关推荐

    基于osgi整合ssm框架注解开发

    SSM(Spring、SpringMVC、MyBatis)框架是Java Web开发中常见的技术栈,而OSGi(Open Service Gateway Initiative)则是一种模块化系统,主要用于解决Java应用程序的动态性、可扩展性和版本管理问题。将SSM框架与...

    基于Eclipse开发OSGI的简单实例

    3. **系统稳定性**:采用微核机制,即使Bundle出现问题,也不会影响到整个系统的稳定运行,确保系统不会因单个组件崩溃而整体崩溃。 4. **模块化开发**:OSGI提供了一套规范的模块化开发和部署方式,有助于软件公司...

    osgi 插件开发

    1. **模块化提升**:通过采用OSGi框架,企业可以将复杂的业务逻辑拆分成可管理的小模块,每个模块都有明确的责任边界,易于维护和扩展。 2. **生态系统的支持**:目前,几乎所有主流的企业应用服务器都支持OSGi,...

    基于OSGi和Spring开发Web应用

    Spring-DM,即Spring Dynamic Modules,是Spring官方在2008年推出的项目,旨在将Spring框架与OSGi模块化平台相结合,为Java开发者提供了一套全面的工具和API,以支持在OSGi环境中开发、部署和管理Spring应用程序。...

    使用Equinox开发OSGi应用程序

    Equinox是Eclipse项目使用的OSGi框架,它是Eclipse插件体系的基础,确保了Eclipse平台的稳定性和可扩展性。由于IBM的强力支持,Equinox不仅具有良好的文档和社区资源,也成为开发者进行OSGi应用开发的首选框架。 ...

    OSGi in Practice 完整版

    本书通过一系列章节详细介绍了OSGi框架的核心理念和技术细节,并提供了多个实际案例来帮助读者更好地理解和应用这些技术。 **1.1 什么是模块?** 在软件工程领域,模块化是指将大型软件系统分解为独立且可重用的...

    OSGi 模块管理 动态管理部

    采用OSGi框架后,可以通过以下步骤改进: 1. **模块化设计**:将每一个命令功能封装成独立的Bundle。 2. **动态加载**:根据用户的输入动态加载相应的Bundle,而不是静态编译时确定。 3. **服务注册与查找**:通过...

    OSGI.rar_OSGI eclipse_osgi

    在Eclipse集成开发环境中,OSGI扮演着核心角色,从Eclipse 3.0开始,它便采用了OSGI作为其插件体系结构的基础。 OSGI的核心概念是 Bundle,每个Bundle都相当于一个独立的Java应用程序,拥有自己的类加载器,可以在...

    Enterprise OSGi in Action

    - 涵盖了如何使用OSGi框架开发基础的Web应用程序。 - 可能包含了创建OSGi模块和组件、配置Web容器以及部署的步骤。 3. 持久化的价值 - 探讨在OSGi环境中如何有效地进行数据持久化。 - 分析企业应用中数据管理的...

    OSGI学习文档

    9. **案例研究**:分析实际项目中采用OSGI的案例,展示其在大型分布式系统、企业级应用和物联网等领域的应用。 通过阅读这本书,你可以获得对OSGI的全面认识,从理论到实践,从而在你的项目中更好地利用OSGI的优势...

    以 OSGi 包的形式开发和部署 Web 服务

    通过采用OSGi框架结合Apache CXF及其cxf-dosgi扩展,可以有效地开发和部署支持多版本的Web服务。这种方法不仅提高了服务的灵活性和可维护性,还简化了服务的生命周期管理。对于那些需要同时支持多个服务版本的场景来...

    基于OSGi的Web应用开发系列(全).pdf

    **基于OSGi的Web应用开发**是现代软件开发中的一种技术实践,它允许开发者构建模块化、可扩展和可维护的Web应用。OSGi(Open Service Gateway Initiative)是一种开放的标准,提供了一种服务导向的、模块化的Java...

    OSGI实战和OSGI进阶打包提供

    2. 依赖管理:通过Import-Package声明所需的其他模块,OSGI框架会自动处理依赖关系,解决类加载问题。 3. 动态部署:在运行时可以添加、移除或更新Bundle,无需重启整个系统,提高软件的可维护性。 三、OSGI进阶 1....

    Introduce.OSGi.ppt

    OSGi(Open Services Gateway Initiative)框架是一个用于Java平台的动态...随着更多企业采用OSGi,这一技术的影响力和重要性将持续增长,对于理解和掌握OSGi,将对提升开发者在现代软件开发中的竞争力具有重要意义。

    Oscar.rar_java OSGI_oscar_osgi_osgi oscar

    描述中提到"OSGI的源码实现,采用JAVA书写,其框架很有借鉴意义",这意味着这个压缩包包含的是Apache Felix Oscar项目的源代码,对于学习和理解OSGI框架的运作机制,以及如何在Java中实现模块化系统具有很高的价值。...

Global site tag (gtag.js) - Google Analytics