写点什么

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

  • 2007-06-21
  • 本文字数:2390 字

    阅读完需:约 8 分钟

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

2007-06-21 02:451338

评论

发布
暂无评论
发现更多内容

浅谈华为云CDN在互联网领域的应用场景落地

YG科技

复旦MOSS大模型开源了「中国版ChatGPT」,Github和Hugging Face同时上线

肥晨

三周年连更

Unity 之 关于停止协程的五种方式解析

陈言必行

Unity 三周年连更

Qz学算法-数据结构篇(排序算法--基数、总结)

浅辄

数据结构 三周年连更

达芬奇18补丁版下载 支持m1/m2/intel/win

Rose

DaVinci Resolve 18 达芬奇18破解版 视频剪辑调色软件

华为云桌面随需而至,让办公数字化触手可及

平平无奇爱好科技

photoshop 2023【存储为窗口显示空白、黑屏】解决方法

Rose

ps 2023储存黑屏 Photoshop 2023

macOS 13 Ventura (苹果最新系统) v13.3.1正式版

Rose

macOS Ventura 苹果系统下载 Mac最新系统

华为云桌面,如何为企业构建新型工作方式

平平无奇爱好科技

面试官:介绍一下什么是缓存雪崩、缓存击穿、缓存穿透?

Java redis 缓存穿透 缓存击穿 缓存雪崩

Oracle apex社区教程 PLSQL常用时间函数

back_wang

oracle apex

Oracle Apex学习之系统变量

back_wang

oracle ebs oracle apex

跨平台应用开发进阶(五十五):uni-app 获取设备信息及 APP 报无相应权限问题分析及解决

No Silver Bullet

uni-app 跨平台应用开发 三周年连更 问题分析及解决 设备信息

Linux面试必备

袁袁袁袁满

三周年连更

AlDente免费版,限制 Macbook 最大充电量,保护电池健康

Rose

AlDente Mac版 AlDente macOS 充电量阈值

Spring Boot之log4j2基础使用入门|超级详细,建议收藏

bug菌

Spring Boot log4j2 三周年连更

THREE.JS实现炫酷的3D简历网站

知心宝贝

前端 后端 3D ThreeJS 三周年连更

Matlab实现粒子群算法

Shine

三周年连更

Shell脚本实战:Consul 服务注册和注销的最佳实践

小毛驴的烂笔头

Linux Shell

微服务 SpringBoot 整合 Redis GEO 实现附近商户功能

Bug终结者

java; Redis 核心技术与实战 三周年连更

【直播回顾】数字化转型成为银行业发展的关键(下)

易观分析

数字化转型 银行

华为云大数据BI解决方案,助力企业数字化运营

平平无奇爱好科技

TestNG 中使用 Guice 来进行依赖注入

HoneyMoose

Downie下载vip会员视频教程?Downie4最新许可证

Rose

Downie下载 Downie使用教程 Downie 4许可证 Mac视频下载器 Downie破解版

从源码全面解析 ArrayBlockingQueue 的来龙去脉

Java 源码 ArrayBlockingQueue

华为云CDN加速,赋能企业数字化转型升级

YG科技

NFT加密钱包交易系统开发搭建技术

薇電13242772558

NFT

华为云桌面——云端上“最卷的云”

平平无奇爱好科技

摆脱终端束缚,华为云桌面助力企业数字化转型

平平无奇爱好科技

灵活高效,华为云桌面实现随时随地办公

YG科技

华为云CDN赋能企业数字化转型

YG科技

JFox主开发者杨泳解析3.0特性和设计架构_Java_肖桦_InfoQ精选文章