﻿<?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-Allan-随笔分类-Book Study</title><link>http://www.blogjava.net/Allan/category/16864.html</link><description>I choose, I like!</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 04:18:07 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 04:18:07 GMT</pubDate><ttl>60</ttl><item><title>Expert One-on-One J2EE Development without EJB 看后感</title><link>http://www.blogjava.net/Allan/archive/2005/12/06/22759.html</link><dc:creator>Allon</dc:creator><author>Allon</author><pubDate>Tue, 06 Dec 2005 11:26:00 GMT</pubDate><guid>http://www.blogjava.net/Allan/archive/2005/12/06/22759.html</guid><wfw:comment>http://www.blogjava.net/Allan/comments/22759.html</wfw:comment><comments>http://www.blogjava.net/Allan/archive/2005/12/06/22759.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Allan/comments/commentRss/22759.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Allan/services/trackbacks/22759.html</trackback:ping><description><![CDATA[<P style="FONT-SIZE: 10.5pt; MARGIN: 0in; FONT-FAMILY: Tahoma; mso-outline-level: 1"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在网上看到这本&lt;&lt;Expert One-on-One J2EE Development without EJB&gt;&gt;书已好长时间了，评价不错，随即买之，用了两个周的时间总算看完了（硬着头皮看完的），感觉就象经受洗礼了一番，好痛苦啊！(看的不太懂，还需修炼一两年)，不过收获还是有的，以前只是用一种局部的、狭隘的眼光去看待整个软件产业的发展趋势，而现在懂得了怎样从宏观的角度去看待技术和软件产业的发展！这本书大部分讲的都是一些理论，实例很少，所以看起来很痛苦，但不乏其中也有一些经验性的思想，摘录一段：“优秀的开发者当然都对智力上的事情具有好奇心，而且也都会为自己使用的技术感到兴致勃勃，但是，只有最出众的开发者，才懂得克制上面这些冲动，服从于实际项目的需要。”</FONT></P>
<P style="FONT-SIZE: 10.5pt; MARGIN: 0in; FONT-FAMILY: Tahoma; mso-outline-level: 1"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 书中着力介绍了Sping、Hibernate、WebWork等都是时下流行的开源框架，Ioc、AOP之类都是时下流行的概念名词。而最大的看点则是“without EJB”，我们曾经在无数的书籍和文章中看到，EJB是J2EE的核心技术之一；而Rod Johnson的这本书竟然宣传，绝大多数的J2EE应用根本不需要EJB。这无疑是向J2EE的架构师们摆起了挑衅的姿态。但所有这些尽皆不是本书的最大的价值所在，选择一种架构、一种技术的依据是什么？Rod Johnson认为，应该是基于实践的证据、来自历史项目或亲自试验的经验，而不是任何形式的偶像崇拜或者门户之见。</FONT></P>
<P style="FONT-SIZE: 10.5pt; MARGIN: 0in; FONT-FAMILY: Tahoma; mso-outline-level: 1"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp; “帕累托法则”，这个法则也常常被称为“80/20(或者90/10)法则”，也就是说：花比较少(10%-20%)的力气就可以解决大部分的问题，而要解决剩下的少部分问题则需要多得多的努力。在软件架构这里，这个法则告诉我们：架构的价值在于为常见的问题找到好的解决方案，而不是一心想要解决更复杂也更罕见的问题。</FONT></P>
<P style="FONT-SIZE: 10.5pt; MARGIN: 0in; FONT-FAMILY: Tahoma; mso-outline-level: 1"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这几年来，在J2EE社群里，WEB层结构出现了两种趋势：以Jakarta的Struts、OpenSymphony的WebWork2和Sping的web MVC框架为代表的请求驱动类型以及Tapestry和JSF是以事件为驱动MVC的类型。Struts的核心概念是：action必须继承org.apache.struts.actionl.Action基类，action是控制器组件，它类似于servlet：可以重用，并且是线程安全的对象。但Struts1.1的标准框架中不提供任何形式的拦截器，虽一个名为SAIF的附加项目则实现了这样的功能，但它的适用的范围还很有限。WebWork2是WebWork全新的改版，它是一个流行的web MVC开源框架，WebWork2最终版在2004年2月发布。它与Struts的不同在于它一直致力于减少应用代码对servlet API的依赖，提升可重用性。Spring提供了一个Web框架，它是建立在Spring的核心概念－IoC的应用上下文之上，并将其扩展到Web环境，与中间层应用上下文之间无缝结合。由于Spring的分层架构，Spring中间层上下文也能容易地集成到不同的Web框架中，在Spring和专用Web框架之间最根本的区别是：Spring将它的Web MVC框架作为总体方案的一部分，因此它被设计为松散耦合，并且无缝的和Spring中间层丰富的IoC和AOP管理功能融为一体。Tapstry是Howard Lewis Ship开发的开源Web MVC框架，它致力于彻底分离java代码和HTML模板的分离。而在2001年的JavaOne大会上，Sun宣布了一个新的JSR：JSF，它的目标是创建一个很适合GUI开发工具的、基于JSP的web MVC框架。JSF最终在2004年3月被发布。JSF采用了基于事件的风格，但它提供了与Tapstry完全不同的编程模型。它的焦点是大量使用JSP标签库来构建表单，并在JSP代码中嵌入验证器和导航规则的引用。Tapstry和JSF都分享了ASP.NET的某些概念：Tapstry偏重于“页面类”，JSF则偏重于动态Web页和工具支持。</FONT></P>
<P style="FONT-SIZE: 10.5pt; MARGIN: 0in; FONT-FAMILY: Tahoma; mso-outline-level: 1"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EJB的强大在于是把组件模型和企业级服务合二为一，使得EJB组件可以通过声明性或者编程性的方式使用企业级服务，但EJB最大的问题不是对于远程调用或是session bean的技术解决方案，关键在于EJB的侵入性太强，用起来又那么复杂。而这正是轻量级容器最重要的优势之一，它是借助控制反转的配置来达成无侵入性的目标的。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></P>
<P style="FONT-SIZE: 10.5pt; MARGIN: 0in; FONT-FAMILY: Tahoma; mso-outline-level: 1"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 就目前软件行业的发展来看：Spring提供了目前最强大的轻量级IoC容器。另外也有其他的开源框架：WebWork、PicoContainer、HiveMind、Nanning Aspects、AspectWerkz、JBoss4、AspectJ。比entity bean优秀的持久化框架包括：JDO、Hibernate、TopLink，对于大多数项目，推荐使用Hibernate或者JDO。在不适合使用O/R映射的时候，还可以通过iBatis数据库层或者Spring提供的JDBC包高效地访问数据。轻量级的IoC容器在实现J2EE应用方面有着巨大的优势，相信IoC将与AOP一道成为下一代J2EE构架的基础。</FONT></P>
<P style="FONT-SIZE: 10.5pt; MARGIN: 0in; FONT-FAMILY: Tahoma; mso-outline-level: 1"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从以前的Sun Java PetStroe和最近的Oracle Virtual J2EE Shopping Mall 等示例应用中可以看出“经典”J2EE架构的特征是将业务对象建模为带远程接口的EJB，并用entity bean来处理持久化，而EJB3.0的出现，不管是“后EJB架构”时代的信徒还是轻量级框架开源项目的崇拜者，我们有理由相信Spring提供的价值是独一无二的，而控制反转(IoC)和AOP是任何“EJB接班人”所必备的。</FONT></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P><img src ="http://www.blogjava.net/Allan/aggbug/22759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Allan/" target="_blank">Allon</a> 2005-12-06 19:26 <a href="http://www.blogjava.net/Allan/archive/2005/12/06/22759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>