内容简介
本书以Java性能调优为主线,系统地阐述了与Java性能优化相关的知识与技巧。本书共6章,先后从软件设计、软件编码、JVM调优及程序故障排除等方面介绍针对Java程序的优化方法。第1章介绍性能的基本概念、木桶原理与Amdahl定律、系统调优的过程和注意事项;第2章从设计层面介绍与性能相关的设计模式及常用优化组件;第3章从代码层面介绍如何编写高性能的Java程序;第4章介绍并进行开发和如何通过多线程提高系统性能;第5章立足于JVM虚拟机层面,介绍如何通过设置合理的JVM参数提升Java程序的性能;第6章为工具篇,介绍了获取和监控程序或系统性能指标的各种工具,包括相关的故障排查工具。本书适合所有Java程序员、软件设计师、架构师及软件开发爱好者,对于有一定经验的Java工程师,本书更能帮助他突破技术瓶颈,深入Java内核开发!
前言
Java是目前应用最为广泛的软件开发平台之一。随着Java及Java社区的不断壮大,Java早已不再是一门简单的计算机语言了,它更是一个平台、一种文化、一个社区。 作为一个平台,JVM虚拟机起着举足轻重的作用。除了Java语言,任何一种能够被编译成字节码的计算机语言都属于Java这个平台。Groovy、Scala和JRuby等都是Java平台的一部分,它们依赖于JVM虚拟机,同时,Java平台也因为它们而变得更加丰富多彩。 作为一种文化,Java几乎成为“开源”的代名词。在Java平台上,有大量的开源软件和框架,如Tomcat、Struts、Hibernate和Spring等。就连JDK和JVM自身也有不少的开源实现版本,如OpenJDK和Harmony。可以说,“共享”的精神在Java世界里体现得淋漓尽致。 作为一个社区,Java拥有无数的开发人员、数不清的论坛和资料。从桌面应用软件和嵌入式开发,到企业级应用、后台服务器和中间件,都可以看到Java的身影。其应用形式之复杂、参与人数之庞大也令人咂舌。可以说,Java社区已经成为一个良好而庞大的生态系统。本书特色 本书的主要特色有:* 专注于Java应用程序的优化方法、技巧和思想,并深度剖析JDK部分的实现。* 具有较强的层次性和连贯性,深入剖析软件设计层面、代码层面和JVM虚拟机层面的优化方法。* 理论结合实践,使用丰富的示例帮助读者理解理论知识。本书内容 本书主要介绍Java应用程序的优化方法和技巧,共分为6章。 第1章介绍性能的基本概念、两个重要理论(木桶原理和Amdahl定律),以及系统调优的一般步骤与注意事项。 第2章从设计层面介绍与性能相关的设计模式、组件及有助于改善性能的软件设计思想。 第3章从代码层面介绍如何编写高性能的Java代码,涉及的主要内容有字符串的优化处理、文件I/O的优化、核心数据结构的使用、Java的引用类型及一些常用的惯例。 第4章介绍并行程序开发的相关知识,以及如何通过多线程提高系统性能,涉及的主要内容有并发设计模式、多任务执行框架、并发数据结构的使用、并发控制方法、“锁”的优化、无锁的并行计算及协程。 第5章立足于JVM虚拟机层面,介绍如何通过设置合理的JVM参数提升Java程序的性能。 第6章主要介绍获取和监控程序或系统性能指标的各种工具,以及Java应用程序相关的故障排查工具。读者对象 想要通读本书并取得良好的学习效果,读者需要具备Java的基础知识。本书不是一本帮助Java初学者入门的书籍,而是一本介绍如何编写高质量Java程序的书籍,主要适合以下读者阅读:* 拥有一定开发经验的Java开发人员;* Java软件设计师和架构师;* 系统调优人员;* 有一定Java语言基础而想进一步提高开发水平的程序员。本书约定 本书在讲解的过程中有如下约定:* 书中所述的JDK 15、JDK 16、JDK 17和JDK 18,分别等同于JDK 5、JDK 6、JDK 7和JDK 8。* 如无特殊说明,JVM虚拟机均指Hot Spot虚拟机。* 如无特殊说明,本书中的程序和示例均可在JDK 16、JDK 17和JDK 18环境中运行。配书资源获取方式 本书涉及的所有源代码需要读者自行下载。请在华章公司的网站(wwwhzbookcom)上搜索到本书,然后单击“资料下载”按钮,即可在本书页面上找到下载链接。致谢 在本书的写作过程中,我充满着感激之情。首先感谢我的家人!在本书完稿前,父亲病重,但由于我的工作繁忙,未能抽出太多时间照顾他,幸好得到了母亲的大力支持和父亲的谅解,我才能够全身心投入到写作之中。同时,母亲对我的悉心照料也让我能够更加专注于写作。 其次,感谢我的工作单位UT斯达康对我的支持和理解,让我能安心写作。另外,还要感谢两位前辈Rex Zhu和Tao Tao!正是他们在工作中对我的悉心指导,才能让我有所进步,而这一切,正是写作本书的基础。 最后,再次感谢我的母亲,祝她身体健康!售后支持 Java程序性能优化涉及的知识较为庞杂,而且Java技术也在不断地迭代和发展,加之笔者水平和成书时间所限,书中可能存在一些疏漏和不当之处,敬请各位读者指正。阅读本书时若有疑问,请发电子邮件到hzbook2017@163com。