OSGi近况总结:用户群蓬勃发展
作者:八神 出处:51CTOJava 2009年10月23日 09:30
今年九月下旬发布了OSGi 4.2规范,至今已经一个月有余。InfoQ的Alex Blewitt总结了这一个多月来的OSGi进展情况,应该说是一片大好,十分热闹。下面请看详情:
今年初发布的Equinox 3.5实现了OSGi规范草案,而最近发布的Apache
Felix 2.0也提供了对OSGi 4.2的支持。除此之外,前几天发布的Knopflerfish 3.0 beta除了框架加载器还在开发当中外已经实现了4.2核心。
两周前发布的Apache Karaf
1.0构建在核心框架之上,其目的在于形成一个独立于引擎的OSGi框架,同时带有几个事先打好包的bundle,比如Blueprint、
provisioning、日志、远程访问(通过SSH)等。对于那些OSGi新手来说,这是一个很好的起步点,因为它把所有东西都已经打好包了,就像是
构建在标准Linux内核之上的Linux分发一样,可以提供额外的特性和管理功能。
近日Spring
Source(已
经被VMware收购)发布了dm Server
2.0M5,该版本也为Blueprint服务提供了OSGi参考实现并使用了嵌套框架(nested framework)特性。该特性在OSGi
4.2意见征集时被提出来,但却被搁置到未来版本中,OSGi框架可以利用该特性为特定的应用创建内部框架(在dm
Server术语中叫做region)。这样我们就可以在系统中安装多个应用并将这些应用与其他框架隔离开来。从中获得的经验一定会为下一版本的OSGi
铺平道理.
近日Jetty 7.0发布了,它既能作为独立的Java Web引擎,也可以嵌入到其他应用中(包括OSGi和传统的Java)。Oracle
也宣布了WebLogic路线图,其中就包含了正在进行当中的基于OSGi的microService架构。最后,Sun开发的GlassFish服务器也发布了V3 Preview,该版本也基于OSGi,大家可以下载使用。
OSGi企业专家组正致力于定义一套OSGi服务(比如解析JNDI和Web
Servlet),同时也已经定义好了OSGi远程服务,这部分内容已经成为4.2规范的组成部分了。专家组希望在明年初发布一个版本,但目前的情况是每
个主流的应用服务器的运行时都基于OSGi。
OSGi系统的运行是件轻而易举的事情,但构建却不是那么回事了。虽然像Ant之类的工具可以处理平的类路径、公共包可视化之类的事情,但OSGi
运行时提供了一个更加模块化的类路径(既包括运行时,也包括编译期)。现有的构建方案如Eclipse
PDE对于特定的用例(如构建Eclipse插件)没什么问题,但却无法做到独立于IDE或是客户化的构建。目前其他的构建引擎(如基于Any/Ivy的
Apache
Sigil,其目标是不仅支持Eclipse,还要支持NetBeans下的OSGi开发)也取得了长足的进展。尽管还处在孵化期,但最近Apache
Sigil已经可以实现自我构建,今年底就将发布版本了。
现在Pax Construct已经成为基于Maven构建的不可或缺的手段,它联合使用了bnd工具,而后者则被Felix maven
bnd插件所用。甚至还有人想从Maven仓库中构建Eclipse,这样我们就可以创建基于Maven的OSGi
bundle并使用基于Eclipse的bundle了。然而最初这只适合于一小撮项目,他们可以展示这类系统的好处和必要性。
与此同时,Eclipse正致力于与另一个项目进行协同构建,这次叫做B3。这么做并不会改变Eclipse项目的构建方式,相反,其目标在于将当前的PDE构建与其他构建/部署系统如Buckminster和基于Hudson的构建系统联合起来。
现在NetBeans仍然徘徊在OSGi之外,这是因为netisgo(为NetBeans提供了OSGi支持)仍处在开发当中。另一方面,IntelliJ 9.0预览版于近日发布了,社区版与旗舰版(在社区版的基础上提供了额外的插件)都提供了OSGi支持。
Eclipse 3.6 M2已经发布几周了,它是Eclipse平台下一版本的里程碑版本。其Equinox支持包含了OSGi
EventAdmin,这在目前正在开发当中的OSGi平台的异步支持中得到了广泛的应用(以前Equinox所提供的EventAdmin是个单独下载
的bundle,这意味着没几个人会使用到它;由于合并到了RCP中,默认情况下就可以使用它了,因此其使用的范围也更加广泛了)。Equinox
3.6 M2还为bundle提供了加载期编织的功能,这是通过在bundle加载期利用AspectJ注入代码实现的。除此之外,Equinox控制台
也变成多会话的了,这样多个用户就可以同时连到远程实例上了。
最近在工具领域中Eclipse E4 1.0M1异军突起。Eclipse E4是Eclipse平台在JavaScript
运行时(如Web浏览器
)上的一个分支,其关注点在于异步。Eclipse 3.x中的很多行为都是同步的,这意味着用户的行为会阻塞界面的响应。为了支持远程客户端
,Eclipse
修改了行为以支持异步访问,其计划是在未来将这些内容融合进Eclipse
3.x当中。其所提供的一个特性就是在纯JavaScript中创建OSGi bundle,大家可以访问E4/JavaScript
wiki来了解它是如何借助于JSFramework和JSConstants对象进行工作的。我们期待着E4 1.0M1的发布。
未来6个月要召开不少大会,OSGi无疑将成为一个明星。首先就是下周的SpringOne America,届时将公布Burton
Group 2nd Annual OSGi的调查结果。接下来就是本月底的EclipseCon Summit
Europe,然后就是下个月的QCon SF。明年1月份将召开OSGi DevCon London 2010,紧跟其后的是3月底的QCon
London以及将于加利福尼亚举行的EclipseCon 2010。
全球的OSGi用户群在蓬勃发展着,最近由Tara Simpson of Instil Software在Paremus举办的OSGi
in Anger
对电信系统中应用OSGi以确保远程管理并提供服务的经验进行了探讨。后续的讨论在酒吧进行(由Luminis赞助),收到了很好的效果。由
SkillsMatter记录的演示资料与视频放在了会议主页上。很多项目从貌似的模块系统迁移到了OSGi上,这有助于发现遗漏的包;Jetty在迁移
到Eclipse上也遇到了同样的问题。一旦这些系统迁移到OSGi上人们就会觉得如果没有OSGi的话,想要构建这些复杂系统将是一件多么难的事情啊。
简单模块系统怎么样了呢?它的目标是为OSGi和Jigsaw创建一个共同点。虽然一开始是很有前途的,但就运行时空间到底应该成为一个平的类路径
(就像现在的Java)还是嵌套类路径(就像OSGi和编译路径),人们众说纷纭。未来的专家组也许可以解决这个问题,但现在似乎还遥遥无期。Neil
Bartlett将在伦敦的大会上谈到这个问题。
【编辑推荐】
2009甲骨文全球大会:OSGi将获得更多支持 你好,OSGi!OSGi入门必读系列 OSGi 4.2规范已发布 新特性介绍 OSGi是什么:Java语言的动态模块系统 Spring Tool Suite开始支持OSGi
分享到:
相关推荐
### OSGi in Action: 创建模块化的Java应用 #### 一、OSGi揭示:模块化的重要性与挑战 在《OSGi in Action》这本书的第一章“OSGi Revealed”中,作者深入探讨了Java平台虽然取得了巨大的成功,但在构建模块化系统...
随着软件架构的不断发展,模块化和微服务化的趋势日益明显。在Java领域,OSGi(Open Service Gateway Initiative)作为一套成熟的技术标准,为实现模块化部署提供了强有力的支持。而Spring框架作为Java开发中不可或...
OSGi(Open Services Gateway Initiative)是一个基于Java语言的服务平台,提供了一种动态化、模块化的应用程序架构。在OSGi架构中,整个生命周期管理是十分重要的组成部分,它保证了应用能够动态地进行安装、启动、...
总结来说,OSGi服务层的引入极大地提升了Java应用的模块化和动态性。通过服务化组件之间的交互,OSGi不仅让组件能够更加灵活地应对变化,还简化了依赖关系的管理,提高了开发和维护的效率。对于需要高度模块化、动态...
在OSGi入门篇:模块层这篇文章中,作者静默虚空深入探讨了OSGi框架中模块层的基础知识以及设计模块层时OSGi联盟所做的考虑。OSGi模块层是框架中最基础的部分,它实现了Java的模块化特性,但又与Java现有的模块化特性...
总结,OSGi是一种强大的模块化系统,能够帮助开发者构建更加灵活、可扩展和易于维护的Java应用程序。通过理解其基本概念和实践,开发者可以利用OSGi的优势来优化项目结构,提高开发效率。在与Spring和Hibernate等...
标题中的“tomcat嵌入OSGI容器”是指在Apache Tomcat服务器中集成OSGI(Open Service Gateway Initiative)框架,使得Tomcat能够支持模块化的应用程序部署和管理。OSGI是一种Java平台上的服务导向架构,它允许动态地...
2. 集成了管理工具:允许用户通过Web界面或命令行工具管理OSGi服务和应用。 3. 提供了丰富的库支持:包含了Spring框架、Hibernate、Tomcat等常见库,方便开发和部署。 四、spring-osgi-1.2.1-with-dependencies.zip...
总结来说,OSGi Equinox通过提供一套标准化的模块化、服务化组件机制,为复杂系统的动态化、可维护化提供了强大的支持。掌握其原理和应用,遵循最佳实践,可以帮助开发者构建更加稳定和灵活的Java应用程序。然而,...
**标题解析:** "blueprint-osgi-bundle:OSGi 示例" 指的是一个基于OSGi(Open Service Gateway Initiative)框架的示例项目,它使用了Blueprint服务容器来管理服务组件。Blueprint是Apache Felix项目中的一个子项目...
凡人的OSGi 这是我在 NA 2011,EU 2012和EU 2014上的“ OSGi的凡人”演示文稿的代码。 这是使用OSGi Declarative Services从头开始构建的最小的独立RESTful服务器,旨在证明OSGi不仅适用于超人大师。 该示例演示了...
简单的OSGi启动器 我讨厌复杂的发射器。 我只想运行OSGi项目,而无需进行配置和部署。 该项目提供了一个maven插件,该插件允许从OSGi捆绑包maven项目创建可执行的jar文件。 只需将所需的包指定为项目的运行时依赖...
- 最佳实践:分享开发者在OSGi开发过程中总结的经验和技巧,帮助避免常见陷阱。 3. **OSGI实战.pdf**: 这本书可能专注于通过实际项目展示OSGi的应用: - 开发工具:介绍支持OSGi的IDE(如Eclipse)和构建工具...
OSGI(Open Services Gateway Initiative)是一种开放标准,用于创建模块化和动态的Java应用程序。它为Java开发人员提供了一个框架,使他们能够构建可热插拔的组件,从而实现更灵活、可扩展和可维护的软件系统。在本...
cayenne-osgi-示例 一个简单的 OSGi 包,展示了如何在 OSGi 下使用 。 先决条件 Cayenne 4.0.M2 或更新。 一个 OSGi 容器。 (此示例的所有测试均使用 4.2.1 完成) 配置 OSGi 容器 安装一堆包。 您可以从 Maven ...
### SpringDM与OSGI概述 #### OSGI概念解析 OSGI(Open Service Gateway Initiative),直译为“开放的服务网关初始化”,它是一系列针对Java动态化模块化系统的规范。OSGI不仅指代一个官方联盟,还代表着由该联盟...
OSGi最佳实践: 1. OSGi技术基础: OSGi(Open Services Gateway initiative)是一个基于Java语言的服务平台,它允许运行时动态地安装、更新和卸载软件模块。这些模块被称为bundle。OSGi提供了一个在单一Java虚拟机...