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

Java技术精髓
作者 : (美)Steven L.Halter, Steven J.Munroe
译者 : 许崇梅 张雪莲 等
出版日期 : 2002-02-01
ISBN : 7-111-09643-6
定价 : 30.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 276
开本 : 16开
原书名 : Essential Java Performance
原出版社:
属性分类: 店面
包含CD :
绝版 : 已绝版
图书简介

本书是一本关于如何调整Java系统性能的书。本书从基本的例子出发逐步引出企业性能中更加复杂的问题,从而方便读者理解Java性能技术。
  书中大量的实践知识可帮助大规模的分布在线多供应商的Java系统正常地,甚至更快地工作。本书会为正在设计或建立企业级Java系统的技术人员节省大量的时间,同时也会给具有一定Java编程基础的读者极大的帮助。

图书前言

为了业务需求使用Sun的Java技术的领域正在迅速地扩大。当然,随着这种扩大,需要在相对新的环境中提出新的性能问题。Java本身就有许多性能缺陷,所以在增加运行业务代码的复杂性和扩大系统规模来满足用户需求的时候,很明显需要一些技术。实际上,即使是有经验的程序员在企业级环境中也会出现性能设计错误。本书的目的就是阐述提高Java程序语言开发的企业级应用程序性能的一些方法。本书从基本例子出发,然后在这些例子的基础上给出企业性能中更加复杂的问题。
  笔者曾经是IBM SanFrancisco工程开发小组的成员(SanFrancisco提供了一个共同的面向对象的基础结构和Java应用程序开发者使用的应用程序逻辑)。我们已经看到了Java平台和San- Francisco的成熟。作为SanFrancisco 性能小组的成员,我们与JVM/IIT技术提供者和开发业务对象框架的领域专家一起工作。这个工作经历使我们深刻地了解到在编写企业级应用程序时应该使用Java技术的哪些部分和不应该使用哪些部分。我们想和IT专业人员一起分享这个经验。
  本书适合于想要在企业级环境中最高效率地使用地的程序员。我们假定读者已经具备了Java编程语言及其语法和常见类库的基础知识。
  本书的组织
  第一部分是本书的基础,它介绍了一般的企业性能和Java特有的企业性能。第1章介绍了一般的企业性能。第2章讨论了一些可以识别性能问题原因的公共工具。第3章给出了关于Java特有的公共性能问题的背景知识。Java有许多强项,如对象、垃圾回收和与C/C++的相似性,但如果使用不正确,它们就会成为Java的缺陷。当阅读完前三章,就可以适当地理解一些思想和概念了,它们提供了有效执行Java的基础,并且帮助理解本书后面部分比较深的内容。
  第二部分详细讨论了Java性能物理性质的特定领域。第4章探讨了本地和远程对象的问题。Java提供了强有力的机制(如RMI),来帮助实现本地对象的编程模型和远程对象的编程模型一样。但是,这个透明性需要一定的开销,它的本质是把对象放置在正确位置上。第5章也被认为是“正确放置对象”概念的一种扩充,但是,这次是根据对象粒度来解决的。也就是说,如何决定哪些对象需要紧密联系在一起和哪些对象应该松散地联系在一起。第6章介绍了瓶颈问题和如何处理这些瓶颈。消除瓶颈是良好执行应用程序的关键。一个瓶颈可以抵消所有编程的最佳努力,使得性能下降。实际上代码中的瓶颈现象是很常见的。
  第三部分提供了关于测试程序的一些信息。第7章概述了Java基准测试工具,并查看了所有工具的深度测量,包括Java虚拟机(JVM)使用的一种持久基础结构和分布式对象基础结构。适当的测试程序对展示企业级应用程序预期的性能数量有很大帮助。第8章扩充了第7章
基准测试的思想,并把它们运用到了应用层。
  第四部分介绍了当前在企业级Java设计中使用的或同它一起使用的4个应用程序环境。第9、10、11和12章分别详细讨论了SanFrancisco、企业级Java Beans、CORBA/Java和Jini环境,并讨论了每种环境中的各种选择如何影响运行在定义环境中的应用程序的性能。
  第五部分介绍了为Java平台概念化应用程序模型的一种方法。第13章评论了使用Java的不同方式和如何使Java适合以下这些环境:网外(Web Out)、网内(Web In)、应用程序连接(Application Glue)、数据库上(Database Up)、应用程序包装(Appliction Wrapper)和对象下(Object Down)。第14章研究了第13章提供的各种环境的性能含义。
  第六部分通过查看增加应用程序规模所涉及的问题和解决方案,总结了本书。第15章检查了内存、磁盘和网络配置对Java应用程序的影响,并且给出了系统调整的一些建议。第16章查看了SMP和Cluster的影响和当扩大应用程序规模时Java环境发生的事情。当增加应用程序复杂性的时候,对Java基础结构就会有越来越大的需求,如 Java堆和垃圾回收。我们也解释了在共享大规模环境中正确地布局、访问和复制对象是多么关键。本书实例代码
  本书提供的例子的完整代码可以在下列FTP地址中下载:
  ftp: //ftp. prenhall. com/ pub/ ptr/ sunsoft_books. w-053/ enterprise_java_performance
  本书英文原书书名:Enterprise Java Perfermance
  本书英文原书书号:ISBN 0-13-017296-0
  本书英文原书出版社网址:www.phptr.com


图书序言

当今世界,大约每十年就会出现一项新技术,这些技术促进了计算机工业的发展,并且使我们重新认识每一件事情。20世纪60年代出现了集成电路。70年代出现了小型计算机技术,80年代PC机诞生了,90年代出现Java。
  90年代是互连网广泛地应用于全世界的年代。Java利用了这个时机来发展自己,就好像是一名冲浪运动员在毛伊岛冲浪一样。在浏览器上运行Java小程序的最初兴奋很快就通过Java传播到了其他平台上。它向下可以移植到嵌入式系统、单元电话上,甚至移植到智能卡上。它向上可以移植到服务器、数据库引擎和主机。今天Java可以支持每一种电气平台。
  但是,Java最成功的领域是在服务器上。这个成功既是显著的又是惊人的。Sun公司已经预料到了Java要从桌面移植到小型设备,最后移植到服务器上。但不是一开始就把自己最坚固的根段放到服务器上。根据这种先见之明,我们看到了企业级系统要求大量的投资,以便稳定地获得供应商独立性、平台无关性、方便的网络库和软件生产力。基于Web的系统使用基于Web的服务器软件会使工作达到最佳的性能。
  当Sun公司意识到使用Java最有效的地方在服务器上,它就立刻改变了自己的开发方向,开始在服务器上使用Java。使用企业级Java Beaus(用于服务器上可重用软件的框架)来扩充Java Beans(客户端组件软件)。为了服务器的性能,再次使用了热点技术。当然,还要创建一个具体的企业JDK配置,如J2EE。
  许多书籍出版商仍然对服务器端Java有着热烈而持续的兴趣。系统设计者或程序员可以发现大量讲解如何建立基于Java的B2B电子商务系统的书籍,但是,却很难发现解释下一层次细节,以及关于如何调整系统的书籍。本书正是讲述这方面知识。
  这本优秀的书籍是由两位有丰富经验的开发者编写的。这两位作者在进行IBM的SanFran- cisco框架开发时获得了他们早期的Java IT经验。这种框架是一种软件的早期版本,它实现企业级Bean现在完成的功能。但是,它可以独立地创建记账和仓库管理软件。因此,作者Steven Halter和 Steven Munroe比其他人有更多的实际经验。他们把自己的经验全部编写到了本书中,等待着读者从中受益。
  本书给出了关于提高使用Java开发企业应用程序性能的许多方法。这些不是玩具测试程序,而是真正的、多变的软件系统。实际上我最喜欢这本书的其中一个原因就是它偏向实际——他们总是给出他们实验过和采用过的建议。
  对于那些需要超过老一套Java性能建议(“对象创建是昂贵的”)的程序员,本书会为业务的需要使用地迅速开发领域提供帮助。本书的实践知识可以帮助大规模的分布在线多供应商的Java系统正常地工作,甚至更快地工作。客户总是希望得到比较好、比较快和比较便宜的东西,Java会提供这一切。如果你正在设计或建立企业级Java系统,那么阅读本书会为你节省大量的时间。                                                         Peter van der Linden
                                 软件工程管理员




作者简介

(美)Steven L.Halter, Steven J.Munroe:暂无简介

译者简介

许崇梅 张雪莲 等:暂无简介

译者序

在计算机书店中,关于Java的书比比皆是。留心研究,不难发现,这些书大体上可分为两类:一类是手册性书籍,基于某种特定Java环境的使用指南;另一类是教程类用书,从语法、语义到语用,由浅入深地讲解。
  现在献给读者的这本译著(英文名为 Enerprise Java Performance)与众不同,它不属于上述的任何一种类型,而是关于如何调整Java系统性能的一本书籍。原书作者是根据他们在开发IBM的SanFrancisco框架时获得的Java实际经验而编写本书的,它的最大特色是,所有的建议及提供的方法都是他们经过反复实验得出的。特别是,本书从基本的例子出发,然后在这个基础上给出了企业性能中更加复杂的问题,这就使得读者有“心有灵犀一点通”的感觉。这一点在其他的Java书中是不多见的。
  译者认为,无论是作为正式教材还是自学用书,本书都是非常优秀的,特别适用于具有一定Java基础并想要在企业级环境中高效率地使用Java的程序员。
  我们深深地感谢我们的家人和朋友。在翻译过程中,他们给予了我们莫大的关心、支持和帮助。
  全书由许崇梅、张雪莲、张勇、鲁金贵、邓勃、钟明辉、董金云、王大军、陈蓓、魏伟、来欣、王建设、文杨、董立伟、田宇明等进行翻译,由许崇梅、张雪莲进行全书的术语、技术问题支持,前导工作室全体工作人员共同完成了本书的翻译、录排、校对等工作。本书最后由许崇梅、张雪莲、钱松统稿。由于时间仓促,且译者的水平有限,在翻译过程中难免会出现一些错误,请读者批评指正。
  如果您在阅读中碰到了什么问题,请同前导工作室联系:qiandao@263.net。我们会尽力解决您的问题。
                                   2001年10月

图书目录

第一部分 概述
第1章 一般性能
1.1 性能与优化
1.2 性能的生命周期
1.2.1 编码前
1.2.2 编码期间
1.2.3 编码后
1.3 性能问题的类型
1.4 简单性能层
1.5 应用程序设计层
1.5.1 不好的设计选择
1.5.2 信息隐藏
1.6 物理层
1.6.1 Java语言及其环境
1.6.2 Java与其他环境的交互
1.6.3 持久Java对象
1.6.4 时间、距离和空间
第2章 识别Java性能的工具
2.1 Java特有的工具
2.1.1 Java分析工具
2.1.2 第三方Java分析工具
2.1.3 简单的计时测量
2.1.4 Verbosegc选项
2.2 PerfMonitor类
2.3 系统工具:Windows NT性能监视器
2.4 本章小结
第3章 Java性能问题涉及的领域
3.1 基本的计时比较
3.2 即时编译和静态编译
3.3 创建和重用对象
3.4 使用常量
3.5 使用字符串
3.6 异常的用法
3.7 循环技术
3.7.1 循环常量
3.7.2 本地变量
3.7.3 尽早地终止循环
3.8 造型技术
3.8.1 避免丢失类信息
3.8.2 避免Instanceof和造型相邻使用
3.8.3 避免不必要的造型和Instanceof
3.9 同步
3.10 垃圾回收
3.11 集合
3.11.1 集合框架
3.11.2 一般用途的实现
3.11.3 向量
3.11.4 哈希表
3.12 本章小结
第二部分 物理性能
第4章 本地/远程问题
4.1 实现远程对象的可能途径
4.1.1 远程方法调用
4.1.2 企业级Java Bean
4.1.3 SanFrancisco的基础层
4.2 远程访问的开销
4.2.1 如何在Java中书写和使用远
程服务程序
4.2.2 改变方法调用的粒度
4.2.3 远程访问的谱线
4.2.4 对象粒度
4.2.5 性能粒度的含义
4.2.6 正确放置数据
4.2.7 对象的亲合力
4.2.8 划分
4.3 本章小结
第5章 粒度
5.1 接口粒度
5.2 实现粒度
5.3 粒度和性能
5.3.1 例1:一个细粒度设计
5.3.2 例2:串行化定单行对象
5.4 本章小结
第6章 瓶颈
6.1 为什么很难避免瓶颈
6.2 同步瓶颈
6.3 加锁瓶颈
6.3.1 对象和加锁
6.3.2 死锁和锁排序
6.4 垃圾回收瓶颈
6.5 分布式垃圾回收
6.6 本章小结
第三部分 基准测试
第7章 Java基准测试概述
7.1 Java测试程序
7.1.1 Pendragon SoffeineMark 3.0
7.1.2 JMark 2.0
7.1.3 VolanoMark 2.1
7.1.4 SPECjvm 98
7.2 一个简单的测试程序
7.3 本章小结
第8章 应用级基准测试
8.1 BOB基准测试
8.1.1 TPC-C概述
8.1.2 BOB结构
8.2 BOB的运行
8.3 BOB的实现
8.3.1 测试程序基础结构
8.3.2 测试程序事务
8.4 测试程序实体
8.5 本章小结
第四部分 应用程序环境
第9章 SanFrancisco及其性能
9.1 SanFrancisco概述
9.2 基础层
9.2.1 基础层对象模型基类
9.2.2 业务对象的生命周期
9.2.3 实体的生命周期
9.2.4 集合和查询
9.2.5 其他基类
9.2.6 基础对象模型服务
9.3 通用业务对象层
9.4 核心业务处理层
9.5 有用的参考资料
9.5.1 有关SanFrancisco的书籍
9.5.2 有关SanFrancisco的文章
9.5.3 有关SanFrancisco的IBM Redbooks
9.6 本章小结
第10章 企业级Java Beans及其性能
10.1 J2EE体系结构和技术
10.2 企业级Java Beans
10.2.1 选择一个实现
10.2.2 EJB的实现及其性能
10.3 EJB体系结构及其性能
10.3.1 Session Bean
10.3.2 Entity Bean
10.3.3 Entity Bean的特点
10.3.4 EJB的粒度
10.3.5 Session Bean和Entity Bean的比较
10.4 EJS中的特性研究
10.5 本章小结
第11章 CORBA及Java
11.1 CORBA概述
11.2 Java IDL
11.3 RMI-IIOP
11.4 RMI over IIOP的性能影响
11.5 本章小结
第12章 Jini及其性能
12.1 Jini概述
12.1.1 查找
12.1.2 发现
12.1.3 租借
12.1.4 远程事件
12.1.5 事务
12.2 Jini中的性能考虑
12.3 本章小结
第五部分 应用程序模型
第13章 Java的使用
13.1 网外
13.2 网内
13.3 应用程序连接
13.4 数据库上
13.5 应用程序包装
13.6 对象下
13.7 组合方法
13.8 本章小结
第14章 性能含义
14.1 网外
14.2 网内
14.3 应用程序连接
14.3.1 字符编码及尾数
14.3.2 远程对象的累积
14.4 应用程序包装
14.4.1 过多的客户交互
14.4.2 容量限制
14.4.3 减少客户一服务器交互
14.5 数据库上
14 6 对象下
14.6.1 过多的客户交互
14.6.2 过多的远程对象交互
14.6.3 过多的中件交互
14.6.4 内存泄漏和对象驻留
14.6.5 过多的垃圾回收
14.7 本章小结
第六部分 扩大应用程序规模
第15章 系统调整
15.1 调整内存和系统
15.1.1 SanFrancisco解决方案
15.1.2 EJB解决方案
15.1.3 调整数据库
15.1.4 操作系统内存分配
15.1.5 平衡内存要求
15.2 磁盘配置
15.3 网络配置
15.4 性能调整的过程
15.5 本章小结
第16章 大规模的影响
16.1 应用程序及其环境
16.1.1 内存
16.1.2 处理器
16.1.3 输入/输出
16.1.4 软件
16.2 大规模的影响
16.3 SMP和堆影响
16.3.1 在SMP上的堆分配和垃圾回收
16.3.2 为什么需要多重服务器
16.3.3 对象的布局、访问和复制
16.4 本章小结
附录A 使用的机器


教学资源推荐
参考读物推荐
作者: [西]葛罗瑞亚·布埃诺·加西亚(Gloria Bueno Garcia) 奥斯卡·德尼茨·苏亚雷斯(Oscar Deniz Suarez) 何塞·路易斯·埃斯皮诺萨·阿兰达(Jose Luis Espinosa Aranda) 等著
作者: 翟周伟 著
作者: 深圳中科呼图信息技术有限公司 编著