作者:《expert oneonone J2EE Development without EJB 中文版》书籍
出版社:电子工业出版社
出版年:2005-9
评分:9.0
ISBN:9787121016844
所属分类:网络科技
乍一看这本书的名字,Expert one on one J2EE development without EJB并没有给人带来太冲击。毕竟关于J2EE的书太多了,而without EJB看上去有点象是故意挑衅EJB的感觉。一本J2EE的书怎么可能会给人带来信念或思维的冲击呢?但是它做到了,它不仅使自己变成了不朽的经典,也使Rod Johnson成为了我最近一年的新偶像。
--xiecc
你的J2EE项目是否耗费了你太多的时间?它们是否难以调试?它们是否效率不彰?也许你还在使用传统的J2EE方案,然而这种主案太过复杂,而且并非真正面向对象。这里的很多问题都与EJB有关:EJB是一种复杂的技术,但它没有兑现自己曾经的承诺。
在这本实战手册中,你将看到另一种截然不同的方案:没有EJB,却可以创建质量更高的应用程序,所需的时间和成本则更低。你将学会如何充分利用各种实用的技巧和工具,包括时下流行的Spring框架和Hibernate两个开源工具。你将看到如何高效地解决企业级应用的核心问题,例如事务管理、持久化、远程调用和web设计。你将了解这种新的方案给可测试性、性能和可伸缩性带来怎样的影响,并亲身体验轻量级架构如何大幅降低项目开发所需的时间和工作量。
自从servlet、EJB、JSP等J2EE技术发布之初,本书作者Rod Johnson就一直在使用这些技术,他对于这些技术的优劣利弊了如指掌。现在,通过这本书,你将可以面对面地分享他的专家经验。
你将从本书学到……
如何针对自己的应用程序找到最简单、最易维护的架构;在不使用EJB的情况下有效地管理事务;如何利用AOP和loC解决企业级软件开发中的常见问题;web层设计,以web层在设计良好的J2EE应用中的地位;J2EE应用中最有效的数据访问技术,包括JDBC、Hibernate和JDO;如何利用开源产品提升生产率、减少编码量;如何从设计层面上改善性能和可伸缩性。
“传统的J2EE设计思路尤其是EJB日益让架构师和开发者们灰心丧气,我这本书正是为这些人而写的。本书将告诉读者,如何从现在开始用更清晰、更高效的方案去替代EJB,并开始迈向web应用的新时代。”
这本书拥有一大堆“看点”。譬如说,它的作者Rod Johnson拥有10年编写Java程序的经验,目前是Servlet和JDO 2.0两个JSR专家组的成员;再譬如说,书中着力介绍的Spring、Hibernate、WebWork等都是时下流行的开源框架,IoC、AOP之类都是时下流行的概念词汇。而最大的看点就赫然摆在这本书的封面上:“without EJB”。我们曾经在无数的书籍和文章中看到,EJB是J2EE的核心技术之一;而Rod Johnson的这本书竟然宣称,绝大多数的J2EE应用根本不需要EJB。这种近乎挑衅的姿态令任何一个负责的J2EE架构师很难不萌生一探究竟的念头——不论你是打算赞同他还是打算驳斥他。
但所有这些尽皆不是本书最大的价值所在。选择一种架构、一种技术的依据是什么?Rod Johnson认为,应该是基于实践的证据、来自历史项目或亲自试验的经验,而不是任何形式的偶像崇拜或者门户之见。书中谈到了企业应用方方面面的问题和解决办法,而这些方案无一不是这种“循证方法”的产物。除了把这些方案交给读者,Rod Johnson通过这本书希望传达的、更为重要的信息正是“循证”的工作方式——那原本就应该是程序员的工作方式。
第1章 为什么要“j2ee without ejb”
聚光灯下的ejb
j2ee还剩什么?
站在十字路口的j2ee
前行的路
主旋律
轻量级框架和容器
我们还应该使用ejb吗?
小结
第2章 目标
生产率
问题
传统j2ee方案解决生产率问题的办法
提升生产率更好的办法
oo
业务需求的重要性
经验过程的重要性
小结
第3章 各种架构
架构性构件
.业务服务层
向外部暴露业务对象
数据访问层,或eis层
j2ee架构
两种ejb架构
两种非ejb架构
j2ee架构实例
“经典的”j2ee远程ejb架构
本地ejb架构
特制的非ejb架构
“轻量级容器架构”:示例应用系统
确定是否采用应用服务器
小结
第4章 简单性的红利
复杂性的代价
在j2ee应用系统中,导致复杂性产生的原因
导致复杂性的架构性原因
导致复杂性的文化性原因:一个依靠复杂性为生的产业
复杂到什么地步就是过度了?
简单还是幼稚?
刚刚够好就行吗?
变化的趋势
总结
第5章 ejb,五年间
炒作和经验
ejb和j2ee行业
实践中的ejb
一个过时的组件模型
java语言的进步
.net的挑战
web service
敏捷方法学的兴起
关于ejb目标的混淆
从未出现的组件市场
方兴未艾的新范式:aop
ejb, 我们真正需要什么?为什么无状态session bean如此流行?
声明性事务管理
远程调用
集群
线程管理
ejb实例池
资源池
安全
业务对象管理
总结:ejb的服务
ejb,我们不想要什么?
容器的锁定
丑陋的结构,泛滥的类
部署描述文件的地狱
类加载器的地狱
测试
ejb的滥用
复杂的编程模型
简单的事情会变得困难
“让开发人员忽略企业应用的复杂性”,这个目标现实吗?
生产率的损失
可移植性的问题
ejb能浴火重生吗?
工具支持
ejb 3.0
神话与谬论
jee == ejb
使用ejb的可疑论据
继续前进
moving forward
选择是否使用ejb
传统的知识
今天的选择
后ejb时代的舆论
标准,创新,和开源
小结
第6章 轻量级容器与控制反转
轻量级容器
什么是轻量级容器?
我们到底为什么需要容器?
轻量级容器 vs. ejb容器
ejb的好处
管理业务对象
接口与实现的分离
ejb:不完善的解决方案
控制反转
ioc实现策略
ioc容器
ioc容器间的移植
对代码风格、测试以及开发过程的影响
代码风格
可测试性
开发过程
使用企业级服务
小结
第7章 spring框架简介
来历与动机
一个分层的应用框架
基础构建模块
j2ee之上的spring
web应用中的spring
核心bean工厂
基础接口
通过xml组装bean
非xml格式的bean声明
组装应用对象
自动装配和依赖检查
构造子决议
生命周期回调
复杂的属性值
资源设置
典型的java/j2ee资源访问
bean容器中的资源声明
工厂bean
spring应用上下文
生命周期回调
信息源
文件资源
bean factory 后处理
小结
第8章 基于aop概念的声明性中间件
aop 101
动机
j2ee中的aop
定义
历史
作为aop子集的ejb
aop实现策略
动态代理
动态字节码生成
java代码生成
使用定制的类加载器
语言扩展
aop实现
aspectj
aspectwerkz
jboss4
spring
nanning
aop联盟
aop设计问题
aop的危险性
aop设计的建议
随意点菜的j2ee
spring中的aop实践
使用proxyfactorybean
便利的factorybean
自动代理
编程用法
使用源码级元数据提供aop之上的抽象
.net范例
概念级元数据 vs. 实现级元数据
编程访问上下文信息
spring范例
ejb 3.0
编程风格的暗含意味
前后一致的命名规范
避免依赖aop基础设施
受控异常和增强
参考资料
书籍
论文
文章和在线资源
小结
第9章 事务管理
上层(high-level)事务管理
传统的j2ee事务管理
j2ee容器作为事务协调器
人见人爱的cmt
直接使用jta
插曲:远程事务传播
轻量级事务基础设施
spring framework的事务管理
事务声明
编程式事务处理
声明式事务管理
事务管理策略
选择j2ee服务器的提示
小结
第10章 持久化
常见持久化策略
持久化模式概览
流行的j2ee数据访问解决方案
选择一种持久化策略
透明持久化和领域对象的行为
java持久化技术简史
java o/r映射解决方案的缓慢成长
entity bean的败笔
实践中的数据访问技术
资源管理
jdbc
ibatis sql映射
jdo
hibernate
数据访问对象(dao)模式
业务对象与数据访问对象
dao和透明持久化
数据访问对象的种类
dao设计中的问题
dao基础设施的问题
使用spring框架进行数据访问
通用的数据访问异常
再论业务对象与数据访问对象的关系
jdbc
ibatis sql映射
jdo
hibernate
小结
第11章 远程调用
经典的j2se远程方案:rmi
访问和暴露rmi服务
用rmi调用器实现透明远程调用
经典的j2ee远程机制:ejb
通信协议
状态管理
访问远程ejb
部署远程ejb
基于wsdl的web services:jax-rpc
访问web services
servlet和ejb端点
轻量级远程方案:hessian和burlap
访问和暴露hessian和burlap服务
小结
第12章 替换其它的ejb服务
线程管理
线程神话
ejb线程模型
ejb实例池
何时需要实例池?
何时不需要实例池
ejb线程机制和缓冲池的替代方案
线程模型
实例池概述
声明性安全
ejb安全模型
ejb模型的缺陷
借助aop的声明式安全
jms和消息驱动bean
小结
第13章 web层设计
目标和体系结构的讨论
web层设计目标
用servlet和jsp定制的mvc
融入整体架构
请求驱动的web mvc框架
struts 1.1
webwork2
spring的web mvc框架
适宜的视图技术
web mvc的其它实现方式
portals和portlets
事件驱动的web mvc框架
小论asp.net
总结
第14章 单元测试与可测试性
为何测试很重要?
单元测试的目标
确保可测试性
编程风格
如何让你的代码难于测试
来自标准库的难题
提高可测试性的技巧
依赖倒置
aop
单元测试技巧
替换
模仿对象
编写有效测试
测试驱动开发(tdd)
好处
对tdd的反对意见
tdd实践
学习tdd
案例研究:spring的经验
测试spring应用程序
对pojo进行测试
spring的抽象带来的好处
何时需要依赖spring api
使用替换配置进行测试
覆盖率分析和其他测试工具
测试生成器
覆盖分析工具
突变测试工具
资源
小结
第15章 性能与可伸缩性
定义
设置清晰的目标
体系结构的选择:影响性能和可伸缩性的关键因素
对象分布、集群和农场
数据访问
其他体系结构方面的问题
不同实现的选择
摆脱ejb服务设施对性能的影响
结果总结
摆脱ejb服务设施对性能的影响
缓存的代码优化
调优和部署
jvm
应用服务器
框架配置
数据库配置
一种循证的性能策略
基准测试
采样(profiling)
诊断
资源
小结
第16章 示例应用系统
pet store(宠物店)业务需求
ibatis jpetstore 3.1
中间层
远程调用机制
可改进的空间
spring jpetstore
中间层
数据访问层
web层
远程机制
编译和部署
war部署中的一些问题
部署spring jpetstore
小结
第17章 结语
回顾
前行
为你的应用选择最佳架构
轻量级容器架构
标准关键词
指导方针
编程风格
控制反转(ioc)和依赖注入
aop
测试
写在最后
索引
《从解构到建构——后现代思想和理论的系谱研究》内容简介:本书在综合考察后现代发展的基本线索、分析各种代表性流派的基础上,提
资深Linux/Unix系统管理专家兼架构师多年一线工作经验结晶,51CTO和ChinaUnix等知名社区联袂推荐。结合实际生产环境,从Linux虚拟
人工智能哲学 本书特色 ◆《人工智能哲学》探讨人工智能会不会问:我是谁,我从哪里来,我要到哪里去? ◆比尔??盖茨、斯蒂芬??霍金、埃隆??马斯克为首的一派认为...
《Python编程:从入门到实践(第2版)》内容简介:本书是针对所有层次Python读者而作的Python入门书。全书分两部分:第一部分介绍用
在你体验Minecraft冒险的同时,学习宝贵的编程技能!如果你很喜欢玩Minecraft,却被游戏中的建造耗费大量时间而困扰,并且你想要
《大学物理教程》是教育部“高等教育面向21世纪教学内容和课程体系改革计划”的研究成果,是“面向21世纪课程教材”、高等教育“
《法治无禁区》内容简介:本书是作者在一线办案的思考与总结,紧密结合当下的司法改革实践,与*前沿的司法理念接轨。不忘初心,面向
人工智能导论 内容简介 本书内容包括:问题求解的基本原理,知识表示,经典逻辑推理,高级知识推理,计算智能,专家系统等。人工智能导论 目录 第1章 绪论1.1 人...
经典实例学设计-UG NX 10.0从入门到精通-(含1DVD) 本书特色 《经典实例学设计UG NX10.0从入门到精通》基于UGNX10.0中文版编写,共9...
为进一步深入贯彻实施《中华人民共和国行政诉讼法》,最高人民法院发布了《关于行政诉讼证据若干问题的规定》。本书即是对《行政
本书系统地介绍了近年来国内外人机界面的最新发展与成果,全书共分6部分,14章。第1部分为概述,介绍了人机界面的定义、起源、发
《职人不足道》内容简介:当大家都在谈论“职人”时,职人本人在谈什么? 近几年,在媒体的神化渲染下,匠人、职人等词处处为用,然
《口水民国:民国名人的笔墨官司》内容简介:本书主要围绕民国时期的口水公案、笔墨官司,详细叙述了民国时期学界、政界、工商界等
《大图景:论生命的起源、意义和宇宙本身》内容简介:作者用天文学、物理学、化学、生物学和哲学的丝线编织成一张宇宙大图景,让我
《我国语言服务市场逆向选择问题治理研究》内容简介:语言服务在推动“一带一路”倡议等国家战略的实施方面发挥着重要作用。但是,
《创新设计:TRIZ发明问题解决理论》认为发明问题解决理论(TRIZ)对“创新”有明确的定义、有较完整且可操作的原理,很适合我国企
ANSYS 14完全自学一本通 本书特色 《ansys14完全自学一本通》是一本理想的自学参考书,适合广大ansys初、中级读者学习使用。既可以作为大中专院校的...
《微课程和多媒体课件设计与制作规范》内容简介:本书共分为三部分,首部分主要介绍文字、声音、图像、视频、动画等视听媒体的运用
数控编程技术228例 本书特色 本书对228个数控机床编程与造型实例进行了分析和讲解,每个编程实例的主要内容有零件分析、工艺分析、工件坐标系的设定、编制加工程序...
《CSS入门经典(第2版)》主要内容:CSSLevel1、2、2.1和3规范的相关知识、操纵文本和选择字体效果的方式、IE6和IE7的Bug及解决方案