﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-JFox</title><link>http://www.blogjava.net/jfox/</link><description>The most lightwegith Java EE Application Server</description><language>zh-cn</language><lastBuildDate>Tue, 14 Apr 2026 09:30:56 GMT</lastBuildDate><pubDate>Tue, 14 Apr 2026 09:30:56 GMT</pubDate><ttl>60</ttl><item><title>基于JFox平台的www.chinabrands.net网站上线  </title><link>http://www.blogjava.net/jfox/archive/2009/01/05/249820.html</link><dc:creator>JFox</dc:creator><author>JFox</author><pubDate>Mon, 05 Jan 2009 01:11:00 GMT</pubDate><guid>http://www.blogjava.net/jfox/archive/2009/01/05/249820.html</guid><wfw:comment>http://www.blogjava.net/jfox/comments/249820.html</wfw:comment><comments>http://www.blogjava.net/jfox/archive/2009/01/05/249820.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/jfox/comments/commentRss/249820.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jfox/services/trackbacks/249820.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; <a href="http://www.chinabrands.net/" target="_blank">www.chinabrands.net</a>是一个致力于宣传和推广国产品牌的网站，它为国产品牌建立目录，并提供评论系统，使网友可以进行评价和打分，从而让更多人了解并支持国产品牌。<br />
<br />
&nbsp;&nbsp;&nbsp; 该网站完全基于JFox进行构建，采用JFox MVC作为表现层框架，JFox EJB3作为逻辑层框架，JFox
JPA作为持久层框架，上线之后，ChinaBrands一直稳定和高效地运行，感兴趣的朋友可以访问一下：<a href="http://www.chinabrands.net/" target="_blank">www.chinabrands.net</a>.
<img src ="http://www.blogjava.net/jfox/aggbug/249820.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jfox/" target="_blank">JFox</a> 2009-01-05 09:11 <a href="http://www.blogjava.net/jfox/archive/2009/01/05/249820.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《开源技术选型手册》即将出版</title><link>http://www.blogjava.net/jfox/archive/2008/06/10/206777.html</link><dc:creator>JFox</dc:creator><author>JFox</author><pubDate>Tue, 10 Jun 2008 01:42:00 GMT</pubDate><guid>http://www.blogjava.net/jfox/archive/2008/06/10/206777.html</guid><wfw:comment>http://www.blogjava.net/jfox/comments/206777.html</wfw:comment><comments>http://www.blogjava.net/jfox/archive/2008/06/10/206777.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jfox/comments/commentRss/206777.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jfox/services/trackbacks/206777.html</trackback:ping><description><![CDATA[非常有幸参与了博文视点组织的《开源技术选型手册》的编写工作，这本书全面介绍了Java当前各种流行框架，为企业CTO、项目经理、团队Leader和高级软件开发人员的技术选型提供参考，对于Java入门人员，也可以借鉴该书扩宽思路，找到自己感兴趣的研究方向。<br />
<br />
这本书从策划到创作再到定版发行，经历了半年多的时间，每一个参与者都付出了艰辛的努力，就在定稿之际，四川汶川突然发生的地震灾害，所有的参与者又一致同意将第一次发行的版税以组委会的名义统一捐献给灾区，以参与开源协作来为赈灾贡献一份力量，我想是每一个开源爱好者觉得最有意义的事情了。<br />
<br />
从这次参与写作《开源技术选型手册》以及之前的几件事情，我切身的感觉到国内的开源环境正在逐渐向好的方向改变，不仅有越来越多的个人参与开源的项目的开发，也有企业不断加入到开源运动中来，更重要的是，还有越来越多的媒体开始主动为开源摇旗呐喊，官方机构也不断主办各种活动来促进开源运动，完善的开源环境的形成将促进国内开源运动快速发展。<br />
<br />
希望《开源技术选型手册》能够成为开源选型的黄页，也希望国内能够涌现出更多优秀的开源项目，成为《开源技术选型手册》中的一员；希望我们早日实现开源大国向开源强国的转变 :)<br />
<br />
更多有关该书的资讯可以参考：<br />
博文视点博客 <a href="http://blog.csdn.net/bvbook/archive/2008/05/22/2468977.aspx">http://blog.csdn.net/bvbook/archive/2008/05/22/2468977.aspx</a><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/jfox/opensource.jpg" height="745" width="600" /><br />
<br />
<img src ="http://www.blogjava.net/jfox/aggbug/206777.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jfox/" target="_blank">JFox</a> 2008-06-10 09:42 <a href="http://www.blogjava.net/jfox/archive/2008/06/10/206777.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JFox 3.1 版本发布 - The most lightweight Java EE Application Server</title><link>http://www.blogjava.net/jfox/archive/2007/10/21/154773.html</link><dc:creator>JFox</dc:creator><author>JFox</author><pubDate>Sun, 21 Oct 2007 14:18:00 GMT</pubDate><guid>http://www.blogjava.net/jfox/archive/2007/10/21/154773.html</guid><wfw:comment>http://www.blogjava.net/jfox/comments/154773.html</wfw:comment><comments>http://www.blogjava.net/jfox/archive/2007/10/21/154773.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/jfox/comments/commentRss/154773.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jfox/services/trackbacks/154773.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 在JFox 3.0发布近半年之后，JFox Team荣幸地发布3.1版本，新特性如下：<br />
&nbsp;&nbsp;&nbsp; 1. Velocity升级至1.5<br />
&nbsp;&nbsp;&nbsp; 2. 支持提供多套数据库脚本以适配多种数据库<br />
&nbsp;&nbsp;&nbsp; 3. 增加 Request Token，防止 Form 重复提交<br />
&nbsp;&nbsp;&nbsp; 4. EJBContextExt提供Session访问接口，方便在EJB中访问Sesison数据<br />
&nbsp;&nbsp;&nbsp; 5. @ActionMethod增加name属性，可以指定Action Method访问名称<br />
&nbsp;&nbsp;&nbsp; 6. 修正了一系列bug<br />
<br />
&nbsp;&nbsp;&nbsp; 访问JFox网站: <a href="http://www.jfox.org.cn">www.jfox.org.cn</a><br />
&nbsp;&nbsp;&nbsp; <a href="http://code.google.com/p/jfox/downloads/list">下载 JFox 3.1</a>
<br />
&nbsp;&nbsp;&nbsp; <a href="http://www.jfox.org.cn/doc/JFox_3.1_Reference_Guide(CN).html">《JFox 3.1 参考指南》</a>&nbsp; <a href="http://jfox.googlecode.com/files/JFox_3.1_Reference_Guide(CN).pdf">下载PDF</a><br />
&nbsp;&nbsp;&nbsp; <a href="http://www.jfox.org.cn/m/manager/index.jsp">在线演示 - 管理控制台</a>
<br />
&nbsp;&nbsp;&nbsp; <a href="http://www.jfox.org.cn/m/petstore/welcome.html">在线演示 - Petstore</a>
<img src ="http://www.blogjava.net/jfox/aggbug/154773.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jfox/" target="_blank">JFox</a> 2007-10-21 22:18 <a href="http://www.blogjava.net/jfox/archive/2007/10/21/154773.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>InfoQ对话JFox核心开发人员</title><link>http://www.blogjava.net/jfox/archive/2007/09/17/145989.html</link><dc:creator>JFox</dc:creator><author>JFox</author><pubDate>Mon, 17 Sep 2007 14:30:00 GMT</pubDate><guid>http://www.blogjava.net/jfox/archive/2007/09/17/145989.html</guid><wfw:comment>http://www.blogjava.net/jfox/comments/145989.html</wfw:comment><comments>http://www.blogjava.net/jfox/archive/2007/09/17/145989.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/jfox/comments/commentRss/145989.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jfox/services/trackbacks/145989.html</trackback:ping><description><![CDATA[近日，JFox荣幸地接受了IT专业媒体InfoQ的视频采访，核心开发人员杨泳和程勇分别就JFox的技术架构和开源历程进行了讲解。<br />
<br />
对话中，你可以详细了解JFox 3.0新特性、JFox基础架构、JFox特色、OSGi相关内容，以及如何加入JFox开源项目等内容。<br />
欢迎访问InfoQ专题: <a title="对话JFox 3.0核心开发人员" href="http://www.infoq.com/cn/interviews/application-server-jfox">对话JFox 3.0核心开发人员</a><br />
<br />

<img src ="http://www.blogjava.net/jfox/aggbug/145989.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jfox/" target="_blank">JFox</a> 2007-09-17 22:30 <a href="http://www.blogjava.net/jfox/archive/2007/09/17/145989.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《JFox 3.0 参考指南》HTML版发布</title><link>http://www.blogjava.net/jfox/archive/2007/07/09/129066.html</link><dc:creator>JFox</dc:creator><author>JFox</author><pubDate>Mon, 09 Jul 2007 08:13:00 GMT</pubDate><guid>http://www.blogjava.net/jfox/archive/2007/07/09/129066.html</guid><wfw:comment>http://www.blogjava.net/jfox/comments/129066.html</wfw:comment><comments>http://www.blogjava.net/jfox/archive/2007/07/09/129066.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jfox/comments/commentRss/129066.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jfox/services/trackbacks/129066.html</trackback:ping><description><![CDATA[为了方便浏览，JFox团队发布了HTML版《JFox 3.0 参考指南》，点击打开 <a title="《JFox 3.0 参考指南》" href="http://www.jfox.org.cn/doc/JFox_3.0_Reference_Guide(CN).html">《JFox 3.0 参考指南》</a>。<br>   <img src ="http://www.blogjava.net/jfox/aggbug/129066.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jfox/" target="_blank">JFox</a> 2007-07-09 16:13 <a href="http://www.blogjava.net/jfox/archive/2007/07/09/129066.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JFox主创人员接受InfoQ采访</title><link>http://www.blogjava.net/jfox/archive/2007/06/21/125668.html</link><dc:creator>JFox</dc:creator><author>JFox</author><pubDate>Thu, 21 Jun 2007 12:18:00 GMT</pubDate><guid>http://www.blogjava.net/jfox/archive/2007/06/21/125668.html</guid><wfw:comment>http://www.blogjava.net/jfox/comments/125668.html</wfw:comment><comments>http://www.blogjava.net/jfox/archive/2007/06/21/125668.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jfox/comments/commentRss/125668.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jfox/services/trackbacks/125668.html</trackback:ping><description><![CDATA[JFox团队发布JFox Application Server 3.0版本以来，吸引了国内Java爱好者以及IT媒体的注意，InfoQ中文站的编辑肖桦（江南白衣）就此采访了JFox的主创人员杨泳(jfox.young@gmail.com)。<br><br>部分摘录：<br><span style="font-size: 10pt; font-style: italic;">...应用服务器轻量化，确实是个值得关注的问题，老一代的应用服务器，WebSphere、WebLogic,甚至包括JBoss，都在离 lightweight越来越远，而用户总是喜欢简单、轻量的东西，当前工业设计以追求&#8220;简约实用&#8221;为原则，软件的设计也应该如此。JFox确实在这方面做了很多的考虑，因为我们必须这么做，否则我们无法完成整个项目的开发，我们的目标就是&#8220;The most lightweight Java EE Application Server（最轻量级的JavaEE应用服务器）&#8221;...</span><br><br>全文请看InfoQ文章：<a title="JFox主开发者杨泳解析3.0特性和设计架构" href="http://www.infoq.com/cn/news/2007/06/jfox3-appserver-young">JFox主开发者杨泳解析3.0特性和设计架构</a><br>更多JFox内容请访问 <a title="www.jfox.org.cn" href="http://www.jfox.org.cn/">www.jfox.org.cn</a><br><br>      <img src ="http://www.blogjava.net/jfox/aggbug/125668.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jfox/" target="_blank">JFox</a> 2007-06-21 20:18 <a href="http://www.blogjava.net/jfox/archive/2007/06/21/125668.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EJB3 再战 Spring</title><link>http://www.blogjava.net/jfox/archive/2007/04/01/107800.html</link><dc:creator>JFox</dc:creator><author>JFox</author><pubDate>Sun, 01 Apr 2007 15:39:00 GMT</pubDate><guid>http://www.blogjava.net/jfox/archive/2007/04/01/107800.html</guid><wfw:comment>http://www.blogjava.net/jfox/comments/107800.html</wfw:comment><comments>http://www.blogjava.net/jfox/archive/2007/04/01/107800.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/jfox/comments/commentRss/107800.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jfox/services/trackbacks/107800.html</trackback:ping><description><![CDATA[<span style="font-family: 宋体;">随着</span><span lang="EN-US">EJB3</span><span style="font-family: 宋体;">规范以及支持</span><span lang="EN-US">EJB3</span><span style="font-family: 宋体;">的</span><span lang="EN-US">JavaEE</span><span style="font-family: 宋体;">应用服务器的即将发布，全新</span><span lang="EN-US">Java EE</span><span style="font-family: 宋体;">体系架构的新战争将拉开帷幕，在过去</span><span lang="EN-US">3</span><span style="font-family: 宋体;">年中如火如荼的</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">占据了</span><span lang="EN-US">Java EE</span><span style="font-family: 宋体;">应用开发基础平台的大半江山，面对</span><span lang="EN-US">EJB3</span><span style="font-family: 宋体;">和</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">你应该如何选择呢？</span>
<p class="MsoNormal"><span lang="EN-US"><span><br></span></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">作为一个架构师，我对</span><span lang="EN-US">EJB</span><span style="font-family: 宋体;">是既爱且恨，对</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">又恨又爱，现在我们来也把这两大技术体系来做一个全面分析和对比，希望能给大家在进行技术选型时一个更好的参考。</span></p>
<h1><span style="font-size: 16pt; line-height: 240%;" lang="EN-US">1. </span><span style="font-size: 16pt; line-height: 240%; font-family: 宋体;">法制</span><span style="font-size: 16pt; line-height: 240%;" lang="EN-US"> VS &#8220;</span><span style="font-size: 16pt; line-height: 240%; font-family: 宋体;">民主</span><span style="font-size: 16pt; line-height: 240%;" lang="EN-US">&#8221;<o:p></o:p></span></h1>
<p class="MsoNormal"><span lang="EN-US">EJB</span><span style="font-family: 宋体;">规范一直由国际组织</span><span lang="EN-US">jcp(<a href="http://www.jcp.org/">www.jcp.org</a>)</span><span style="font-family: 宋体;">来制定，一经通过，即作为官方标准，且各厂商都会不遗余力的推动，所以对于企业应用来说，</span><span lang="EN-US">EJB</span><span style="font-family: 宋体;">就是法，以</span><span lang="EN-US">EJB</span><span style="font-family: 宋体;">为企业应用的基础架构暂且称为法治</span><span lang="EN-US">; Spring</span><span style="font-family: 宋体;">来自开源社区，由众多的开源软件开发者参与，逐步形成的一种流行的体系标准，它的设计以</span><span lang="EN-US">IoC(</span><span style="font-family: 宋体;">反转控制</span><span lang="EN-US">)</span><span style="font-family: 宋体;">为核心，提倡所谓的</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">零</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">侵入设计原则，这里暂且称之为民主。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">支持</span><span lang="EN-US">EJB</span><span style="font-family: 宋体;">的应用服务器一般是一个大而全的产品，包括了构建企业应用需要的方方面面，如果需要额外扩展一般不容易，如果对一个应用服务器不满意的话，那么可以且也只能更换整个应用服务器了，好在由于应用服务器市场百花齐放，从免费到低端再到高端，您可以任意选择；</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Spring</span><span style="font-family: 宋体;">从</span><span lang="EN-US">IoC</span><span style="font-family: 宋体;">容器发展而来，通过不断集成</span><span lang="EN-US">AOP</span><span style="font-family: 宋体;">、</span><span lang="EN-US">MVC</span><span style="font-family: 宋体;">、</span><span lang="EN-US">OR/Mapping</span><span style="font-family: 宋体;">以及几乎您能想到的各项服务而提供完善的企业应用架。对于一个应用，你可以自由选择具体的技术框架的实现，</span><span lang="EN-US">SSH</span><span style="font-family: 宋体;">就是最常用一套组合，然而且不说是否每个架构师拥有正确选择的能力，无论如何，最终的选择在设计之初一旦确定，要想更换便不那么容易，你不可能轻松的将一个基于</span><span lang="EN-US">Spring + Structs</span><span style="font-family: 宋体;">的应用轻松的移植到</span><span lang="EN-US">Spring + WebWork</span><span style="font-family: 宋体;">，更不能轻松的将一个基于</span><span lang="EN-US">Spring + Hibernate</span><span style="font-family: 宋体;">的应用轻松的移植到</span><span lang="EN-US">Spring + iBatis</span><span style="font-family: 宋体;">，所以对于需要长期维护和发展的应用来说，将只能寄希望于你采用的框架都能够很好的发展，并且能在升级的同时保证向前的兼容性。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">综上所述，</span><span lang="EN-US">EJB</span><span style="font-family: 宋体;">由于对于整个世界是标准的，就好像是一部国际法，一旦遵循，全球通用，你可以比较轻松的在</span><span lang="EN-US">WebSphere</span><span style="font-family: 宋体;">、</span><span lang="EN-US">WebLogic</span><span style="font-family: 宋体;">甚至</span><span lang="EN-US">JBoss</span><span style="font-family: 宋体;">之间进行切换，所以如果选择</span><span lang="EN-US">EJB</span><span style="font-family: 宋体;">，你将在一个</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">法制</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">的环境下获得最大的民主；而</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">对于整个世界看似民主的，然而一旦整套架构确定下来，却成了专制，犹如美国式的民主，一旦被它征服，就成为它的专政统治了，想挣脱它的控制可就不那么容易了，其中的利害，大家细细品味吧。</span></p>
<h1><span style="font-size: 16pt; line-height: 240%;" lang="EN-US">2. </span><span style="font-size: 16pt; line-height: 240%; font-family: 宋体;">轻量级组件</span><span style="font-size: 16pt; line-height: 240%;" lang="EN-US"> VS </span><span style="font-size: 16pt; line-height: 240%; font-family: 宋体;">轻量级内核</span><span style="font-size: 16pt; line-height: 240%;" lang="EN-US"> VS</span><span style="font-size: 16pt; line-height: 240%; font-family: 宋体;">轻量级容器</span><span style="font-size: 16pt; line-height: 240%;"> <span lang="EN-US"><o:p></o:p></span></span></h1>
<p class="MsoNormal"><span style="font-family: 宋体;">关于轻量级内核，不论属实是否，现今的应用服务器都宣称采用了微内核技术，在此基础上建立</span><span lang="EN-US">Java EE</span><span style="font-family: 宋体;">的各项服务构建成完善的应用服务器；而</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">本身就是一个基于</span><span lang="EN-US">IoC</span><span style="font-family: 宋体;">的轻量内核，然后通过集成第三方的服务器来提供完整的架构。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">EJB</span><span style="font-family: 宋体;">组件曾经被认为是一个重量级的组件，而备受批评，</span><span lang="EN-US">EJB3</span><span style="font-family: 宋体;">规范的重要目标就是简化</span><span lang="EN-US">EJB</span><span style="font-family: 宋体;">的开发，提供一个容器管理的轻量级的组件方案。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">但是有必要提醒一下，轻量级的组件，并不意味着提供服务的容器是轻量的，不管是</span><span lang="EN-US">EJB2</span><span style="font-family: 宋体;">还是</span><span lang="EN-US">EJB3</span><span style="font-family: 宋体;">，应用服务器因为需要管理组件的负责生命周期以及行为，并且内置提供了各项服务，容器自然是一个重量级的服务；至少现在看来，现有的</span><span lang="EN-US">Application Server</span><span style="font-family: 宋体;">提供的容器都还不足够的轻量，从个人偏好来说，我就非常喜欢</span><span lang="EN-US">JBoss 2.4</span><span style="font-family: 宋体;">这个版本，它有我需要的功能，同时又够简单，而现在，</span><span lang="EN-US"> JBoss 4</span><span style="font-family: 宋体;">的启动速度已经逐渐让我对它对失去了耐心。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">而对于</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">，也有同样的问题，轻量级的内核，也不意味着整个框架是轻量的，更不意味着基于</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">的整个应用架构是轻量的。对于</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">，你需要去寻找并粘合各种服务，然后让他们能够稳定的在一起工作，如果应用对技术的需求较多，伸缩性要求也较高，你就会不断的在应用服务中加入其他服务，如：资源池、消息队列、集群等。当加入这些后，</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">的解决方案已经和</span><span lang="EN-US">Java
EE Application Server</span><span style="font-family: 宋体;">解决方案一样重量级了。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">追求简单、轻量，是每一个应用架构的目标，对于企业应用的构建来说，轻量级组件标准</span><span lang="EN-US">+</span><span style="font-family: 宋体;">轻量的内核</span><span lang="EN-US">+</span><span style="font-family: 宋体;">轻量级的容器，并以此构建轻量级的应用平台，才是最终需要的。如果有轻量级的容器出现，将帮助</span><span lang="EN-US">EJB3</span><span style="font-family: 宋体;">在企业应用中重新占据有利的地位。</span></p>
<h1><span style="font-size: 16pt; line-height: 240%;" lang="EN-US">3. </span><span style="font-size: 16pt; line-height: 240%; font-family: 宋体;">可管理性与可控性</span><span style="font-size: 16pt; line-height: 240%;" lang="EN-US"><o:p></o:p></span></h1>
<p class="MsoNormal"><span style="font-family: 宋体;">这个问题对于一次性交付的项目也许不是问题，但是对于质量要求更高、生命周期更长的产品，却是衡量平台和架构的重要因素。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">基于</span><span lang="EN-US"> Spring </span><span style="font-family: 宋体;">架构的应用，由于过分的自由和灵活，随着项目的进展，逐渐集成的第三方框架越来越多，很难保证集成的服务和编写的组件中有没有漏洞，甚至相互之间有严重的冲突，那么，掌控整个项目的质量成了难题，光是一页接一页的配置文件，就知道今后的维护成本也就随之增高，回想一下</span><span lang="EN-US">EJB2.0</span><span style="font-family: 宋体;">时代的</span><span lang="EN-US">ejb-jar.xml</span><span style="font-family: 宋体;">吧；而</span><span lang="EN-US">EJB</span><span style="font-family: 宋体;">因为集成的都是标准服务，而且组件模型也是固定的，加之应用服务器一般提供控制台，用来查看运行时的各项属性，并可对服务进行实时的管理，显然比</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">开发的应用可控性更好。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<h1><span style="font-size: 16pt; line-height: 240%;" lang="EN-US">4. </span><span style="font-size: 16pt; line-height: 240%; font-family: 宋体;">功能性对比</span><span style="font-size: 16pt; line-height: 240%;" lang="EN-US"><o:p></o:p></span></h1>
<h2><span lang="EN-US">4.1 IoC</span><span style="font-family: 黑体;">容器，</span><span lang="EN-US">AOP</span><span style="font-family: 黑体;">能力</span></h2>
<p class="MsoNormal"><span style="font-family: 宋体;">在</span><span lang="EN-US">IoC</span><span style="font-family: 宋体;">的能力</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">要略强一些，但是在</span><span lang="EN-US">EJB3</span><span style="font-family: 宋体;">中可以完全用</span><span lang="EN-US">Annotation</span><span style="font-family: 宋体;">方式进行注入，在开发上要简单很多，对于一些相对比较固定的注入，采用</span><span lang="EN-US">Annotation</span><span style="font-family: 宋体;">更好，而对于一些可能需要经常变动的注入，</span><span lang="EN-US">XML</span><span style="font-family: 宋体;">更加灵活，</span><span lang="EN-US">EJB3</span><span style="font-family: 宋体;">刚好提供了这样的两种解决方案。如果你已经患有</span><span lang="EN-US">XML</span><span style="font-family: 宋体;">恐惧症，那么</span><span lang="EN-US">EJB3</span><span style="font-family: 宋体;">无疑将给您以解脱。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">同时，</span><span lang="EN-US">EJB3</span><span style="font-family: 宋体;">组件中，支持多种方式注入，比如依赖于名称、接口或者</span><span lang="EN-US">JNDI</span><span style="font-family: 宋体;">名，另外还支持使用</span><span lang="EN-US">@PersistenceContext</span><span style="font-family: 宋体;">注入</span><span lang="EN-US">EntityManager</span><span style="font-family: 宋体;">，</span><span lang="EN-US">@Resource</span><span style="font-family: 宋体;">注入服务器资源，如</span><span lang="EN-US">EJBContext</span><span style="font-family: 宋体;">、</span><span lang="EN-US">TimerService</span><span style="font-family: 宋体;">等，而一些</span><span lang="EN-US">Annotation</span><span style="font-family: 宋体;">已经成为</span><span lang="EN-US">JDK6</span><span style="font-family: 宋体;">的一部分，将来可能直接被</span><span lang="EN-US">JDK</span><span style="font-family: 宋体;">支持。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">AOP</span><span style="font-family: 宋体;">方面，如果您需要彻底的</span><span lang="EN-US">AOP</span><span style="font-family: 宋体;">，并且在</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">中集成了</span><span lang="EN-US">AspectJ</span><span style="font-family: 宋体;">，</span> <span style="font-family: 宋体;">那么</span><span lang="EN-US">EJB3</span><span style="font-family: 宋体;">自然无法比拟，但是如果您的项目以够用为原则，只需要一般方法拦截意义上的</span><span lang="EN-US">AOP</span><span style="font-family: 宋体;">，</span><span lang="EN-US">EJB3</span><span style="font-family: 宋体;">提供的各种回调方法应该可以满足您的要求了。</span></p>
<h2><span lang="EN-US">4.2 </span><span style="font-family: 黑体;">事务处理</span></h2>
<p class="MsoNormal"><span lang="EN-US">EJB</span><span style="font-family: 宋体;">的看家本领，</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">也通过提供</span><span lang="EN-US">TransactionTemplate</span><span style="font-family: 宋体;">以及集成第三方事务处理器来支持</span><span lang="EN-US">JTA</span><span style="font-family: 宋体;">，都支持申明式事务，可以</span><span lang="EN-US">BMT</span><span style="font-family: 宋体;">，</span><span lang="EN-US">CMT</span><span style="font-family: 宋体;">，但无论如何，移植的器官总也没有自身长的好吧。</span></p>
<h2><span lang="EN-US">4.3 </span><span style="font-family: 黑体;">分布式能力</span></h2>
<p class="MsoNormal"><span style="font-family: 宋体;">一般使用</span><span lang="EN-US">Java EE</span><span style="font-family: 宋体;">体系的公司都认为这是</span><span lang="EN-US">EJB</span><span style="font-family: 宋体;">的最大长处，但是实施并不如想象那样，一来绝大多数都是</span><span lang="EN-US">Web</span><span style="font-family: 宋体;">应用，依赖</span><span lang="EN-US">Web</span><span style="font-family: 宋体;">提供的分布式能力已经可以满足</span><span lang="EN-US">90%</span><span style="font-family: 宋体;">的需要了，二来大家基本上都是</span><span lang="EN-US">Web</span><span style="font-family: 宋体;">容器和</span><span lang="EN-US">EJB</span><span style="font-family: 宋体;">容器整体部署，</span><span lang="EN-US">EJB</span><span style="font-family: 宋体;">组件的分布部署少之又少。当然如果您需要</span><span lang="EN-US">Web</span><span style="font-family: 宋体;">层和应用层分开部署，那么</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">一定不在你的考虑范围之内了。</span></p>
<h2><span lang="EN-US">4.4 Cluster</span><span style="font-family: 黑体;">能力</span></h2>
<p class="MsoNormal"><span lang="EN-US">Cluster</span><span style="font-family: 宋体;">也是</span><span lang="EN-US">EJB</span><span style="font-family: 宋体;">的传统优势，但是老师说，能够发挥</span><span lang="EN-US">EJB</span><span style="font-family: 宋体;">集群优势的地方并不多，因为即使项目中采用了</span><span lang="EN-US">EJB</span><span style="font-family: 宋体;">，一般也采用</span><span lang="EN-US">Stateless
SessionBean</span><span style="font-family: 宋体;">，而使用</span><span lang="EN-US">HttpSession
Cluster</span><span style="font-family: 宋体;">，既然如此，无论</span><span lang="EN-US">EJB</span><span style="font-family: 宋体;">还是</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">，大家都是平等的。当然，如果您正在构建一个大型的应用，对集群的能力要求非常高，比如需要事务级的</span><span lang="EN-US">Cluster</span><span style="font-family: 宋体;">，而且还有分布式的需求，那么估计没有多少因素会让您考虑</span><span lang="EN-US">Web Server + Spring</span><span style="font-family: 宋体;">的架构了。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<h2><span lang="EN-US">4.5 Web Service</span></h2>
<p class="MsoNormal"><span lang="EN-US">EJB3</span><span style="font-family: 宋体;">中的</span><span lang="EN-US">Web Service</span><span style="font-family: 宋体;">和</span><span lang="EN-US">EJB</span><span style="font-family: 宋体;">组件集成得如此之好，使用起来再简单不过了，如下面实例所示，</span><span lang="EN-US">JAX-WS</span><span style="font-family: 宋体;">也将逐步成为</span><span lang="EN-US">Java Web
Service</span><span style="font-family: 宋体;">事实标准；至于</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">可以实现各种基于</span><span lang="EN-US">Http</span><span style="font-family: 宋体;">的远程调用方法，其优势并不明显。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;" lang="EN-US">@Stateless<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;" lang="EN-US">@Remote<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;" lang="EN-US">@Local<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;" lang="EN-US">@WebService(endpointInterface =
"jfox.test.ejb3.webservice.Calculator")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;" lang="EN-US">public class CalculatorBean
implements CalculatorRemote, CalculatorLocal {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;" lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>public int add(int x, int y) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return x + y;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;" lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>public int subtract(int x, int y) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return x - y;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;" lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 宋体;" lang="EN-US">}<o:p></o:p></span></p>
<h2><span lang="EN-US">4.6 </span><span style="font-family: 黑体;">集成第三方框架</span></h2>
<p class="MsoNormal"><span style="font-family: 宋体;">如果需要集成第三方框架的时候，估计您需要</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">了，当然前提是</span><span lang="EN-US">Spring </span><span style="font-family: 宋体;">已经给出很好的集成方案；而如果采用</span><span lang="EN-US">EJB</span><span style="font-family: 宋体;">，则需要视特定的应用服务器了，推荐当类库来用，或者使用</span><span lang="EN-US">context
listener</span><span style="font-family: 宋体;">来启动，是在不行，只能基于特定的应用服务器来进行集成，一般来说，应用服务器均提供了</span><span lang="EN-US">JMX</span><span style="font-family: 宋体;">集成能力。</span></p>
<h1><span style="font-size: 16pt; line-height: 240%;" lang="EN-US">5. </span><span style="font-size: 16pt; line-height: 240%; font-family: 宋体;">总结</span><span style="font-size: 16pt; line-height: 240%;" lang="EN-US"><o:p></o:p></span></h1>
<p class="MsoNormal"><span style="font-family: 宋体;">纵观人类历史，官方过于强势，则必然官逼民反；而民间力量过于强大，社会必将不稳定，这都是我们不愿看到的，在技术世界里也一样。对于</span><span lang="EN-US">EJB3</span><span style="font-family: 宋体;">和</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">这两种方案，</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">现在处于压倒性的优势一方，希望</span><span lang="EN-US">EJB3</span><span style="font-family: 宋体;">的出现，一来能为官方挽回一些失去的领地，二来也能继续引发更多的探讨，不再拘束于一家之言，只有百家争鸣的环境，才能让开发人员和架构人员对企业应用的构建认识得更加完善，所以最好的方式是</span><span lang="EN-US">EJB3</span><span style="font-family: 宋体;">和</span><span lang="EN-US">Spring</span><span style="font-family: 宋体;">互相促进，和谐发展。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">期待一个轻量的真正以开发需求为中心的</span><span lang="EN-US">EJB3</span><span style="font-family: 宋体;">应用服务器的出现，为疲软的</span><span lang="EN-US">EJB</span><span style="font-family: 宋体;">市场注入新的活力</span><span lang="EN-US">!</span></p>
<p class="MsoNormal"><a href="http://www.infoq.com/cn/articles/ejb3-spring-compare">Infoq链接:&nbsp; http://www.infoq.com/cn/articles/ejb3-spring-compare</a><br><span lang="EN-US"></span></p>
<p class="MsoNormal"><span lang="EN-US"><br></span></p><img src ="http://www.blogjava.net/jfox/aggbug/107800.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jfox/" target="_blank">JFox</a> 2007-04-01 23:39 <a href="http://www.blogjava.net/jfox/archive/2007/04/01/107800.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>