JFox主开发者杨泳解析3.0特性和设计架构

JFox团队最近宣布正式发布JFox Application Server 3.0版本。新的3.0版本重新构建了IoC 微内核,支持EJB3、JPA,内置 MVC 框架等。InfoQ中文站的编辑肖桦(江南白衣)就此采访了JFox的主开发人员杨泳。

用户可以从设置于Google上的项目站点下载JFox 3.0及JFox 3.0 参考指南,在JFox的官方站点上可以在线体验它的管理控制台和Petstore演示。下面是针对JFox 3.0的具体采访内容:

InfoQ中文站:在已有的众多应用服务器中,我们看到了JFox3.0很特别的一点,就是可以部署到任意的Web应用容器上去。这是否代表了Java社区最近流行的“Spring is the new JavaEE Platform”式,不再受限于具体开发厂商的应用服务器的新一代轻量级JavaEE平台趋势?

杨泳:JFox 3.0的一个重要特性之一就是可以以Web Application的方式部署到任意的Web应用服务器中,从而将一个Web服务器增强为一个全功能的Java EE应用服务器。

这样做主要考虑的因素如下:

  1. 以Tomcat为代表的Java Web Server已经发展了很多年,在接入能力、线程并发能力等方面已经非常成熟,能够满足从一般到关键各种类型的企业应用的要求,采用Web Application集成Web Server的方式可以更好地利用已有的Web Server的发展成果,以及不用再考虑为Tomcat、Jetty或者Resin都去开发一套集成的代码了,看起来我们既偷了懒,又让JFox拥有了更好的兼容性和品质;
  2. Web Application部署方式是非常成熟的Java 企业应用部署方式,JFox采用以Web Application嵌入到Web Server的继承方式,不会改变现有Web应用的开发和部署模式,更有助于现有的纯Web项目向 EJB3迁移,而JFox会在自动发布该Web应用classpath中的EJB组件。

对于Spring,它的定位是Java EE Application Framework,也就是为快速化的Web应用开发提供基础的技术架构,我觉得这和Java EE Application Server是有区别的。当然,Spring可以通过不断集成第三方的服务和框架,甚至提供EJB容器,而成为Java EE Application Server,但那时,Rod Johnson的书也许应该改名了。关于EJB和Spring的更多比较请参照EJB3和Spring比较。

至于应用服务器轻量化,确实是个值得关注的问题,老一代的应用服务器,WebSphere、WebLogic,甚至包括JBoss,都在离lightweight越来越远,而用户总是喜欢简单、轻量的东西,当前工业设计以追求“简约实用”为原则,软件的设计也应该如此。JFox确实在这方面做了很多的考虑,因为我们必须这么做,否则我们无法完成整个项目的开发,我们的目标就是“The most lightweight Java EE Application Server(最轻量级的JavaEE应用服务器)”。

InfoQ中文站:请问JFox 3.0的设计架构是什么?

杨泳:JFox的架构,简单来说,是以IoC为内核,通过提供EJB容器,JPA容器,JMS服务器,MVC框架等来实现整个应用服务器。可以参考JFox 3.0参考指南获得这方面的帮助。JFox内部并没有不可思议的地方,任何人都可以通过阅读代码掌握JFox的全部内容,这就是开源的精神,我们一直在尽量保持JFox结构清晰、代码简洁,以便于阅读、维护和改进。

JFox集成了必要的开源框架,重要的有:JOTM、XAPool、XFire等,在集成版中我们默认集成的Web Server是Tomcat。

对于EJB的分布式调用,JFox并没有基于RMI,而是采用SOAP,也就是说,如果需要远程EJB,那么就得使用Web服务。没错,JFox抛弃了RMI,因为大多数应用Web Container和EJB Container运行在一个JVM上,而且基本上都是Web应用,那么也就是说有了Local和SOAP,就能够满足几乎所有的需求了。我们总是在想尽可能满足80%需要的情况,将事情简单化。

InfoQ中文站:JFox 3.0目前支持哪些JavaEE规范,还存在那些局限?

杨泳:JFox支持主要的JavaEE 5规范,比如EJB3、JPA、JMS、JNDI、JTA、JAX-WS等。

如果在实用性和遵循规范发生冲突时,JFox往往选择前者,所以和规范存在一定的兼容性问题,比如:EJB容器只提供基于Web服务的远程调用,而JPA容器采用了SQLTemplate来实现,所以没有也没有必要实现JPA规范的所有内容。我们想提供的一个个性化的应用服务器,因为大而全且限制在规范之内的应用服务已经有了WebLogic、WebSphere、JBoss等众多选择,所以我们的想法是在尽可能满足规范的情况下,提供一个更贴近用户的应用服务器。

InfoQ中文站:请给我们简单介绍一下JFox项目的由来和它的开发团队。

杨泳:JFox在 2001年底立项,2002年开始组建团队,并陆续在Huihoo社区发布,前后参与不同模块贡献的人员超过30多人。JFox团队是一个开放的团队,任何人都可以参与并贡献,无论是代码、文档或是智慧。

选择开发应用服务器的初衷也很简单,是因为当时大家对中间件技术充满了好奇,想挑战一下Java最为深奥的技术领域,就好像一群狂热分子为了一个理想而给自己设定了一个看起来不可能的目标,也就是凭借着这股对技术研究的热情和兴趣,JFox项目才得以持续了整整5年,并且还在不断发展。

JFox共发布了3个版本,JFox 1.x支持EJB1.1,JFox 2.x支持EJB2.x,现在的JFox 3.0支持EJB3。从最初的模仿,到尝试创新,到完全自主研发,可以说5年来,JFox一直在应用服务器道路上不断探索着前进。现在,JFox团队开设了专门的网站和博客,还有论坛,在这里可以获得更多的信息。

InfoQ中文站:JFox未来的开发计划是什么?

杨泳:随着JFox 3.0的发布,不断有人开始尝试使用JFox的新版本,也不断有新问题被发现。所以完善代码以及文档,提高规范的兼容性,还有提供更强大的管理控制台,都是接下来我们要做的事情。

当然,要想支持关键的大型的企业应用,我们还需要进一步提高JFox的服务质量,比如我们正在寻求方案解决集群的问题。也还会考虑实现更多的Java EE规范,比如JCA,但是这可能需要有更多的爱好者加入进来。

InfoQ中文站:感谢你接受我们的采访。

你可能感兴趣的:(JFox主开发者杨泳解析3.0特性和设计架构)