深入理解Java虚拟机-第三版-前言及第一章笔记

  【前言】

JVM隐藏了底层技术的复杂性和机器与操作系统的差异性。建立了统一的平台。
C、C++还要去关心物理硬件的兼容。Java解决了这一问题,将软件开发与硬件平台的细节解耦了,节省了程序员的精力,降低了技术门槛。

程序员不用再去关心硬件平台的兼容与内存等资源的管理工作。
如果开发人员不了解虚拟机诸多技术特性的运行原理,就无法写出最适合虚拟机运行和自优化的代码。

如果用于生产开发,尤其是大规模的、企业级的生产开发,就迫切需要开发人员中至少有一部分人对虚拟机的特性及调节方法具有很清晰的认识。

  【推荐书籍】

《Java虚拟机规范》 必读
《Java语言规范》 与上本都是Oracle官方出版,本书由高斯林亲自执笔撰写
《垃圾回收算法手册:自动内存管理的艺术》 垃圾回收领域的必读
《Virtual Machines:Versatile Platforms for Systems and Processes》 建立虚拟机的全局观念
《Java性能优化权威指南》 从操作系统到基于Java的上层程序性能度量和调优进行全面介绍。其中涉及Java虚拟机的内容具备一定深度和很好的可实践性。

  【JVM发展】

SunClassic/Exact VM
HotSpot VM
Mobile/Embedded VM
BEA JRockit/IBM J9 VM
平时所提及的“高性能Java虚拟机”一般是指HotSpot、JRockit、J9这类在通用硬件平台上运行的商用虚拟机

BEA Liquid VM/Azul VM
Liquid VM不需要操作系统的支持,或者说它自己本身实现了一个专用操作系统的必要功能。最大限度地发挥硬件的能力。
Zing
......

Graal VM --未来的发展方向

对不需要长时间运行的,或者小型化的应用而言,Java天生就带有一些劣势。这里并不只是指跑个HelloWorld也需要百多兆的JRE之类的问题,更重要的是指近几年在从大型单体应用架构向小型微服务应用架构发展的技术潮流下,Java表现出来的不适应。

单个微服务很可能就不再需要面对数十、数百GB乃至TB的内存,有了高可用的服务集群,也无须追求单个服务要7×24小时不间断地运行,它们随时可以中断和更新;但相应地,Java的启动时间相对较长,需要预热才能达到最高性能等特点就显得相悖于这样的应用场景。

原文地址:https://www.cnblogs.com/bruceChan0018/p/15017433.html