注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络软件与程序设计JAVA及其相关J2EE核心模式(原书第2版)

J2EE核心模式(原书第2版)

J2EE核心模式(原书第2版)

定 价:¥55.00

作 者: (美)Deepak Alur,(美)John Crupi,(美)Dan Malks著;刘天北等译;刘天北译
出版社: 机械工业出版社
丛编项: Sun公司核心技术丛书
标 签: J2EE

ISBN: 9787111159421 出版时间: 2005-03-01 包装: 平装
开本: 24cm 页数: 500 字数:  

内容简介

  本书讲解使用J2EE核心技术实现企业应用过程中的模式、最佳实践、设计策略以及经过验证的解决方案,涵盖了JSP、servlet、EJB、JMS等技术,其中J2EE模式目录包括21个模式以及大量策略,帮助读者迅速熟练掌握J2EE技术,从而构建出健壮、高效的企业应用。本书是计算机应用开发人员、架构师、技术经理等人员的必备参考书。本书前言译者序为一部由GradyBooch和MartinFowler作序的作品写序言,这个念头本身就足够荒谬和僭越,不啻于在莎翁之后再写一个关于丹麦王子复仇的剧本。大师们的判断是中肯而毫不含糊的:“没有这本书,就别开发EJB。”他们的担保足以确认本书在其论域中舍我其谁的地位。是的,这就是“那本”J2EE书。当然,对于广大中国开发者而言,我们早就已经在“没有这本书”的条件下开发了大量J2EE乃至EJB应用系统。那些波折的、不乏磨难的开发历程似乎使不少人具备了一种不无理由的自信,在掌握了若干API细节、若干应用服务器配置诀窍、若干框架类库用法之后,他们或是公开、或是暗自地把自己当成了当之无愧的Java企业开发专家。—不,这些话没有任何揶揄的意思:我们想说的其实是,本书恰恰是为以上这一类开发者写的。对于他们想成为“Java企业开发专家”的隐秘欲望,本书就是最大限度的补救和成全。如果说,此前的各种教程都是在介绍J2EE开发中的“内容”要素—也就是,教给我们“做什么”的话,本书关注的则是这里的“形式”要素,即“怎样做”才能开发出高效的、优雅的J2EE系统。读者从中学到的,将不仅仅是“J2EE技术”,而是“如何使用J2EE技术进行设计”。换句话说,如果你以前没有进行过J2EE实践,但明早将应聘一个需要“1年J2EE开发经验”的职位,本书中不包含你今晚要彻夜吞咽的那一类知识;相反,如果你,这位未来的“Java企业开发专家”,追求的职位是“资深Java应用系统架构师”,如果你预料到未来的上司明天将问起“怎样实现访问控制”、“何时采用细粒度的接口设计”等“高阶”问题,那么恭喜你,今晚—乃至今后—阅读本书,你选对了补课的读物。作为本书第1版的忠实读者,我们(半是欣喜、半是惊讶地)发现,眼前的这部第2版构成了全新的阅读体验。作者们按照最新版J2EE技术规范(尤其是EJB2.1)全面修订了技术细节;根据模式社区的研究交流,作者们补入了若干模式;即使是一些不涉及技术更新的部分,论述方式、示例也完全不同于第1版;原有的PSA项目(第1版“尾声”一章)融入了其余各章的“示例代码”部分;而新增的讨论“微架构”的尾声、对WebService等技术的关注、对各种的持久化方案(定制持久化、EJB、JDO等)的深入讨论,都体现出作者们对本书新版的大量投入。受益于本书有年,在此,我们想冒昧地为本书的中国读者们建议一条高效的阅读路径:与第1章相比,第5章“J2EE模式概览”是读者更合理的起步点。请特别关注其中对“分层”、“术语”和模式/策略区别的讨论,这些都是贯穿全书的重要概念!其次,应该通读第2章“表现层设计考虑和不佳实践”和第3章“业务层设计考虑和不佳实践”:即使你不打算使用任何模式,甚至,即使你根本不关心J2EE开发,只要你的工作与分布式企业应用系统有关,这两章涉及的问题都是你迟早会遇到的。至于每个具体模式本身,我们则推荐读者留意其中详尽的“策略”部分和那些散布其中的“设计手记”。前者讨论了对同一个模式的多种实现方案,后者则突出介绍了特定开发领域的一些核心概念和考虑。一部英文技术论著在汉语中的旅行,永远是一段难以捉摸的行程。对于本书的汉语译者,“技术难度”并非挑战:全书讨论的正是译者们最为熟知的一个领域,所以我们能够负责任地说,在这个中译本里,没有任何技术细节会因为译者的无知或生疏而发生变形或曲解。这次翻译的原则和前提是对原文的彻底领会。事实上,译者在翻译工作中遇到的困难主要发生在“语汇”层面。简单地说,J2EE专著的译者总要面对“翻,还是不翻”的两难处境:对象、函数的名称,UML图中的各种元素,这些内容由英语表示早就是约定俗成,即使是英语程度略低的开发者大概也都能读懂,所以,在读者能够理解的部分尽可能保留原文似乎是一种合理的做法—毕竟开发工作最终是与代码有关,而代码则肯定是要用“英文”的。但在另一方面,翻译的责任就在于让不谙英文的读者也能通达作品,如果译文中大量段落(不包括示例代码)都仍保留为英文或“类英文”,那么读者也就无法直观地获得原文包含的信息。反复权衡之后,在这个译本中译者的解决方式还是折衷的。工作中我们采取了以下原则:1)术语尽可能采用通用文献定译,不自创译法。对于各个模式的名称、模式文档模板各部分名称、重构手法名称,我们参考了李英军等译《设计模式》(机械工业出版社,2000年)、熊节等译《重构》(中国电力出版社,2003年)等译作,以及IBMDeveloperWorks中文网站的部分资源。2)本领域的一些常见术语,如果没有定译,本书也不自创新语,强译为中文,而是保留英文原字。这一类的术语包括:applet、servlet、bean、JavaBean、entitybean、sessionbean、EJB、finder、Context、cookie、RowSet、null、scriptlet、WebService。根据我们的观察,国内的开发者在日常工作中已经习惯按原文使用以上术语。在一些情况下,我们也以注释形式澄清了这些术语的用法。另外,一些非常直观的英文表达方式,比如“versus/vs”(“AversusB”即“A对B”、“A与B相比较/对照”),我们也径用原文—改为汉语既罗嗦,也不直观。3)模式中的对象名称,往往按照代码风格命名,比如“BusinessObject”、“CustomerTO”等。如果对此完全不加翻译,那么很多充斥这类表达的段落就很难理解。我们的原则是,在每个自然段第一次出现某个这类表达方式时,用括号注明,比如“BusinessObject(业务对象)”、“CustomerTO(客户传输对象)”等。希望这个做法能够维持易懂和简洁之间的平衡。4)书中示例代码占有相当大的比重,而代码注释则是理解这些代码的关键。我们把所有代码注释译为中文。而对在视图中显示特定结果的代码(比如调试信息等),我们没有改为中文,只是在必要时对输出信息的含义加以注解。如果读者更信赖代码原貌,还可以从本书官方网http://www.corej2eepatterns.com/下载原始代码。5)原书不包含注解,目前的所有注解都是译注。6)原书申义未畅处,译文中以方括号[]加以解释、补足,略去生涩。这与上面三条原则一样,都类似于在原作讲话时的插嘴—但翻译任务本身,似乎本就已经是一种“插嘴”了。在博学的读者看来,有时候译者或许还不如保持体面的沉默—但我们只能力图做到插嘴而不多嘴。7)原书引用了Apache项目的若干代码,所以附录中包含Apache软件授权协议一页。中译本照录了这份法律文件,未加翻译。8)几个关键术语的译名考虑:*application:一般译为“应用程序”或“应用”。本书中这个词单独出现时,往往指的是“企业应用”,亦即企业信息应用系统。考虑到“应用程序”容易被理解为“桌面程序(desktopapplication)”,在该词含有“企业应用”意味时,我们译为“应用系统”,其他情况下则译为“应用”,以示区别。*client:译为“客户端”。但本书中所说的“客户端”常常是指特定组件的调用者,不一定是“桌面程序客户端”,反倒很可能本身也是另一种组件、甚至一个子系统。希望读者注意该词在书中的用法。*POJO:软件方法论大师MartinFowler在《PatternsofEnterpriseApplicationArchitecture》(PEAA)中创造的说法,是plainoldJavaobject的缩写,指普通Java对象(而不是EJB等组件)。中译本仍采用“POJO”名称。*enterprisebean:直译为“企业bean”,在本书中就是“enterpriseJavaBean/EJB”的另一说法。为了直观,我们统一译为“EJB”。*tier/layer:字面上都是“层”/“层次”。本书中“tier”指的往往是“架构”意义上的分层,比如“表现层”、“业务层”、“集成层”等,而“layer”既分享了前者的含义,有时也指tier内部的中间层次,比如“会话门面”就构成了客户端和业务服务之间的一个“layer”。这两种意思实在很难区分,中译本只能都译为“层”、“层次”。希望读者在阅读中体察这种细微差别。*delegate:是设计模式中的重要概念。一般译为“委派”。但在我们看来,这个译法还不完整,因为“委派”在汉语中只是动词,而delegate往往还充当名词。这次中译本的做法是,动词delegate仍译为“委派”,比如“A把功能F委派给业务层的B”,而名词delegate则译为“代表”,比如“B是A在业务层的代表”。希望读者体察,并推荐更好的译法。原书中所有模式、重构手法、策略的名称以斜体标出,要点以黑体标出。中译本一仍其旧。原书经多人、多版修订完成,难免有错漏、乱排之处。译者根据本书官方网站的最新勘误表订正,并结合参照本书第1版《CoreJ2EEPatterns:BestPracticesandDesignStrategies》(AddisonWesley,2001),另外修正了数十处错误。

作者简介

  Deepak Alur是Sun Java中心的企业Java架构师,具有14年以上的开发经验。他的主要研究兴趣在于利用面向对象技术、模式、Java和J2EE技术完成大型企业应用的架构、设计和实现。 John Crupi是Sun Java中心的杰出工程师和首度Java架构,他有17年以上的分布式对象开发经验,他的主要研究兴趣在于创建可重用的、可扩展的J2EE架构,以及进一步提升J2EE模式的水准。 Dan Malks是Sun Java中心的主任工程师。他有16年以上的开发经验,他的主要研究兴趣在于面向对象技术以及这种技术在企业级的、基于Web Service的项目中的应用。他发表过很多作品,其中既有在行业杂志上发表的论文,也有讨论Jave、J2EE技术及模式的专著。

图书目录

第一部分  模式和J2EE
第1章  导论      
什么是J2EE        
什么是模式        
历史回顾        
模式的定义        
模式的分类        
J2EE模式目录        
演化过程        
怎样使用J2EE模式目录        
使用模式的益处        
模式、框架和重用        
小结        
第2章  表现层设计考虑和不佳实践      
表现层设计考虑      
会话管理      
控制客户端访问        
验证        
助手类属性—完整性和一致性        
表现层不佳实践        
多个视图中都包括控制代码      
把表现层的数据结构暴露给业务层      
把表现层数据结构暴露给业务领域对象      
允许重复提交表单      
把敏感资源暴露给客户端的直接访问      
假定 <jsp:setProperty> 会重置Bean属性      
创建出“胖控制器”      
把视图助手当成scriplet使用      
第3章  业务层设计考虑和不佳实践      
业务层设计考虑      
使用session bean      
使用entity bean        
缓存EJB的远程引用和句柄      
业务层和集成层不佳实践      
把对象模型直接映射为entity bean模型      
把关系型模型直接映射为entity bean模型      
把每个用例映射为一个session bean      
通过Getter/Setter方法暴露EJB的所有属性        
在客户端中包括服务寻址代码      
把entity bean当成只读对象使用      
把entity bean当成细粒度对象使用      
存储entity-bean的整个从属对象拓扑结构      
把EJB相关的异常暴露给非EJB客户端      
使用entity bean finder方法返回大型结果集      
客户端负责聚合来自业务组件的数据      
把EJB用于长时间持续的事务      
每次调用无状态session bean都要重建对话状态      
第4章  J2EE重构      
表现层的重构        
引入控制器      
引入同步器令牌      
隔离不同逻辑      
对业务层隐藏表现细节      
去除视图中的转换        
对客户端隐藏资源      
业务层和集成层的重构        
用session bean包装entity bean        
引入业务代表        
合并session bean        
减少entity bean之间的通信        
将业务逻辑移至session bean        
一般的重构        
分离数据访问代码        
按层重构系统架构      
使用连接池        
第二部分  J2EE模式目录
第5章  J2EE模式概览      
什么是模式        
发现模式      
模式 vs. 策略      
分层思路      
J2EE模式      
表现层模式        
业务层模式      
集成层模式      
J2EE模式目录指南      
术语        
UML的使用      
模式模板      
J2EE模式关系        
与现有其他模式的关系      
模式路线图      
小结      
第6章  表现层模式      
拦截过滤器      
问题        
约束        
解决方案        
效果        
相关模式    
前端控制器        
问题        
约束        
解决方案        
效果        
相关模式        
Context对象      
问题      
约束        
解决方案        
效果      
相关模式        
应用控制器        
问题        
约束        
解决方案      
效果        
相关模式        
视图助手      
问题        
约束        
解决方案        
效果        
相关模式        
复合视图        
问题      
约束      
解决方案        
效果        
示例代码        
相关模式        
服务到工作者        
问题        
约束        
解决方案      
效果        
示例代码        
相关模式      
分配器视图        
问题        
约束        
解决方案        
效果        
示例代码        
相关模式        
第7章  业务层模式      
业务代表        
问题        
约束        
解决方案        
效果        
示例代码        
相关模式        
服务定位器        
问题        
约束        
解决方案        
效果        
示例代码        
相关模式        
会话门面        
问题        
约束      
解决方案        
效果        
示例代码      
相关模式        
应用服务        
问题        
约束        
解决方案        
效果        
示例代码        
相关模式        
业务对象        
问题        
约束      
解决方案        
效果        
示例代码        
相关模式        
复合实体        
问题        
约束        
解决方案        
效果        
示例代码        
相关模式        
传输对象        
问题        
约束      
解决方案        
效果        
示例代码        
相关模式        
传输对象组装器        
问题        
约束        
解决方案        
效果        
示例代码        
相关模式        
值列表处理器        
问题        
约束        
解决方案        
效果        
示例代码        
相关模式        
第8章  集成层模式        
数据访问对象        
问题        
约束        
解决方案        
效果        
相关模式        
服务激活器        
问题        
约束        
解决方案      
效果        
相关模式        
业务领域存储        
问题        
约束        
解决方案        
效果        
相关模式        
Web Service中转        
问题        
约束        
解决方案      
效果        
相关模式        
尾声        
Web Worker微架构纵览        
工作流简介        
Web Worker微架构        
问题      
约束      
解决方案        
效果        
参考书目        
Apache软件授权协议,1.1版        
索引        

本目录推荐