资深OSGi技术专家汤泳老师访谈

 由  Dongdong 发布

OSGi中文社区近期对资深OSGi技术专家汤泳老师进行了访谈。

汤泳,高级工程师,硕士,2004年毕业于南京理工大学计算机科学与技术系。现就职于南京富士通南大软件技术有限公司。南京Java User Group的负责人之一。 2013年2月成为GlassFish OSGi以及OSGi-JavaEE模块的Committer, 同时, 他也是OSGi Alliance的Supporter和OSGi China Forum的核心成员。除了长期贡献GlassFish, 他也积极活跃在多个Apache开源社区,如Apache JClouds, Apache Karaf以及Apache Aries。

他的E-Mail: tangyong@cn.fujitsu.com 或者tangyong.gf@gmail.com

LinkedIn : http://www.linkedin.com/pub/tang-yong/21/62b/809

Blog: http://osgizone.typepad.com/

新浪WeiBo: @widefish

我们将访谈内容整理出来,以飨读者,相信对无论对OSGi的初学者还是实践者都会有很大的启发。

OSGi最主要的特点和优势有哪些?

Tang: 从我使用OSGi的实践看,OSGi最主要的特点是可维护性和动态性,这里的可维护性一方面体现在模块与模块之间的约束的明晰,便于后期的维护和前期的逆向工程,动态性主要体现在面向服务的松耦合,简单的说就是依赖接口而不是实现,对于一些任务关键性的大型应用(如金融,电力等),这种动态性带来了最大的优势:不停止JVM进行应用的更新或者特性的追加。

OSGi在云计算上有哪些进展和应用?

早在几年前,OSGi> 发起了一个RFC 133的需求草案,致力于将OSGi应用到云中。据我所知,最著名的这类产品有:

1) Paremus Service Fabric 这是一个成熟和先进的产品,致力于在死有云中构建模块化的合成应用程序,其核心是使用OSGi Bundle领地(repository)的概念并且进行延伸。

2) Amdatu 这是一个由荷兰一家公司的几个Java专家发起的开源产品,基于Apache ACE,同样是使用了OSGi Bundle领地(repository)的概念。记得去年有一本书叫“Building Modular Cloud Apps with OSGi”, 就是介绍这个产品的,大家不妨可以看看。

如何理解OSGi与其他JavaEE 技术的关系?

我始终认为OSGi和JavaEE是互为补充的关系,如果JavaEE能够方便地利用OSGi动态性和模块化的特征,那么你的企业级应用程序应该更加具有弹性和张力,因此,企业级OSGi规范正式基于这一点推出了 一系列企业级OSGi规范,比较有代表性的是OSGi与CDI集成以及OSGi与EJB的集成。

Web层模块化如今有什么好的解决方案?使用OSGi应用于Web开发的前景如何?

从企业级OSGi规范的角度看,WAB是目前的解决方案,尽管一些人认为OSGi好看不中用,但是,我依然看好它的未来,Peter Kriens给我们演示了“ Building OSGi based HTML5 Web Application”, 推荐大家到https://github.com/osgi/osgi.enroute.blog,这是一个Tutorial来演示如何使用OSGi来构建HTML5的应用程序。这也是OSGi联盟未来重点投入的领域,即制作一系列Tutorial来演示如何更 好地利用OSGi来开发企业级应用程序。

在OSGi的环境下的集成测试有什么好的经验吗?

据我所的使用经验,推荐大家使用Pax Exam作为OSGi的环境下的测试工具, GlassFish OSGi子工程也正是使用了这个开源框架,功能很强大。

能否给大家介绍一些采用OSGi技术的大型案例?

据我所知,有一些著名的案例,绝大部分集中在框架和平台领域:

1) 开发工具
Eclipse

2) Java EE应用服务器
- Oracle Weblogic
- IBM Websphere

3) 运行时平台
- Paremus Service Fabric
- Amdatu
- Apache Aries
- Apache Karaf
- Service Mix
- Apache Ace

4) 应用程序
- dcm4chee ,这是一个开源的PACS相关的应用程序
- openhab,这是一个著名的开源应用程序,致力于家庭自动化。
- Kura(http://www.eclipse.org/proposals/technology.kura/),大家可以以后关注一下这个开源M2M的框架。

Gemini Blueprint v.s. Apache Aries,Equinox v.s. Apache Felix,以及包括已经存在的各种容器——Eclipse Virgo, Apache Karaf,以及Glassfish等,在根据应用场景选择合适的容器时,有什么好的经验?

这个问题比较大,需要基于大量的实践经验,我的意见是首先评估一下自己是否真的需要OSGi,如果需要的话,评估需求,如果你的需求不涉及企业级特性,那么没有必要使用Apache Aries,包括GlassFish,仅仅使用Apache Karaf就够了,因为Karaf已经带给你足够想要的,如果你有需求想自己写框架,那么你可能会选择使用Apache Felix和Equinox。至于Apache Aries还是Gemini Blueprint还是GlassFish,如果你决定使用Java EE和OSGi集成,我建议使用GlassFish,因为GlassFish在这方面已经做得很好,尽管有一些特性需要完善。Eclipse Virgo我不太熟悉,但是似乎目前社区并不是很活跃。

其它OSGi容器下运行的应用,是否可以无缝迁移到Glassfish下?

这个需要具体问题具体对待了。例如,这个应用是否使用了容器特有的功能,而GlassFish当前并没有这个功能等。

Maven可以描述模块间关系,OSGi也体现了模块间关系以及跟细粒度的包的关系,用Maven来构建OSGi应用时,依赖关系在Maven和OSGi元数据中重复体现了,是否可能出现或者已经有一种专门针对OSGi的构建工具?

严重推荐bndtools,这也是OSGi联盟极力推荐的工具,这个工具对于OSGi未来能否大众化起到 了关键的作用。

我们社区成员曾与阿里巴巴Java开发人员交流过OSGi企业级开发方面的问题,他们也曾在某些项目尝试使用OSGi,但是却因此在项目开发和后期维护上遇到很多意想不到的问题,导致他们在项目过程中付出的代价大于他们所预期能得到的益处(OSGi所提供的一些优良特性),最终选择放弃了OSGi。就我们自己的经验来看,OSGi在开发框架的发展也很有限,导致开发与维护上相比非OSGi的方式更加困难,这让我们对OSGi的未来有一些隐忧。你觉得大规模应用OSGi需要考虑哪些因素?

因为我并不清楚阿里的项目情况,所以不好做进一步讨论。如果大家看过Kirk的书(Java应用架构设计,张卫滨译)的话,应该能够理解相比于非模块化,模块化最终应该导致维护上的成本很低,如果相反的话,只能说明你的模块化设计有问题。 因此,前期的设计在模块化程序中是至关重要的。当然,如何更好地使用OSGi以及OSGi最好的惯例依然是OSGi发展的重要课题。前面已经说了, OSGi联盟正在致力于解决这样的课题。另外,我不会去担心OSGi的未来,OSGi正在沿着一条正确的道路发展。

在有大量bundle的应用中(比如几百个),bundle的版本如何管理?是统一演化还是单独演化好?

最好使用语义化版本管理,精确到每个包(Package)的版本。单独演化是完全可能的,而且很多大型工程的子模块都是单独演化的。

大型的OSGi应用,在部署和运维上有什么建议,比如部署某一次发布中大量的bundle是否有什么好的自动化工具?

我所知道的,发布大量bundle的一个好的案例是在部署时能够利用Bundle仓库,自动寻找依赖的bundle集合,然后下载安装或者更新,至于好的自动化工具,我还真没怎么留意。

开发人员基于bundle进行协作还是基于代码协作比较好?这方面有什么好的经验?

我的答案是基于bundle协作,尤其是基于服务接口API,这是标准做法。

您如何看待OSGi的未来?

首先,Java模块化与OSGi不冲突,其次,OSGi继续在向前走,未来,更多好的规范将被推出,更好的tutorial将被演示,更好的工具将被发布,因此,我期待OSGi的大众化!

您是什么时候开始接触OSGi的,能否跟大家简单介绍一下你学习和应用OSGi的历史和经验?

我是2009年接触OSGi的,学习OSGi主要是两个办法:

1) 通过英文资料,例如:OSGi in Action,没有比这本书写得更好的OSGi书籍了,入门和提高的最佳途径

2) 参与开源社区贡献,除了长期贡献GlassFish OSGi子工程,也参与贡献Apache Felix等优秀OSGi开源工程。

3) 长期更新自己的知识库,例如通过阅读规范,国外专家的blog,浏览OSGi最新的动态等

最后,建议大家有条件的到北京参加Tim Ward的OSGi深度培训,里面的主题非常地好,Tim本人也是这方面的绝对权威和顶级专家。http://www.qconbeijing.com/node/462


周迪凡 2017-09-13 08:53

厉害了。曾就职于南京富士通南大软件技术有限公司江阴分公司的尘世迷途小羔羊路过。

顶(0) 踩(0) 回复

wmz 2015-06-23 19:38

OSGi的企业级快速开发平台,首推:http://osgi.jxtech.net 有在线演示、免费插件下载。<br><br>此平台,将前端、后端全部打包到一个Bundle中,相当好用。

顶(11) 踩(0) 回复
查看评论