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的不断演进

在本文中,InfoQ谈到了有助于发掘潜在的新的Java语言特性的3种技术——DSL、注解处理器以及将语法糖从语言迁移到IDE中。

2010年大规模技术架构的思路

相比其他行业,IT技术由于信息流动便捷,新技术更新非常频繁。架构师经常面临新技术及传统方案选择的困惑。架构师应如何抓住本质构建新一代的应用?本文从几个方面提出一些思路供架构师参考。

功能小组模型的过程与质量控制

InfoQ中文站最近采访了微软的Ramesh,在采访中,Ramesh从过程控制、架构与设计的控制以及测试组织等方面分享了他所带领Visual Studio软件生命周期管理工具团队使用敏捷方式组织管理大规模软件团队方面的经验。

张文钿谈Rails开发及台湾Ruby社区

在去年10月份的Kungfurails大会上,InfoQ中文站有幸采访了从台湾专程赶过来的张文钿,与他探讨了关于台湾Ruby社区的发展、Rails的商业化,Restful Design等话题。

Scrum与策略

如果Scrum只关乎短期行为,战略人士又该如何去适应这种生态系统呢?更重要的是,它如何帮助企业领导人做出并且履行重要的承诺?

书评:《代码之道》

《代码之道》以一位微软内部人士的视角,揭示了关于软件编码、软件测试和项目管理的残酷现实。针对每一个话题,I.M.Wright都根据丰富的工作经验提出了自己的观点,并介绍了来龙去脉,令人信服。

洪强宁谈豆瓣网技术架构

如何应对高并发、大访问量?如何保证数据的安全性以及数据库大吞吐量?在海量数据下,如何进行数据表变更?DoubanFS以及DoubanDB的特点以及技术实现?在QConBeijing 2009期间,InfoQ中文站有幸采访了洪强宁,探讨了相关话题。

淘宝网架构师岳旭强的年度展望

淘宝网资深架构师岳旭强结合自己的实际工作,从数据扩展性、关注系统和人的交互,以及关注可用性等方面做了总结和展望。