J2EE反模式
[特价中]基本信息
- 原书名: J2EE AntiPatterns
- 原出版社: John Wiley & Sons
编辑推荐
“书中的真知灼见来自于专家们的成功解决方案,可以助你成功实现J2EE应用。”
--Bill Brown,反模式的布道者。..
内容简介回到顶部↑
书籍
计算机书籍
所谓模式,就是以一种正式模板的形式来描述好的实践做法,而反模式是采用相同的形式来描述不恰当的实践做法。本书不仅指出了许多j2ee开发中存在的反模式及其症状和引发的后果,而且分析了其产生的原因,并至少给出了一种重构方案,指导开发人员逐步转换代码实现,从而得到更好的没计:本书的目的不是想指导开发人员如何完成j2ee设计和开发,而是通过指出应用开发中常犯的错误及修复错误的方法,来指导读者成为更好的j2ee开发人员。.
如今有许多已发布的软件中都存在着大量的bug,运作得十分糟糕。遗憾的是,通常我们很难准确地找出是哪里出了问题,需要做哪些工作才能让情况好转。本书以全新的视角,针对j2ee,为读者奉上了大量找出并修正反模式 (即不好的编码和设计习惯) 的工具。本书作者分析了开发j2ee应用时常犯的错误,并且清楚地指出了该如何进行重构以摆脱困境。
本书首先以模板的形式来介绍某种反模式,描述其症状和后果,并指出其产生的典型原因,然后逐步对代码实现进行转换,从而得到一个更好的设计。对于每一种反模式,作者都提供一些实际的例子和代码,而且至少提供了一种重构方案。读者可以使用这些方案,轻松编写出表现更好、运行更快的j2ee程序。书中涵盖50多种j2ee反模式,其中涉及java编程的许多热点问题:
●误算带宽需求
●jsp会话中有太多数据
●每个servlet中都有公共功能
●消息驱动bean中目标超载
●j2ee服务层次选择不当...
计算机书籍
所谓模式,就是以一种正式模板的形式来描述好的实践做法,而反模式是采用相同的形式来描述不恰当的实践做法。本书不仅指出了许多j2ee开发中存在的反模式及其症状和引发的后果,而且分析了其产生的原因,并至少给出了一种重构方案,指导开发人员逐步转换代码实现,从而得到更好的没计:本书的目的不是想指导开发人员如何完成j2ee设计和开发,而是通过指出应用开发中常犯的错误及修复错误的方法,来指导读者成为更好的j2ee开发人员。.
如今有许多已发布的软件中都存在着大量的bug,运作得十分糟糕。遗憾的是,通常我们很难准确地找出是哪里出了问题,需要做哪些工作才能让情况好转。本书以全新的视角,针对j2ee,为读者奉上了大量找出并修正反模式 (即不好的编码和设计习惯) 的工具。本书作者分析了开发j2ee应用时常犯的错误,并且清楚地指出了该如何进行重构以摆脱困境。
本书首先以模板的形式来介绍某种反模式,描述其症状和后果,并指出其产生的典型原因,然后逐步对代码实现进行转换,从而得到一个更好的设计。对于每一种反模式,作者都提供一些实际的例子和代码,而且至少提供了一种重构方案。读者可以使用这些方案,轻松编写出表现更好、运行更快的j2ee程序。书中涵盖50多种j2ee反模式,其中涉及java编程的许多热点问题:
●误算带宽需求
●jsp会话中有太多数据
●每个servlet中都有公共功能
●消息驱动bean中目标超载
●j2ee服务层次选择不当...
作译者回到顶部↑
本书提供作译者介绍
Bill Dudney 是一位Java架构师,他参与构建J2EE应用和软件已有5年,从事分布式计算长达14年。他曾与人合作出版了《Jakarta Pitfalls》。.
Stephen Asbury是《Developing Java EnterpriseApplications》的作者之一,并著有《Enterprise Linuxat Work》,还著有另外4本开发技术方面的图书。..
Joseph K.Krozak 是Krozak信息技术公司技术开发部的副主管,曾为多家位居财富500强的大公司和中等规模的公司提供高级软件解决方案。
KevinWittkopf 作为软件架构师和开发人员已有17年以上,他主.. << 查看详细
Stephen Asbury是《Developing Java EnterpriseApplications》的作者之一,并著有《Enterprise Linuxat Work》,还著有另外4本开发技术方面的图书。..
Joseph K.Krozak 是Krozak信息技术公司技术开发部的副主管,曾为多家位居财富500强的大公司和中等规模的公司提供高级软件解决方案。
KevinWittkopf 作为软件架构师和开发人员已有17年以上,他主.. << 查看详细
目录回到顶部↑
第1章分布与扩展
1.1反模式:本地化数据.
1.2反模式:误解数据需求
1.3反模式:误算带宽需求
1.4反模式:超负荷运转的网络中心
1.5反模式:手持利斧乱砍一气的人
1.6重构方案
1.6.1提前规划
1.6.2选择适当的数据体系架构
1.6.3划分数据和工作
1.6.4为将来扩展做出规划(企业规模的面向对象)
1.6.5规划实际的网络需求
1.6.6使用特殊化网络
1.6.7务求谨慎
1.6.8丢掉有问题的硬件
第2章持久存储
2.1反模式:挖掘机
2.2反模式:碾压
2.3反模式:数据观点
2.4反模式:窒息
1.1反模式:本地化数据.
1.2反模式:误解数据需求
1.3反模式:误算带宽需求
1.4反模式:超负荷运转的网络中心
1.5反模式:手持利斧乱砍一气的人
1.6重构方案
1.6.1提前规划
1.6.2选择适当的数据体系架构
1.6.3划分数据和工作
1.6.4为将来扩展做出规划(企业规模的面向对象)
1.6.5规划实际的网络需求
1.6.6使用特殊化网络
1.6.7务求谨慎
1.6.8丢掉有问题的硬件
第2章持久存储
2.1反模式:挖掘机
2.2反模式:碾压
2.3反模式:数据观点
2.4反模式:窒息
前言回到顶部↑
如今发布的太多软件往往都是漏洞百出,运作得也很糟糕。遗憾的是,通常很难准确地找出是哪里出了问题,以及需要做哪些工作才能让情况好转。反模式正是衔系在“问题”和“解决方案”之间的“救命线”。.
本书对于如何识别不好的代码以及如何采用J2EE进行设计提供了一些实用的建议,并介绍了可以让代码变得更优秀的方法。在书中,读者将了解到诸多J2EE反模式,这里不仅会给出典型编码和设计错误的形式化定义,还会提供一些存在反模式的实际代码示例。对于每一种反模式,都至少提供了一种重构方案(通常会提供多种重构方案)。对每个反模式的介绍都是一个能让你了解如何让代码变得更好的过程。
在设计和开发任何应用程序时,我们认为,你应当同时兼顾到构建应用的一些正面(模式)和反面(反模式)的例子。我们都想用更好的办法去构建更好的软件,希望能从自己和别人的失败中得到教训。例如,在一个典型的J2EE应用开发中,通常会有一个包含多层的体系架构,数据库层保存应用程序所用的数据,Enterprise JavaBeans(EJB)层要与数据层交互,并包含业务逻辑,Web层则提供用户界面。构建各个层时犯错误的机会是很多的。一种典型的错误就是让Web层直接与实体EJB交互。采用这种方式编写的应用程序存在很严重的性能问题。随后出现的会话外观(Session Faade)模式 [Alur,Crupi,Malks]可以用来避免所写应用程序性能低下的问题。不过,原来的一些应用程序在编写时并没有使用此模式,所以还需要对这样一些应用程序进行修正。但是你大可不必把原来的代码全盘扔掉,再从头来过,第9章提供了一种称为外观(Faade)的重构模式,其中介绍了可以采取哪些实用步骤来修正性能差的问题。
J2EE中的反模式
J2EE作为一种体系架构,不仅功能相当强大,而且非常灵活。然而与日常生活中的其他情形一样,鱼和熊掌不可兼得。在J2EE中,一方面我们可以在功能和灵活性方面大有收获,但另一方面又不得不放弃简单性。
J2EE领域的覆盖面极广,从数据库访问到基于Web的表示可谓一应俱全。J2EE中的许多库(或部件)本身就已经很复杂了,单是这些库就完全可以用整本书来介绍。在图1中可以看到J2EE所覆盖的一些领域。
本书中所介绍的反模式涉及J2EE的绝大多数概念。几乎J2EE API的每一部分都存在反模式,从数据库访问到使用JavaServer Pages(JSP),无一例外。
图1J2EE概览
反模式
所谓反模式就是重复地应用某些代码或设计,而这些代码或设计会导致不良的后果。这种不良后果可能是性能很差,代码很难维护,甚至是项目完全失败。反模式以一种详细或特定的方法来捕捉代码错误。
本书中的反模式将采用一种模板形式来介绍。通过这个模板,有助于确保得到一致的形式化定义,从而使反模式的学习更为容易。这个模板还提供了一种方法,由此可以从不同视角来阐述反模式的有关信息。有些人可能会从“症状及后果”发现其代码中存在的反模式,还有些人则可能根据“典型原因”找出隐藏的反模式。这个模板由两部分组成,先是一个目录(catalog)项列表,这些目录项都是些短语或名字而已,后面的详细(detail)项列表则较为复杂,其中每一项都会做更为深入的说明。这些目录项和详细项如下所列。
目录项
·也称为。在此列出与该反模式关联的一个或多个替代名。
·常出现的领域。这一项会指出该反模式最有可能出现在哪些领域中。
·重构方案。这一项会列出可以采用哪些适当的重构方案来改进代码和设计,从而消除反模式。
·重构方案类型。这一项会列出针对该反模式可以应用哪些类型的重构方案。
·根本原因。这一项会提供出现该反模式的根本原因。对这些问题做了妥善修正后,就可以很好地避开该反模式。
·不平衡的外力因素。这一项会说明项目中存在哪些不协调或不平衡的外力因素。一种反模式冒出时,往往是因为存在着一些外力,这些外力可能会导致一些问题,而这些问题正是该反模式的根本原因。不过,不要奢望在所有方面都达到平衡。
·奇谈怪论。这一项会引用一些言论,你经常会从一些开发人员或管理人员口中听到这些说法,他们的项目就饱受着反模式之苦。
详细项
本书对于如何识别不好的代码以及如何采用J2EE进行设计提供了一些实用的建议,并介绍了可以让代码变得更优秀的方法。在书中,读者将了解到诸多J2EE反模式,这里不仅会给出典型编码和设计错误的形式化定义,还会提供一些存在反模式的实际代码示例。对于每一种反模式,都至少提供了一种重构方案(通常会提供多种重构方案)。对每个反模式的介绍都是一个能让你了解如何让代码变得更好的过程。
在设计和开发任何应用程序时,我们认为,你应当同时兼顾到构建应用的一些正面(模式)和反面(反模式)的例子。我们都想用更好的办法去构建更好的软件,希望能从自己和别人的失败中得到教训。例如,在一个典型的J2EE应用开发中,通常会有一个包含多层的体系架构,数据库层保存应用程序所用的数据,Enterprise JavaBeans(EJB)层要与数据层交互,并包含业务逻辑,Web层则提供用户界面。构建各个层时犯错误的机会是很多的。一种典型的错误就是让Web层直接与实体EJB交互。采用这种方式编写的应用程序存在很严重的性能问题。随后出现的会话外观(Session Faade)模式 [Alur,Crupi,Malks]可以用来避免所写应用程序性能低下的问题。不过,原来的一些应用程序在编写时并没有使用此模式,所以还需要对这样一些应用程序进行修正。但是你大可不必把原来的代码全盘扔掉,再从头来过,第9章提供了一种称为外观(Faade)的重构模式,其中介绍了可以采取哪些实用步骤来修正性能差的问题。
J2EE中的反模式
J2EE作为一种体系架构,不仅功能相当强大,而且非常灵活。然而与日常生活中的其他情形一样,鱼和熊掌不可兼得。在J2EE中,一方面我们可以在功能和灵活性方面大有收获,但另一方面又不得不放弃简单性。
J2EE领域的覆盖面极广,从数据库访问到基于Web的表示可谓一应俱全。J2EE中的许多库(或部件)本身就已经很复杂了,单是这些库就完全可以用整本书来介绍。在图1中可以看到J2EE所覆盖的一些领域。
本书中所介绍的反模式涉及J2EE的绝大多数概念。几乎J2EE API的每一部分都存在反模式,从数据库访问到使用JavaServer Pages(JSP),无一例外。
图1J2EE概览
反模式
所谓反模式就是重复地应用某些代码或设计,而这些代码或设计会导致不良的后果。这种不良后果可能是性能很差,代码很难维护,甚至是项目完全失败。反模式以一种详细或特定的方法来捕捉代码错误。
本书中的反模式将采用一种模板形式来介绍。通过这个模板,有助于确保得到一致的形式化定义,从而使反模式的学习更为容易。这个模板还提供了一种方法,由此可以从不同视角来阐述反模式的有关信息。有些人可能会从“症状及后果”发现其代码中存在的反模式,还有些人则可能根据“典型原因”找出隐藏的反模式。这个模板由两部分组成,先是一个目录(catalog)项列表,这些目录项都是些短语或名字而已,后面的详细(detail)项列表则较为复杂,其中每一项都会做更为深入的说明。这些目录项和详细项如下所列。
目录项
·也称为。在此列出与该反模式关联的一个或多个替代名。
·常出现的领域。这一项会指出该反模式最有可能出现在哪些领域中。
·重构方案。这一项会列出可以采用哪些适当的重构方案来改进代码和设计,从而消除反模式。
·重构方案类型。这一项会列出针对该反模式可以应用哪些类型的重构方案。
·根本原因。这一项会提供出现该反模式的根本原因。对这些问题做了妥善修正后,就可以很好地避开该反模式。
·不平衡的外力因素。这一项会说明项目中存在哪些不协调或不平衡的外力因素。一种反模式冒出时,往往是因为存在着一些外力,这些外力可能会导致一些问题,而这些问题正是该反模式的根本原因。不过,不要奢望在所有方面都达到平衡。
·奇谈怪论。这一项会引用一些言论,你经常会从一些开发人员或管理人员口中听到这些说法,他们的项目就饱受着反模式之苦。
详细项
序言回到顶部↑
心理学家说,如果一而再、再而三地重复做同一件事情,并希望会有不同的结果出现,这就说明脑子可能有问题了,可以把这定性为一种精神失常。这种情况对于软件开发过程也同样适用。遗憾的是,我们也经常重复着某些设计,却未曾意识到这些设计会招致许多大问题。在这里就可能存在着一些反模式,我们要引以为。所谓“反模式”(AntiPattern),可以认为是以一种正式模板的形式来表述某种不妥当的实践做法。当然,我们也可以用同样的形式来描述好的实践做法,这就是“模式”。因此,反模式就是某种不好的实践做法,它们很常见,因此有必要把它们正式记录下来。.
一项新的技术引入后,许多人可能都希望能了解技术的细节。在J2EE诞生的前3年间,这种情况尤其明显。在此期间,大批有关如何使用J2EE的书籍问世就是一个明证。其中许多书都是在用我们可以理解的某种语言来介绍J2EE规范。不过,随着J2EE越来越成熟,越来越多的开发人员了解了J2EE的细节,并且已经开始尝试应用J2EE,有关J2EE设计的书籍开始出现了。这些书并不是面面俱到地教你如何使用这个技术,而是把目光更多地聚焦在如何用这种技术来进行设计。《Core J2EE Patterns》(中文版《J2EE核心模式》已由机械工业出版社出版。——编者注)就是一例,就是采用模式的形式来关注最佳实践。..
本书的用途很多。一来它可以用来确认那些不好的实践做法,你应当予以避免。二来它可以提供证据,使你确信某种做法确实是不好的实践。三来,如果参加有关设计的会议,你还可以拿书中的名词来说明设计系统时哪些是不该做的。或者,有些开发高手总认为自己的设计无与伦比(不过,除了管理层会受他们的“蒙蔽”外,所有人都很清楚并不是那么回事),如果你对他们的自负很不以为然,也可以拿这本书来杀杀他们的锐气。
阅读本书的许多读者对J2EE可能已经很精通。所以,请不要把它当成一本说教“不要这么做,不要那么做”的书来读,而是应该换个角度。如果你看这本书后有新的想法,“哦,我想原先可能不该那么做”,那就对了,这才是读本书的正确观点。我相信本书的作者都很清楚这一点,因为他们不仅告诉你哪里可能做错了,还解释了如何进行修正。这正是本书的妙处所在。
书中提供了大量绝好的信息。作者用通俗的手法使我们能迅速地理解反模式的实质。正是因为它如此浅显易懂,所以你在进行设计时,完全可以把它当成一个助手放在身边。
最后还要提醒一句,一定要阅读Web服务反模式这一章(第9章)。尽管对于Web服务不乏争议和困惑,但阅读这一章肯定会让你长久受益。尽情地享用这本书吧。——John Crupi,《Core J2EE Patterns》的著作者之一,Sun公司杰出工程师
参加本书翻译的人员有:苏金国、刘瑛、林琪、范松峰、杨健康、张莹、易竞、程龙、卢、江健、丁小峰、陈永志、牛亚峰、高强、何跃强、孙春娟、张伶。...
一项新的技术引入后,许多人可能都希望能了解技术的细节。在J2EE诞生的前3年间,这种情况尤其明显。在此期间,大批有关如何使用J2EE的书籍问世就是一个明证。其中许多书都是在用我们可以理解的某种语言来介绍J2EE规范。不过,随着J2EE越来越成熟,越来越多的开发人员了解了J2EE的细节,并且已经开始尝试应用J2EE,有关J2EE设计的书籍开始出现了。这些书并不是面面俱到地教你如何使用这个技术,而是把目光更多地聚焦在如何用这种技术来进行设计。《Core J2EE Patterns》(中文版《J2EE核心模式》已由机械工业出版社出版。——编者注)就是一例,就是采用模式的形式来关注最佳实践。..
本书的用途很多。一来它可以用来确认那些不好的实践做法,你应当予以避免。二来它可以提供证据,使你确信某种做法确实是不好的实践。三来,如果参加有关设计的会议,你还可以拿书中的名词来说明设计系统时哪些是不该做的。或者,有些开发高手总认为自己的设计无与伦比(不过,除了管理层会受他们的“蒙蔽”外,所有人都很清楚并不是那么回事),如果你对他们的自负很不以为然,也可以拿这本书来杀杀他们的锐气。
阅读本书的许多读者对J2EE可能已经很精通。所以,请不要把它当成一本说教“不要这么做,不要那么做”的书来读,而是应该换个角度。如果你看这本书后有新的想法,“哦,我想原先可能不该那么做”,那就对了,这才是读本书的正确观点。我相信本书的作者都很清楚这一点,因为他们不仅告诉你哪里可能做错了,还解释了如何进行修正。这正是本书的妙处所在。
书中提供了大量绝好的信息。作者用通俗的手法使我们能迅速地理解反模式的实质。正是因为它如此浅显易懂,所以你在进行设计时,完全可以把它当成一个助手放在身边。
最后还要提醒一句,一定要阅读Web服务反模式这一章(第9章)。尽管对于Web服务不乏争议和困惑,但阅读这一章肯定会让你长久受益。尽情地享用这本书吧。——John Crupi,《Core J2EE Patterns》的著作者之一,Sun公司杰出工程师
参加本书翻译的人员有:苏金国、刘瑛、林琪、范松峰、杨健康、张莹、易竞、程龙、卢、江健、丁小峰、陈永志、牛亚峰、高强、何跃强、孙春娟、张伶。...








点击看大图





加载中...
