《Java应用架构设计:模块化模式与 OSGi》译者张卫滨老师访谈

 由  Dongdong 发布

OSGi中文社区近期对《Java应用架构设计:模块化模式与 OSGi》一书的译者,资深OSGi专家张卫滨老师进行了访谈。

张老师也是著名的OSGi达人,对OSGi有着深刻的理解,他翻译的《Java应用架构设计:模块化模式与 OSGi》及《Spring Security3》广获读者好评。

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

  • 是什么促使您决定翻译《Java应用架构》这本书?
能够翻译这本书真的是机缘巧合,因为我在公司正好使用OSGi技术做一个产品,而华章出版社的编辑联系到InfoQ翻译主编侯伯薇,有一部分书在招译者,这本书就在其中,伯薇知道我正在使用OSGi,因此就向我推荐了这本书。我去亚马逊上看了一下读者的评论和样章,觉得这是一本很不错的书,书中所介绍的设计和架构理念在以前的书中很少涉及到的,但这些理念都是很重要的,我觉得这样一本好书应该被更多的人看到,我也希望借助翻译这本书能够学到更多不一样的架构理念,所以就参与了这本书的翻译工作。
  • 您觉得《Java应用架构》这本书最大的价值在哪里?
个人感觉,这本书最大的价值就在于揭示了设计大型软件的通用规则。大型软件系统的维护和演化一直以来都是很难解决的问题,模块化的理念可以对应用程序进行拆分,从而降低复杂性,提高可重用性,但是如何将盘枝错节的应用进行合理拆分并不简单,你要考虑到依赖关系、系统演化、需求变更等等因素,本书所介绍的模块化模式能够帮助我们做好这件事,我在翻译这本书的过程中还是很有收获的,希望读者也能从作者的理念中得到一些启发。
  • 模块化和SOA之间的关系您怎么看?
SOA应该是一个更为粗粒度的概念,SOA的服务毕竟也是由应用程序发布出来的,即便系统间实现了通过服务进行交互,但并不能保证系统本身是设计良好的。模块化的理念可以在更为底层提升系统的质量,两者所解决的问题域还是有所区别的,当然目标是一致的,那就是质量更好的软件系统。
  • 模块化模式和设计模式之间有什么关系和不同?
作者在书中也提到了两者的区别,设计模式关注类级别的设计,但是模块化模式的粒度更粗一些,关注部署单元的设计和拆分,也就是JAR文件。模块化模式关注物理设计,即JAR文件中该包含什么不该包含什么,设计模式更多的还是关注逻辑设计,良好的逻辑设计有助于实现模块化,而模块化也能够更好地发挥设计模式的作用。
  • 您如何看待Java模块化技术的未来? OSGi和Jigsaw之间的关系将来会是一种什么状态?
Jigsaw已经一再跳票了,现在的消息是要等到2015年的Java 9,等到真正普及使用,会需要更多的时间,可见在Java中重新实现模块化并不是一件容易的事情,除了技术问题以外还有各大厂商的利益纠葛。模块化的重要性大家都能达成共识,但是在Java中这条路走得却特别坎坷,我认为OSGi技术还会持续发挥影响力,即便有了Jigsaw,也不可能无视OSGi已有的用户群,否则在OpenJDK中也不会有penrose这样的项目了。
  • 使用OSGi应用于Web开发的前景如何?您如何看待Virgo项目的中止?
OSGi与Web的集成始终是一个短板,即便在很早的时候就有了HTTP Service,但是对于开发人员来说,还是较为复杂而且很难与商用的应用服务器进行集成,bridge模式虽然可以兼容服务器,但是在与流行的开发框架集成时还是有不少的坑。Virgo项目目前遇到了一些困难,我觉得一个原因就是所支持的服务器较为有限,在很多商用企业级应用中,还是不会使用Virgo所支持的Tomcat和Jetty。OSGi对Web的支持还有挺长的路要走,希望OSGi企业级规范能够加快这一进程,当然一些服务器也在推进企业级规范的实现,感兴趣的读者可以关注汤泳在InfoQ上发表的GlassFish与OSGi集成的系列文章。
  • OSGi的动态化特性在系统运维方面有没有什么应用?
OSGi的动态化使得我们根据需要自动解析依赖并加载所需的组件,这也是为何在OSGi规范中越来越强调仓库(Repository)的作用,长期来看,相信这会给运维产生方式产生一定的影响。目前,paremus公司已经基于OSGi的理念和部署方式开发私有云产品,这是一种很有意思的模式。
  • 可否跟大家说一说OSGi环境下测试相关的最佳实践?
OSGi的测试应该说比传统应用稍微困难一些,因为可能会对运行环境产生一定的依赖,不过借助Pax Exam以及Spring DM所提供的功能可以简化这一过程(具体可以参考《OSGi实战》和《深入理解OSGi》中的介绍)。在我们的实践中,还结合使用了Spring的生命周期管理。
  • OSGi适合那些类型应用的开发?
目前OSGi来看更适合框架类应用的开发,对于企业级应用来说,对既有的开发模式会有一定的冲击,因为引入OSGi与决定采用Struts2还是Spring MVC不同,采用OSGi对业务设计和开发人员都会有影响,但长期来看这种付出是值得的,尤其是注重资产沉淀和复用的行业来说更是如此。
  • 很多初学者都觉得OSGi学习起来门槛略高,能否说说您当年接触和学习OSGi的过程?同时给初学者一些建议
OSGi的确有一定的学习门槛,因为其开发模式和理念与传统方式有所不同,工具支持方面也需要大家自己去探索。我最初接触OSGi是从Eclipse插件的开发开始的,刚接触的时候只是想完成相关的插件功能,但后来发现Eclipse的实现原理是很有意思的,研究后才知道这都是OSGi的功劳。给大家的建议就是,首先可以去探索一下OSGi背后的理念,独特的类加载机制,然后去积极了解社区的动态和进展,尝试使用支持OSGi的产品如Karaf,也可以让我们对OSGi有更具体的认识。
  • 您对OSGi中文社区有什么意见和建议?
OSGi在国内的用户应该也不算少了,只是目前交流比较少,不够活跃,希望这个平台能够将大家聚集起来,如果可能的话,得到OSGi联盟官方的认可,组织一些技术交流活动。

以上是我个人的见解,如有不周之处,希望能与大家沟通交流。大家在阅读这本书的过程中,如果有什么疑问或发现错误,请和我联系:levinzhang1981@gmail.com或新浪微博@张卫滨1895 希望这本书对您有用,谢谢!


王传银 2014-02-18 14:53

不错,为初学者指明了方向,增加了信心。多谢老师

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