《深入理解<mark>OSGi</mark>》作者周志明老师访谈

 由  罗俊杰 发布

OSGi中文社区近期对《深入理解OSGi》 一书的作者,资深Java技术专家周志明老师IcyFenix 进行了访谈。

周老师也是公认的Java虚拟机方面的领袖人物之一,著有经典著作《深入理解Java虚拟机:JVM高级特性与最佳实践》,广获读者好评。

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

  • 您是从什么时候开始打算写《深入理解OSGi》这本书的? 写书的过程中遇到的最大困难是什么?

    2011年写完《深入理解Java虚拟机》第一版,卖的还不错,出版社编辑和我讨论是否可以再写一本《深入理解》系列的书,正好自己在OSGi方面有一点经验,就选择了这个主题,所以有了这本书。写作对我来说倒不算多么困难的事情,即使不写书,也会写一些其他的文字。不过OSGi这个主题比较宽泛,这倒是为我带来一些困难。OSGi子规范有几十个,OSGi实现也有好几个,其他像Virgo、Aries这种和OSGi密切相关的框架也有许多,这样就必须选择和取舍一下,一本书去讲那么大的话题,不可能面面俱到,也不可能让所有的读者满意。
    
  • 我们从google trend中发现OSGI自从09年关注度达到高峰后,便开始逐年下降,这是为什么?因为OSGI技术还处于成长期吗?

    我看了一下,中国范围内Google Trend的OSGi关注度还在增长。OSGi都已经到R5.0了,已经该说比较成熟了,我觉得目前应该向易用方面再突破一下,很多项目都被挡在OSGi的门槛外。
    
  • 能否根据您的经历,跟我们说一两个OSGi用于企业级开发的实际案例,比如采用了OSGi相关的哪些技术,应用规模如何,应用OSGi带来什么困难以及好处等?

    OSGi虽然是从嵌入式蜕变而来的,但目前在企业级开发中是最大的发展点之一,许多企业级开发平台都是基于OSGi架构的,譬如著名的IBM Rational Team Concert/JAZZ平台是完全基于OSGi的,国内的平台厂商普元的EOS最新版本也支持了OSGi,其他还有国家电网的SG-UAP平台等等。我所了解的规模越大的企业级系统,使用OSGi概率相对更高。
    
  • SpringSource在Spring Framework的最新发布版里“摈弃”了OSGi元数据,这对OSGi技术的发展是否会有很大的影响?

    SpringSource在不再使用OSGi元数据,应该是商业考虑多于技术考虑吧,Groovy是他们家的孩子,Groovy上的Gradle总得支持一下吧。不过目前我找Bundle还经常使用SpringSource的EBR,如果日后这个也停掉了是挺可惜的。
    
  • 有了Virgo这样的OSGi Web容器,是否可以认为基本为程序员屏蔽了OSGi Http Service。Virgo对于基于Web的OSGi企业级开发您觉得有什么重要意义?

    这里应该是特指VTS吧,这个说法就好比说有了Hibernate,是否就可以认为基本屏蔽了JDBC?Virgo不仅仅是为了Web开发,它是一个很广泛的对OSGi的封装,我认为最重要的意义就是降低OSGi的门槛,许多OSGi原本让开发人员去解决的问题,都在框架层面处理了。
    
  • OSGi动态化的特性在实战中(特别是企业级应用)是否具备实用性?

    技术上具备实用性,但是对使用人员有要求。OSGi只是为动态化提供了一种可能,或者说提供了一种基础的技术支撑,是否能做到动态化,很重要一点取决于开发人员本身是如何管理数据和服务的状态的,如果开发人员本身编码时就没有考虑数据和服务会动态更新(譬如最常见的获取服务后就一直持有着服务对象),那上了OSGi也照样无法动态。
    
  • 您在书中也提到过OSGi陡峭的学习曲线,这让不少技术人员望而却步,我们感觉花点时间去了解的话,OSGi入门并没有想象中那么难。对于那些有兴趣学习OSGi技术的童鞋,能给些建议吗?

    OSGi写个Helloworld应用是挺简单的,但是要真正用到生产环境中,门槛会比较高,至少比起引入个Spring、Hbiernate什么的要难。建议的话,要看学习OSGi是什么目的了,如果仅仅是为了学习OSGi的思想,那把OSGi Core里面的东西搞清楚,找一个OSGi实现来跟代码,一开始不要纠缠于各种服务规范的实现。如果是工作上就要将OSGi用于生产,那就从问题入手吧,如果是第一次应用,那与OSGi相关的问题不会少的,把遇到的每个问题都跟踪清楚原因,本质上弄明白为何OSGi环境会产生这些问题,这样提高会比较快。
    
  • 您对OSGi的未来如何看? 您是否有计划写下一本OSGi相关的书籍?

    OSGi应该至少还有5至10年的旺盛生命力,直到Jigsaw这类从语言层面上解决模块化和动态化问题的解决方案出现并成熟后,OSGi才会逐渐被同化(看Penrose项目)过去。我暂时没有写下一本OSGi书的打算。
    
  • OSGi在发展之中,目前的使用门槛比较高。您觉得我们在OSGi社区中,主要做哪些方面的工作,更加有利于OSGi技术的传播?给OSGi中文社区一点建议吧:)

    尽可能累积多点人气,目前使用OSGi的人其实也不算少了,但是缺乏沟通交流的方式。很多人都是因为遇到具体的问题得不到解决而放弃OSGi,甚至认为OSGi是有天生缺陷的技术。OSGi中文社区可以考虑加入OSGi联盟,成为正式的OSGi Users' Forum或者OSGi Users' Group。这样能获得官方的支持,譬如组织举行具体活动等。
    

wmz 2015-10-28 08:37

OSGI开源的开发平台,目前做得比较好的是JXADF,官网:http://osgi.jxtech.net

顶(2) 踩(0) 回复

eric.deng 2013-08-26 09:40

遇到一个问题:目前我的调试方法是用eclipse打包成bundle后,放入glassfish中进行调试,超级麻烦。<br>请问有经验的朋友:是否能在eclipse下面启动bundle,从而进行单步调试?

顶(1) 踩(0) 回复

罗俊杰 2013-07-17 13:36

回复snoopy7713: 这样啊,那你可以看看http://osgi.com.cn/article/7289354

顶(0) 踩(0) 回复

snoopy7713 2013-07-17 13:33

不知道有几种扩展方式,想用一个bundle中包括页面和业务逻辑的那种。加我聊天工具中说

顶(0) 踩(0) 回复

罗俊杰 2013-07-17 13:31

回复snoopy7713: 你知道jira有几种扩展方式吗?你想问的是哪一种?

顶(0) 踩(0) 回复

snoopy7713 2013-07-17 10:36

有建设意义的意见,就没有人给我拍砖了。谢谢你说的。看到联系我。

顶(0) 踩(0) 回复

snoopy7713 2013-07-17 10:35

罗兄,你知道jira怎样实现扩展机制的吗?请回复我。

顶(0) 踩(0) 回复

罗俊杰 2013-07-17 10:33

回复snoopy7713: 欢迎吐槽,不过更欢迎有建设意义的意见。jira的插件也支持osgi,不过jira的插件开发根本不存在破解一说,所谓的插件机制更多在应用层面,和osgi这样的底层模块化机制不是一个层面的概念。另外jira的开发文档非常详细,小到增加一个label的插件,大到增加一个bundle,都有step-by-step的教程,开发细节尽在其中。不过jira基于maven的sdk实在太笨重,挺难用的。最后,您实在想看jira的源代码,花点银子买jira是可以得到源码的。

顶(0) 踩(0) 回复

snoopy7713 2013-07-17 10:02

什么乱起八糟的。希望周老师或者其他大牛,专家们能够破解JIRA基于Web的插件式开发的细节。<br>这才是本。

顶(0) 踩(0) 回复

YiFei 2013-07-16 21:26

不错!

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