InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

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

作者 肖桦 发布于 2007年6月21日

领域
架构 & 设计,
运维 & 基础架构,
语言 & 开发
主题
开放源代码 ,
采访 ,
Java ,
工件和工具
标签
Websphere ,
Spring框架

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中文站:感谢你接受我们的采访。

肖桦 是开源JavaEE项目SpringSide发起人,现在广州电信研究院亿迅科技有限公司任设计中心设计主管。

J2EE 5.0规范,纳百家之长,成为java企业开发统一的标准规范。 发表人 hua Hua 发表于
不错。 发表人 Leon Kennedy 发表于
Re: 不错。 发表人 杨 泳 发表于
看上去很美 发表人 lau larry 发表于
  1. 返回顶部

    J2EE 5.0规范,纳百家之长,成为java企业开发统一的标准规范。

    发表人 hua Hua

    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. 返回顶部

    不错。

    发表人 Leon Kennedy

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

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

  3. 返回顶部

    Re: 不错。

    发表人 杨 泳

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

  4. 返回顶部

    看上去很美

    发表人 lau larry

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

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

深度内容

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。

解析JDK 7的动态类型语言支持

随着JDK 7的发布,字节码指令集终于迎来了第一位新成员——invokedynamic指令。这条新增加的指令是JDK 7实现“动态类型语言(Dynamically Typed Language)”支持而进行的改进之一,也是为JDK 8可以顺利实现Lambda表达式做技术准备。在这篇文章中,我们将去了解JDK 7这项新特性的出现前因后果和它的意义。

Java Remoting远程服务(下)

随着互联网应用的发展,Java分布式远程服务技术受到越来越多的关注,本文将对各种相关实现以示例的形式逐一介绍,并总结其中的优缺点,使读者能够在技术选型时有所准备。这是文章的下篇。