InfoQ

新闻

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

作者 肖桦 发布于 2007年6月21日 上午2时45分

社区
Java
主题
开放源代码,
工件和工具,
采访
标签
Spring框架,
Websphere

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

用户可以从设置于Google上的项目站点下载JFox 3.0JFox 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中文站:感谢你接受我们的采访。

J2EE 5.0规范,纳百家之长,成为java企业开发统一的标准规范。 发表人 Hua hua 发表于 2007年6月21日 上午3时55分
不错。 发表人 Leon Kennedy 发表于 2007年6月21日 下午8时6分
Re: 不错。 发表人 泳 杨 发表于 2007年6月21日 下午10时26分
看上去很美 发表人 larry lau 发表于 2007年6月21日 下午10时32分
  1. J2EE 5.0规范,最核心的是全面引入新的基于POJO和IOC技术的EJB3模型。海纳百川,有容乃大,J2EE 5规范成为java企业开发统一的标准规范。

    主要的有点表现在:
    > 实体Bean采用了POJO模型,一个简单的java bean就可以是一个Entity Bean。无需依赖容器运行和测试
    > 全面采用O/R Mapping技术来实现数据库操作
    > 实体Bean可以运用在所有需要持久化的应用,不管是客户端还是服务器端。从而真正实现面向构件的开发
    > 实体 bean 现在支持继承和多态性
    > 灵活丰富的EJB3查询语言
    > SQL支持
    > 使用元数据批注代替部署描述符,减少复杂配置和提高可维护性
    > 将常规 Java 类用作 EJB 并将常规业务接口用于 EJB

    Spring能够实现的,EJB都能实现,但是EJB3的最大的优点比如规范化,确是Spring无法相比的。使用Ejb3可以应用于各种需求环境,无论是小型站点还是企业级分布式架构,都可以支持。灵活配置的轻量级EJB3服务器必将成为java领域的最大热点。

  2. 返回顶部

    不错。

    2007年6月21日 下午8时6分 发表人 Leon Kennedy

    不过我用其他web服务器发现速度有点慢,有时候甚至会停顿。但在Tomcat下没有这个问题,觉得很奇怪。
    JFox 3.0的一个重要特性之一就是可以以Web Application的方式部署到任意的Web应用服务器中,从而将一个Web服务器增强为一个全功能的Java EE应用服务器。
    spring也是这种想法的。

    ---------
    袋鼠蛋开源动态web服务器,拥有完全自主知识产权
    www.kangaroo-egg.com

  3. 返回顶部

    Re: 不错。

    2007年6月21日 下午10时26分 发表人 泳 杨

    Leon Kenny,你是在袋鼠蛋下做的测试吗?能否调试一下,是什么问题?

  4. 返回顶部

    看上去很美

    2007年6月21日 下午10时32分 发表人 larry lau

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

    似乎现在的java web server都有做application server的趋势。大概没有一个application server 愿意部署一个jfox吧。希望能看到更多的产品应用。另外webconsole功能太少啊。

深度内容

模块化Java:声明式模块化

本文是模块化Java系列文章的第4篇,介绍的是声明式模块化。文中描述了组件如何以声明的方式来定义并组织在一起,而无需让代码依赖于OSGI API。

Ian Robinson和Jim Webber谈论基于Web的整合

本采访是在伦敦举行的QCon2009上记录的,Ian Robinson和Jim Webber探讨了如何将Web作为整合平台以及REST在理论上和实践中的好处。

项目管理修炼之道(精选版)

项目管理对于项目成败至关重要,但实践中每个项目都有自己的独特性,没有现成的解决方案可以套用。书中从应对实际风险的角度出发,讲述了从项目启动、项目规划到项目结束的整个管理流程,展示了作者的思考过程。本迷你书从原书中精选出5个章节。

那是鸟,还是飞机?不,那是超人!

在这个演讲中,Fred将会揭示敏捷的一些外在因素,并会重点关注敏捷获得成功的内在原因。从案例研究和真实的项目经验来看,Fred认为:工具、管理体系都不能让你变得敏捷。敏捷的成功,植根于士气高涨、充分授权的工作者身上,他们能够以不同以往的方式思考问题。

访谈和书摘:Eben Hewitt的新书《Java SOA Cookbook》

Java SOA Cookbook

Eben Hewitt的新书《Java SOA Cookbook》从Java实现的角度讨论了面向服务架构。Eben在书中讨论了SOA基础、工具、最佳实践和SOA治理等主题。

Mark Richard的《Java消息服务》第二版

Mark Richards的新书《Java消息服务》第二版覆盖了JMS的许多主题, 包括发布和订阅模式以及点对点模式,消息过滤和事务等。InfoQ与Mark谈论了跟他的新作。

模块化Java:动态模块化

本文是“模块化Java”系列文章的第三篇,讨论动态模块化,内容涉及如何解析bundle类、bundle如何变化、以及bundle之间如何通信。

让测试也敏捷起来

对于测试组织来说,敏捷方法带来的快速迭代却让测试本身变得困难起来:缺乏“足够详细的文档”,缺乏“仔细设计用例的时间”等等。在本演讲中,段念将与大家探讨如何在敏捷过程中进行测试。