作者 | (美)阿卢(Alur/Deepak.)等/刘天北等 |
出版社 | |
出版时间 | 2005-03-01 |
特色:
“Java领域的版图上撒满了各种类库、工具和技术规范。而缺乏的则是把这些内容融合在一起、解决真实情况下的问题的专业能力。本书中的这些模式,成为了J2EE软件建设过程中的智能水泥。——JohnVlissides,《设计模式》的作者之一“《J2EE核心模式》的作者们提取了一组真正实用的模式。他们介绍了应该如何应用这些模式、如何重构你的系统以便从模式中获益。这就像有一个专家组坐在你旁边一样。——GradyBooch,Rational软件公司首席科学家“作者们介绍了大量对于应用架构极有帮助的模式,这是一项了不起的工作。单单是书中的‘重构’部分就值整本书的价钱!”——CraigMcClanahan,Struts首席架构师,JavaServerFaces技术规范组负责人开发者们常常把“学会一种技术”和“学会使用这种技术进行设计”混为一谈。在本书中,SunJava中心的资深架构师们分享了他们多年积累的使用J2EE技术进行设计的经验。本书关注的主要内容,是使用J2EE的核心技术蜒包括JSPTM、Servlet、EJBTM、JMSTMAPI等蜒实现企业应用过程中的模式、*佳实践、设计策略以及经过验证的解决方案。其中的J2EE模式目录包括21个模式以及大量策略,有助于记录、促成运用以上技术的*佳实践。前言自从本书第1版出版以来,关于*初那15个模式,我们收到了大量反馈意见。*近几年来,J2EE模式社区目录服务器(JPCLS)上的活动一直都非常活跃、非常成功,每天都有很多精彩的意见交流。在这段时间里,我们也和客户一起进行了不少重要的大型J2EE架构设计、开发项目。把这段时期的经验和反馈植入到原有模式的更新工作和新模式的归档工作中,也确实是一个费力而艰苦的过程。我们特别关注了反馈中提及*多的内容:对J2EE技术规范和WebService*新版本的支持。我们完全修订、更新了*初的15个模式,使得本书覆盖了J2EE技术1.4版的规范。我们在这些*初的模式中加入了很多新的策略。另外,我们还记录了6种新模式,以便改进模式语言,为构建、理解、使用J2EE框架提供更好的概念抽象。虽然这些模式中的每一个本身都极为实用,但我们还进一步相信,当开发者将其组合起来解决大型问题时,它们更能显出威力。因此在本书的新版中,引入了一个我们正在探究的、与此相关的全新领域,我们称此为“微架构”。所谓“微架构”,就是搭建应用程序和系统的积木块。与列入目录的那些单独模式相比,这个概念是一种更高层面的抽象,它常常表现为一组相互关联的模式组合,用于解决在应用架构中经常重现的一些共通问题。我们乐于把“微架构”当作一种由相互关联的模式组成的网络,由此形成一种现成的解决方案,用于解决一个粒度更大的问题,比如子系统的设计。本版中包括了一个叫WebWorker的微架构。它所解决的问题是:一个J2EE应用怎样与一个工作流系统集成。它特别讨论了使用系统集成模式让工作流系统中的用户与J2EE应用进行交互的问题。本书讲述的是Java2企业版平台(J2EE)的模式。本书新版中记录的J2EE模式,能够用于解决在J2EE平台下进行软件应用开发的设计者常常遇到的那些问题。在这个模式目录中记录的模式都是在设计实战中发现的,正是因为使用了它们,我们才能为自己的客户创建出了成功的J2EE应用。本书描述了很多在J2EE平台下证明可行的解决方案,重点强调了以下核心J2EE技术:JavaServerPages(JSP)、servlet、EnterpriseJavaBeans(EJB)组件、JavaMessageService(JMS,Java消息服务)、JDBC以及JavaNamingandDirectoryInterface(JNDI,Java命名与目录接口)。对于那些在J2EE平台下经常重现的问题,我们通过J2EE模式目录和J2EE重构给出了解决方案。在开发新系统或是改进现有系统的设计时,你可以应用这些想法。本书记录的这些模式能够有助于你迅速熟练地掌握J2EE技术,从而构建出健壮、高效的企业应用。今天,正如以往一样,我们中间有很多人天真地以为,学会了一种技术,也就等于是学会了用这种技术进行设计。诚然,对于利用某一技术进行设计来说,懂得这种技术是成功的重要元素之一。但现在有很多Java图书,对技术细节(比如API的一些专门用法等等)做出了出色的讲解,但对如何应用这种技术却未作深入考察。要想学会设计,就需要实际设计经验,需要和其他开发者一起分享关于*佳实践和不佳实践的知识。本书中传达的经验来自我们的工作实战。我们属于Sun公司的SunJava中心(SJC)咨询机构。在工作当中,我们经常遇到一些情况,因为技术发展过于迅速,设计者和开发者都仍然在奋力理解技术本身,而无暇理解如何使用该项技术进行设计。因此,简单地告诉设计者和开发者怎样写出优秀代码,或是建议他们使用servlet和JSP开发表现层,用EJB组件开发业务层,这都是不够的。那么,在这样的情况下,一个热心的J2EE架构师又怎样才能不单单是学到“做什么”、还能学到“不做什么”呢?哪些实践构成了*佳实践?哪些是不佳实践?怎样完成从问题到设计,再到实现的整个过程?SunJava中心与J2EE模式目录从初创时期以来,SunJava中心的架构师们就在与来自全球的客户一起合作,致力于成功地设计、规划、构建、部署各种不同类型的基于Java和J2EE的系统。SunJava中心是一个快速成长的咨询机构,一直在招募新员工,加入它经验丰富的架构师队伍。目前已经有大量已验证有效的设计和构架,将这些设计经验固化下来并和其他人一起分享,是我们行业的一项重要需要。我们很早就认识到了这种需要,从1999年就开始以模式的形式记录我们在J2EE平台下的工作经验。虽然我们翻阅了各种现有文献,却没能发现有哪个模式目录是专门记载J2EE平台下的模式的。有很多书论及J2EE技术中的一种或多种,出色地介绍了技术,剖析了技术规范中的微妙细节。我们发现其中有些书还提供了一些设计上的考虑思路,因此也特别有益。在2000年6月的JavaOne大会上,我们**次公开发表了我们关于J2EE模式的想法。从那以来,我们收到了来自架构师和开发者的大量热忱反馈。其中一些人表示特别乐意进一步学习模式,还有一些人则说,他们使用过这些模式,只不过没有加以命名、也没有记录下来罢了。人们体现出来的对J2EE模式的兴趣鼓励我们进行进一步的工作。因此,我们整理出了J2EE模式目录,在2001年3月,这个目录的beta版通过Java开发者联盟(JDC)首次公布给了J2EE社区。基于整个社区的大量反馈,那一份beta版的文稿*终发展成了你现在见到的这本书。我们希望这些在J2EE平台下的模式、*佳实践、策略、不佳实践和重构能让大家从中受益。本书的讨论范围本书讨论的内容包括:*在J2EE平台下使用模式。基于我们在J2EE平台的经验,我们编纂了本书中的模式目录。这一份J2EE模式目录描述了在J2EE平台下架构和设计应用的*佳实践。本书着重考察了以下J2EE技术:servlet、JSP、EJB组件和JMS。*通过*佳实践来设计应用了servlet、JSP、EJB组件和JMS技术的应用系统。仅仅学会了技术本身和API还不足够,同样重要的是要学会怎样使用技术进行设计。我们记录了在我们的经验中应用这些技术的*佳实践。*防止在J2EE平台的设计和架构中“重新发明轮子”。模式鼓励设计的重用。重用现成的解决方案,能够缩短设计开发应用程序的周期—这也当然包括J2EE应用。*鉴别出现存系统中的不佳实践,并利用J2EE模式重构这些设计,以形成更好的解决方案。知道哪些做法有效,这是一件好事。但知道哪些做法无效也同样重要。我们在本书中记录了自己在设计J2EE应用时遇到的一些不佳实践。本书不讨论的内容本书没有讨论以下内容:*如何使用Java或J2EE技术编程本书讨论的不是编程。虽然很多内容都基于J2EE技术,但我们没有描述API细节。如果你希望学习Java编程,或是学习使用J2EE中的任何一种技术,现有很多种出色的著作,还有不少在线资源,都可以作为教程。如果你想要学习某一门特定的技术,我们强烈推荐Java官方主http://java.sun.com上的各种在线教程。J2EE技术的官方技术规范也可通过Java主页获得。*采用哪种开发过程和方法论我们并不特别推荐任何一种开发过程或方法论,因为本书讨论的内容与这两方面都关系不大。所以,本书不会教授任何可以用于开发项目的过程或方法论。如果你想要学习过程和方法论的话,现已有很多论著讨论各种面向对象的方法论,对于那些轻量级的过程,比如极限编程,也有不少新书论及。*怎样使用统一建模语言(UML)本书不会教你如何使用UML。我们大量地使用了UML(特别是类图和序列图)来记录模式,描述静态和动态交互关系。如果要学习UML,请参考GradyBooch、IvarJacobson和JamesRumbaugh的著作《UML用户指南》[Booch]以及《UML参考手册》[Rumbaugh]。谁应该读这本书本书写给所有热心关注J2EE的人,程序员,架构师,开发者以及技术经理。简单地说,就是任何对在J2EE平台下设计、架构、开发应用程序有点儿兴趣的人。我们力图让这本书成为一部写给J2EE架构师和设计者的培训指南。我们认为良好的设计、架构得当的项目具有很高的重要性,所以我们需要优秀的架构师达到这个水准。对于那些开发者水准参差不齐的开发团队,如果我们把模式、*佳实践和不佳实践都做出详尽的归档,以此在团队中实现知识与经验的共享和传播,这可能会起到难以估价的帮助作用;我们也希望本书能部分地满足类似需求。本书的组织本书的组织分为两部分。**部分**部分“模式和J2EE”是一个关于J2EE和模式的导论。它考察了开发JSP、servlet和EJB时的设计考虑。这一部分也包括了J2EE平台下的不佳实践和重构。第1章“导论”简要地讨论了多个问题,包括模式、J2EE平台、模式的定义以及模式的归类。*后引入了J2EE模式目录。第2章“表现层设计考虑和不佳实践”、第3章“业务层设计考虑和不佳实践”分别讨论了表现层以及业务/集成层的设计考虑和不佳实践。这里所说的设计考虑,是指在J2EE平台下工作时,一个J2EE开发者/设计者/架构师需要考虑的问题。在阅读这两章中的论题时,可以参照其他的多种资源(比如官方技术规范以及一些出色的相关论著)来获得相关问题的一些细节信息。第4章“J2EE重构”考察了一些重构,我们在自己的实际工作中遇到了这些重构,它们也确实帮助我们把原本不够理想的设计提升为更好的方案。这些重构也提供了看待本书其他内容的另一种思路,我们认为这对于模式目录是一种有价值的补充材料。本章体现出MartinFowler和他的著作《重构》[Fowler]对我们的影响。对于熟悉《重构》一书的读者,本章的形式也应该相当眼熟。但是,这一章的内容完全基于J2EE技术,而MartinFowler在他的论著中则是在另一个层面考察重构的。第二部分第二部分“J2EE模式目录”列出了J2EE模式目录。目录中包含的模式构成了本书的核心内容。第5章“J2EE模式概览”,是J2EE模式目录的一个综述。这一章