首页>参考读物>计算机科学与技术>软件与程序设计

J2EE快速开发
作者 : Alan Monnox
译者 : 武欣 董怡然 贾顺林 等
出版日期 : 2005-12-21
ISBN : 7-111-17567-0
定价 : 35.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 271
开本 : 16开
原书名 : Rapid J2EE Development: An Adaptive Foundation for Enterprise Applications
原出版社: Hewlett-Packard
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

虽说J2EE是当今企业级开发的主要平台,但也很难根据当前业务需求很快地发布J2EE解决方案。本书给出了可以贯穿整个项目周期的完整、实用的快速开发基础,其中介绍的最佳实践和工具不仅可以加速开发,而且还有助于开发人员更好地适应项目不断增加的复杂度和不断的修改。读者将学习如何充分应用迭代开发、模型驱动架构(MDA)、代码生成工具、面向方面编程(AOP)、测试驱动开发等等。此外,本书还介绍了:
  ●定义端到端的J2EE开发策略,这些策略可以在不降低软件质量的前提下提高开发速度。
  ●理解设计时的决策是如何影响整个项目进度的。
  ●构建能够促进快速开发的敏捷应用架构。
  ●使用UML模型流线化系统设计和验证。
  ●通过代码生成和对象-关系映射加速数据库开发。
  ●实用的测试驱动开发方法,包括构建自动化的单元测试套件以及使用模拟对象进行内部测试。
  ●充分发挥Eclipse和其他IDE的功能。
  
  如果你是J2EE开发人员、项目负责人或经理,可能经常会处于快速发布高质量应用程序的压力之下,本书提供了所有必需的技巧和资源。

图书特色

图书前言

“三个月,否则你就完了!”
  这是在我很久以前参加的一个会议的主发言人的开场白。该发言人认为,三个月是将想法变成真正产品或解决方案的期限。超过三个月,这个想法就会过时,就会由于竞争被淘汰。
  这个发言人演讲的其他部分已经逐渐被我淡忘。我只记得这个发言人后来还谈到了B2B和C2B电子商务的复杂性问题,但是当时我的注意力不在那里。但有一点我印象深刻:业务世界已经进入Internet时代,使用Internet,就有了新的度量单位——Internet时间。
  该发言人的开场白成为了我的软件工程方法的分水岭。质量是所有项目的基础。然而,支持快速变化的需求还带来了另一个极重要的问题:快速。
  当今业务以非常快的速度向前发展,支撑这些业务的企业系统要求与这些业务保持同步。作为软件专业人士,我们不仅要发布高质量的软件,而且还需要减少开发时间。将二种要求结合将提高系统的复杂度。如今,系统框架局限于单个组织的时代已经过去,Internet电子商务的诱惑产生了需要在全球范围进行集成系统的需求。
  满足这些需求并不简单。事实上,从来没有简单过。在Fredrick P. Brooks的著作《No Silver Bullet》中,Brooks指出软件开发技术没有重大突破,因此生产力的提高只在一个数量级内变化[Brooks,1987]。尽管这篇著作是十几年前发表的,但是Brooks的论断还是正确的。尽管这篇著作已经认识到无法解决软件开发的必要复杂问题,但是业务世界还将持续对软件专业人士提出需求,而不管IT行业内在中短期时间内发布高质量软件的历史纪录有多糟糕。进一步分析该问题会发现,这是由于软件开发商之间残酷的竞争造成的,开发商都希望通过高风险的投标获得新项目,从而压倒竞争对手。
  因此,IT专业人士面临着一个障碍。要保持与这些稳步提高的需求以及不断激烈的竞争同步,软件开发人员不得不采用许多新的或已有方法、技术和工具。敏捷方法就是这些无法按时完成项目的人的万能药。“敏捷”这个词深受欢迎,敏捷建模技术的支持者希望能对整个系统开发方法进行革新。同样,也有人在考虑使用除面向对象以外的模式,探寻是否可以应用面向方面编程及其编织(weave)和切入点(crosscut)特性。支持这些新思想和技术是最先进开发工具的基础,这些工具将有助于软件工程师为Java 2平台引入这些技术。
  IT世界是一个快速变化的世界,这不仅仅是针对技术领先性而说的。如今,那位发言人的话更正确了:三个月,否则你就完了。

本书内容
  本书并不是旨在推广能够大大减少项目开发时间的新开发方法,也不是无条件地讨论速度问题,更不是要提高开发速度而牺牲产品质量。相反,本书定义了一系列软件工程实践,旨在提高J2EE项目的效率和质量。
  本书所介绍的大多数技术都是主流技术,并且提供了企业快速解决方案的新视角。此外,并不是所有的技术都适用于所有给定的情景。相反,重点在于用与当今构建性价比优异的高质量解决方案流程相关的新思想和实用技巧武装软件工程师的头脑。

本书的读者对象
  本书适用于任何希望从事J2EE平台企业级别系统开发的人员。无论读者是架构师、设计人员、开发人员或测试人员,本书将有助于您提高工作效率。
  首先,本书首要读者群是软件工程师。不过,同样适用于与开发人员协同工作或管理开发人员的人群。
  软件工程师的称谓应该进一步提高。IT专业人士都喜欢将所有的称谓打印在其商业名片上,从系统分析师到企业架构师,以及质量专家和IT顾问。然而,真正的软件专业人员其实是真正的多面手,他们可以担任一个项目中的多个预定义角色,当然没必要是所有角色。只有这种软件工程师,才是真正的软件工程师。暂且将角色的技术性描述或相关的计算机科学家的称谓放在一边,软件工程师不仅要了解其职业,同样还要了解职业所需的技术,并且可以在项目的不同阶段做出贡献,无论是分析、设计、实现或测试。而且,软件工程师会不断探索改进工作思路。简而言之,软件工程师应该理解自我提高和持续学习是作为IT专业人士的基本要求。
  如果你认为以上介绍适合你,就可以开始阅读本书。

本书的组织结构
  本书内容由四部分组成。
  第一部分:适应性流程
  第1章:J2EE适应性基础。本章介绍创建快速开发的适应性基础的基本概念。
  第2章:快速应用程序开发。本章介绍了软件快速开发相关的常见技术,包括快速开发语言、创建原型的方法以及时间盒式开发方法。
  第3章:应用适应性方法。本章介绍了应用迭代式方法构建软件这种轻权方法的重要性。
  第二部分:敏捷架构
  第4章:快速开发的设计。本章介绍如何根据项目时间框架在设计阶段做出选择。
  第5章:软件建模。本章介绍应用模型构建软件架构,具体包括如何使用UML图实现系统设计的交流、验证和解释。
  第6章:代码生成。本章介绍了主动和被动代码生成的优点。结合示例,详尽介绍了使用XDoclet以及Apache的Velocity模板引擎如何生成企业JavaBean代码制品。
  第7章:快速开发和数据库。数据访问代码的重复性使得这些代码非常适合代码生成技术。本章将介绍如何使用代码生成工具(例如Middlegen)节省开发时间,以及对象-关系映射产品如何方便地将面向对象技术与数据库的关系技术进行混合。
  第8章:模型驱动的架构。本章将模型与代码生成技术相结合来探讨MDA模式。此外,还结合示例,介绍如何使用开源的MDA工具AndroMDA。
  第三部分:快速语言
  第9章:脚本。本章将介绍脚本语言的优点以及与Java兼容的脚本语言Jython。
  第10章:使用规则。本章介绍了使用规则引擎维护业务逻辑的优点。开源工具专家系统shell——Jess作为基于规则语言的例子进行介绍。
  第11章:面向方面编程。面向方面编程(AOP)为模块化相交关注点提供了新的语言结构。它是在应用程序动态应用变化的强大机制。本章还介绍了AOP语言AspectJ和AOP框架AspectWerkz。
  第四部分:动态环境
  第12章:最优构建。本章介绍了使用高效优化流程执行快速开发的重要性。
  第13章:集成式开发环境。本章介绍使用完善的集成式开发工具的必要性。开源工具Eclipse将作为适合J2EE开发环境的例子进行介绍。
  第14章:测试驱动的开发。测试驱动的开发是定义支持需求和设计变化方法的关键。本章将介绍构建自动化单元测试组件的重要性,此外还包括了对能编写单元测试以及测试中使用的模拟对象的JUnit框架的介绍。
  第15章:高效的质量保证。最后一章将介绍如何使用自动化测试工具执行功能测试和性能测试。开源工具HttpUnit和Apache的JMeter将作为示例介绍。

关于软件
  本书所使用示例都尽可能使用了开源软件。这种方法为快速开发技术提供了低成本的选择。在没有可用的开源软件产品时,我选择了一些能够提供免费试用版本的商业产品。只有很少的示例使用了商业产品,这是因为这些商业产品是特定技术的最佳效果产品。

本书所包含的内容
  本书内容部分属于软件管理,部分属于软件开发,如果不应用这两方面的原则,快速开发将无法实现。
  尽管本书内容横跨了整个开发流程,但这并不是项目生命周期的教科书。本书只是给出了一些关于思想、流程和技术的详细信息,读者可以根据需要定制适用于企业级别J2EE开发的流程。
  并不是所有的技术都适用于所有情况。相反,必须熟悉本书给出的思想,然后再根据自己掌握的技巧和经验确定哪些技术能够为特定项目带来益处。
  本书给出的技术和实践包括了所有有代表性的软件工程最佳实践。其用意是介绍更广泛的内容,而不是局限在特定内容上。快速示例也说明了所介绍的概念,这样读者可以快速掌握特定话题。每章都包括了一些链接和参考,通过它们能够找到所介绍技术和实践的更多信息。



致  谢
  很少有书是一个人能完成的,本书也不例外。我要感谢帮助我完成本书编写的所有人,以及帮助我审校草稿,提供建议,或者是鼓励我继续前进的人。
  自从编写本书以来,Prentice Hall的组稿编辑Jill Harry就一直密切关注、帮助我完成编写图书的整个过程。同样,开发编辑Jennifer Blackwell教会我一些如何保持良好写作风格的技巧。
  我有一个伟大的审校团队:Bernard Farrell、Beth Stearns、Madhu Siddalingaiah、Martin Westacott、Satadip Dutta和Shane Griggs。感谢你们当中的所有人,感谢你们严谨的工作态度和花时间回答我的问题。
  非常感谢Ian Macfarlane与我共享他关于本书结构的想法,以及不时帮助我审校这些章节。
  还要感谢Garry Downes,是他不断地为我指出相关的文章、论文和Web站点的位置。Garry提供的意见帮助我在这本书中实现了我所有的想法和概念。
  此外,还要感谢我的父母Sheila和Derek,以及我的姐妹Jill和Ann。尽管他们在地球的另一端,但是他们通过电话和电子邮件给了我巨大的鼓励。
  最后还要感谢我的合伙人Mary,是她在我编写此书时帮我搜集了大量资料,并且一直支持我。谢谢你,Mary,感谢你的耐心、支持以及敏锐的眼光。

作者简介

Alan Monnox:Alan Monnox:  Alan Monnox是HP公司的解决方案架构师,专门负责J2EE平台企业解决方案的开发。他对面向对象项目有15年以上的经验,曾参与过银行系统以及GPS浏览软件等项目的开发。Alan对在更短的时限内开发更高质量的软件具有独到见解,他在面向对象项目开发中所获得的大量经验,为他解决J2EE项目中涉及的复杂性和延期问题提供了必要的知识。

译者简介

武欣 董怡然 贾顺林 等:暂无简介

译者序

J2EE平台开发是一个非常大的话题,这是由于J2EE本身的复杂性和可应用技术的多样性造成的。快速开发则是当今软件行业所追求的目标之一。IT行业,尤其是软件行业的专业人士都知道,软件开发最缺乏的资源就是时间。本书介绍了如何合理利用这个稀缺资源,如何利用不同的方法来实现快速开发。
  本书结合一些开源工具,详尽介绍了如何实现J2EE平台下的快速开发。可以看出,本书作者积累了大量软件开发的经验,能够从软件开发的常规流程角度对问题进行深入浅出的剖析。
  本书结构合理,言简意赅;但是介绍的内容具有一定的难度,对于不熟悉J2EE平台以及快速开发的开发人员来说,需要具有一定的预备知识才能掌握并消化本书介绍的内容。
  从内容上看,本书所涵盖的内容比较丰富,包括:
  1) J2EE适应性流程,其中包括适应性基础的创建、快速应用程序开发方法论以及适应性方法的应用。
  2) 架构介绍,其中包括快速开发所需的设计、建模以及代码生成等。这几项内容都是结合当今最流行的开源工具进行介绍,实用性很强。
  3) 快速开发所使用的语言,包括脚本、规则引擎以及面向方面编程的介绍。其中面向方面编程是最近非常热门的开发模式。
  4) 开发环境的建设,其中包括所使用的IDE工具的选择、脚本语言的使用以及测试驱动的开发方法。
  本书最大的特色是能够结合当今流行的开源工具进行介绍,它非常适于希望从事J2EE开发的编程人员以及负责项目管理、能够影响项目决策的高层人员阅读。
  参与本书翻译工作的有:武欣、董怡然、贾顺林、于苗苗、邓一凡、余勇、罗云峰、吴晓华、张春梅、管丁以及李国梁。本书由武欣统一审校。由于能力有限,加之时间较紧,错误和失误在所难免,恳请专家读者不吝指出。

图书目录

第一部分 适应性流程
第1章 J2EE适应性基础
 11 快速开发的需要
 12 企业挑战
 13 J2EE平台
 14 定义适应性基础
  141 为什么需要基础
  142 为什么是适应性
 15 确定快速开发的基础
  151 人员
  152 工具
  153 框架
  154 实践
  155 标准
  156 流程和过程
  157 培训
  158 持续的改进
 16 基础投资的优点
 17 关键的成功因素
  171 获得开发人员的认可
  172 教育
  173 管理层支持
 18 小结

第2章 快速应用程序开发
 21 RAD的常见元素
  211 时间盒式开发
  212 与领域相关的语言
  213 软件重用
  214 高效率工具
  215 快速建立原型
 22 使用原型
  221 建立原型的方法和原型类型
  222 抛弃式和进化式原型的选择
 23 小结

第3章 应用适应性方法
 31 为什么要使用方法学
 32 瀑布生命周期模型
  321 经典的瀑布模型
  322 优点和缺陷
  323 示例研究
 33 迭代式开发
  331 迭代式方法的优点
  332 迭代式流程
 34 RUP的介绍
  341 用例驱动的流程
  342 在RUP中使用迭代式开发
  343 RUP流程的阶段
  344 原则
  345 RUP的元素
  346 计划
  347 企业项目的支持
  348 RUP的缺点
 35 敏捷方法
 36 XP的介绍
  361 XP实践
  362 计划
  363 设计
  364 编码
  365 测试
  366 XP的角色
  367 对J2EE项目采用XP
 37 小结

第二部分 敏 捷 架 构
第4章 快速开发的设计
 41 架构和设计目标
 42 RAD架构和设计
  421 发挥团队力量
  422 使用最佳特性的框架
  423 预先思考
  424 注意重用设计
  425 应用正交设计
  426 采用分层架构
 43 走近J2EE架构
  431 两层架构和多层架构
  432 企业JavaBean
  433 远程和本地客户端视图
  434 分布式组件
  435 选择合适的设计
  436 以Web为核心的架构
  437 以EJB为核心的架构
 44 小结

第5章 软件建模
 51 为什么要使用模型
  511 交流
  512 验证
 52 架构的多视图
 53 统一建模语言
  531 用例图
  532 活动图
  533 类图
  534 交互图
  535 状态图
  536 部署图和组件图
 54 常见缺陷
 55 建模工具
  551 选择建模工具
  552 UML支持
  553 模型验证
  554 正向工程和反向工程
  555 设计模式支持
 56 为什么建模工具会失败
 57 成功使用建模工具
 58 小结

第6章 代码生成
 61 什么是代码生成
 62 被动代码生成器
  621 使用Apache Velocity生成代码
  622 被动代码生成的优点
 63 主动代码生成器
  631 主动代码生成的优点
  632 主动代码生成器和样板代码
 64 面向属性编程
  641 属性是什么
  642 属性和预处理器指令
  643 J2SE 50的注释与属性
 65 XDoclet的介绍
  651 安装XDoclet
  652 设置Ant构建文件
  653 创建会话bean
 66 使用主动生成的代码
 67 小结

第7章 快速开发和数据库
 71 数据库的困境
  711 企业数据的价值
  712 对象-关系阻抗不匹配
 72 数据访问选项
  721 Java数据库连接
  722 对象/关系映射工具
  723 实体bean
  724 Java数据对象
 73 代码生成和O/R映射
  731 Hibernate的介绍
  732 Middlegen的介绍
 74 设置数据库
  741 MySQL的介绍
  742 创建数据库模式
  743 运行数据库脚本
 75 生成持久层
  751 使用Ant运行Middlegen
  752 Middlegen的GUI
  753 Hibernate O/R映射文档
  754 从映射文档到Java文件
  755 完成往复过程
 76 小结

第8章 模型驱动的架构
 81 MDA工具的承诺
 82 MDA的介绍
  821 平台
  822 模型
  823 映射
 83 MDA与传统建模的比较
  831 优点
  832 缺陷
 84 MDA兼容工具
 85 AndroMDA的介绍
  851 使用XMI与模型交互
  852 PIM标记
  853 MDA Cartridge
  854 Cartridge的剖析
  855 Cartridge模板  
  856 应用AndroMDA  
  857 AndroMDA 30
 86 小结  

第三部分 快 速 语 言
第9章 脚本
 91 为什么用脚本语言
 92 脚本语言的特性
  921 团队经验
  922 跨平台
  923 与Java类的集成 
 93 Jython介绍
  931 安装Jython
  932 运行脚本
  933 Jython语言
  934 与Java集成
  935 构建用户界面原型
  936 创建Jython servlet
 94 Groovy
 95 小结

第10章 使用规则
 101 业务规则
  1011 业务规则是什么
  1012 业务规则的结构
  1013 业务规则的动态特性
 102 软件的业务规则
  1021 硬编码的规则
  1022 规则定义语言
  1023 系统和业务逻辑的紧耦合
  1024 规则重复
 103 规则引擎
  1031 基于规则的系统
  1032 企业系统的规则引擎
 104 Jess的介绍
  1041 安装Jess
  1042 Jess示例
  1043 Jess和Java
 105 Java规则引擎API
 106 企业级别的规则引擎
  1061 企业规则引擎特性
  1062 规则引擎评估条件
 107 小结

第11章 面向方面编程
 111 为什么使用AOP
  1111 正交关注点
  1112 代码混乱和分散
  1113 解决正交关注点的传统方法
 112 AOP的介绍
  1121 概念和术语
  1122 单驼峰和龙
  1123 编织方法
 113 AspectJ的介绍
  1131 AspectJ和Eclipse
  1132 AspectJ编译器
  1133 AspectJ示例
 114 语言和框架
 115 AspectWerkz的介绍
  1151 XML的方面定义
  1152 作为元数据注释的方面
  1153 AspectWerkz编织选项
  1154 面向方面的中间件
 116 应用 “方面”
  1161 开发 “方面”
  1162 产品化 “方面”
  1163 AOP和其他模式
 117 小结

第四部分 动 态 环 境
第12章 最优构建
 121 时间和动作
  1211 软件生产线
  1212 软件开发的时间和动作
 122 构建流程
  1221 设计构建流程
  1222 J2EE构建需求
  1223 热部署是什么
 123 Ant的介绍
 124 使用Ant实现最小构建
  1241 构建依赖的重要性
  1242 定义Ant中的构建依赖关系
 125 使用子项目
 126 查看构建依赖关系
 127 标准的构建目标
 128 项目的组织
  1281 源代码目录
  1282 类库目录
  1283 构建目录
  1284 发布目录
 129 与IDE的集成
 1210 使用Jython扩展Ant
  12101 创建新的Ant任务
  12102 编译Jython类
  12103 测试新任务
 1211 小结

第13章 集成式开发环境
 131 为什么使用IDE
 132 Eclipse的介绍
  1321 Eclipse是什么
  1322 安装和运行Eclipse
  1323 Eclipse工作区
  1324 Eclipse工作台模式
  1325 使用插件工具扩展工作台
 133 企业级开发所需的IDE特性
  1331 代码向导
  1332 编辑器对多文件类型的支持
  1333 Ant集成
  1334 使用代码生成器
  1335 服务器控制和应用程序部署
  1336 建模支持
  1337 数据库访问
 134 使用Eclipse调试J2EE应用程序
  1341 Java平台调试器架构
  1342 调试J2EE应用程序
  1343 热交换
  1344 JSP调试
  1345 调试指南
 135 小结

第14章 测试驱动的开发
 141 测试作为开发模式
  1411 测试驱动开发的优点
  1412 测试驱动开发的代价
 142 JUnit的介绍
 143 生成单元测试
  1431 使用Eclipse生成单元测试
  1432 单元测试和MDA
  1433 使用AndroMDA生成测试用例
 144 彻底测试
  1441 模拟对象是什么
  1442 使用模拟对象
  1443 模拟对象类型
  1444 动态模拟对象
  1445 静态模拟对象和动态模拟对象的选择
 145 小结

第15章 高效的质量保证
 151 质量保证
  1511 项目环境
  1512 测试流程
  1513 RAD项目测试
 152 自动化测试
  1521 J2EE测试的挑战
  1522 自动化测试工具
 153 功能测试
 154 HttpUnit的介绍
  1541 HttpUnit和JUnit
  1542 使用HttpUnit编写测试
 155 负载测试和压力测试
 156 JMeter的介绍
  1561 使用JMeter测试MedRec
  1562 创建一个线程组
  1563 配置元素
  1564 逻辑控制器
  1565 采样器
  1566 侦听器
  1567 执行测试计划
  1568 分析结果
 157 JMeter使用指南
 158 小结
附  录
附录A 缩略词
附录B 参考用书

教学资源推荐
参考读物推荐
作者: [美]西蒙 R.查普尔(Simon R. Chapple) 伊丽•特鲁普(Eilidh Troup) 托斯顿•福斯特(Thorsten Forster) 特伦斯·斯隆(Terence Sloan) 著
作者: [英]大卫·格里菲思(David Griffiths),[英]道恩·格里菲思(Dawn Griffiths) 著
作者: (美) Graham Lee 著