写点什么

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:45897

评论

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

精选开源项目管理系统:为您的团队挑选最佳选项

爱吃小舅的鱼

项目管理 开源系统

使用 Easysearch 打造企业内部知识问答系统

极限实验室

easysearch 征文系列

InPlant SCADA笔记 day1与首次安装

万里无云万里天

工厂运维 InPlant SCADA

Spring 常用的三种拦截器详解

快乐非自愿限量之名

Java spring Spring Boot

fx框架上手-基础篇

FunTester

TinyVue 组件库官网焕然一新!

OpenTiny社区

Vue 组件库 OpenTiny

以太坊 ETF 获批:如何影响 Web3

股市老人

医疗器械行业数智化创新实践:数据可视化与 AI+ 是实现高质量发展的关键

tapdata

AutoMQ 开源可观测性方案:夜莺 Flashcat

AutoMQ

云计算 kafka 云原生 Apache Kafka AutoMQ

InPlant SCADA笔记 io modbus tcp协议的应用

万里无云万里天

Modbus 工厂运维 InPlant SCADA

使用线程池你应该知道的知识点

不在线第一只蜗牛

Java 线程池

基于Java+SpringBoot+Vue前后端分离健美操评分系统设计和实现

hunter_coder

后端开发

2024 年美国大选将如何影响 Web3 行业?

股市老人

InPlant SCADA笔记 io iec104协议的应用

万里无云万里天

工厂运维 InPlant SCADA iec104

InPlant SCADA笔记 io OPC DA协议的应用

万里无云万里天

OPCUA InPlant SCADA

记录一次RPC服务有损上线的分析过程

京东科技开发者

从历史到未来,看技术发展趋势

凌晞

技术 科技 构架

京东工业平台API:关键词搜索京东工业平台商品列表数据接口

tbapi

京东API接口 京东工业平台API 京东工业平台商品列表接口 京东工业平台商品数据接口

源码补丁神器—patch-package

京东科技开发者

TapData 信创数据源 | 国产信创数据库 TiDB 数据迁移指南,加速国产化进程,推进自主创新建设

tapdata

ChinaJoy 2024启动!西部数据展示丰富游戏存储解决方案让发烧友直面各式挑战

Geek_2d6073

Java 内推 | 教育行业缺口来了,研发,运维,产品,教研,职能,营销... 别错过

Seachal

Java 内推

InPlant SCADA笔记 io memory驱动的应用

万里无云万里天

工厂运维 InPlant SCADA

开个技术外挂|电池热失控致电车自燃爆炸?用仿真技术解决它!

Altair RapidMiner

电动汽车 电池 仿真 altair 新能源车

照明黑马智谋纪,让小白玩转AI照明

编程猫

日志框架简介-Slf4j+Logback入门实践

京东科技开发者

8款好用的PPT免费生成器推荐,堪称办公神器!

彭宏豪95

效率工具 职场 PPT AIGC AI生成PPT

InPlant SCADA笔记 day2与知识点

万里无云万里天

工厂运维 InPlant SCADA

InPlant SCADA笔记 io MQTT协议的应用

万里无云万里天

mqtt 工厂运维 InPlant SCADA

InPlant SCADA笔记 io OPC UA协议的应用

万里无云万里天

工厂运维 OPCUA InPlant SCADA

探索 Milvus 数据存储系统:如何评估和优化 Milvus 存储性能

Zilliz

人工智能 AI Milvus Zilliz 向量数据库

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