《深入理解java虚拟机》学习笔记一:你好java,交个朋友呗!

楼主使用的教材是周志明著的第二版《深入理解java虚拟机》,如果觉得笔记写的不错,想更好的学习,建议和楼主使用的书籍一样。周志明写的《深入理解java虚拟机》被认为java程序员必读书籍,jvm书籍NO.1。一般这类书籍至少读三遍,有时间,可以反复读,每一遍都会有不同的收获。

笔记一:对应原书的第一部分、第一章:走进java

1.1 概述

java的优点:

    1)实现了跨平台,摆脱硬件平台的约束,“一次编写,到处运行”;

    2)自动回收机制,提供了一个相对安全的内存管理和访问机制,避免了绝大部分的内存泄漏和指针越界问题;

    3)拥有完善的应用程序接口,有很多开源的第三方类库来实现各种不同的功能,并且还在在不断的扩充中;

    4)实现热代码检测和运行时编译及优化,使得java应用程序随着运行时间的增加而获得更高的性能。(这点楼主看的不是特别明白,也许在看第二遍,第三遍时会理解的更好)

1.2 java技术体系

从传统意义上来看,Sun官方所定义的java技术体系包括以下几个部分:

  • java程序设计语言
  • 各种硬件平台上的java虚拟机
  • Class文件格式
  • java API类库
  • 来自商业机构和开源社区第三方的java类库

java程序设计语言、java虚拟机、java API类库三部分统称JDK(Java Developmentment Kit),JDK是用于支持java程序开发的最小环境系统。另外,可以把java API类库中的java SE API子集和java虚拟机这两部分统称为JRE,JRE是支持java程序运行的标准环境。

《深入理解java虚拟机》学习笔记一:你好java,交个朋友呗!_第1张图片

java技术体系所包含的内容

按照java技术关注的重点业务领域来划分,java技术体系可以分为4个平台,分别是:

  • Java Card:运行在小内存设备上的平台的小程序(Applets),如:智能卡。
  • Java ME(Micro Edition):运行在移动终端平台,如:手机,Pad等。对Java API有所精简,但加入了对移动终端的支持,以前此版本称之为J2ME。
  • Java SE(Standard Edition):面向桌面级应用的java平台,提供完整的java核心API,如:windows下的应用程序。
  • Java EE(Enterprise Edition):支持使用多框架的企业应用(在公司上班,多做的是这方面的工作)。

1.3 java发展史

这部分就不累赘了,网上有很丰富的资源供了解。

《深入理解java虚拟机》学习笔记一:你好java,交个朋友呗!_第2张图片

1.4 java虚拟机发展史

Sun Classic/Exact VM:Classic VM是第一款商用虚拟机,纯解析器方式来执行Java代码,如果要使用JIT编译器就必须进行外挂,解析器和编译器不能配合工作,编译器执行效率非常差;Exact VM是Sun虚拟机团队曾在Solaris平台发布的虚拟机,支持两级即时编译器、编译器和解释器混合工作、使用准确内存管理(虚拟机可以知道内存中某个位置的数据具体是什么类型),但很快就被HotSpot VM所取代;Sun HotSpot VM:Sun JDK和OpenJDK所带的虚拟机,目前使用范围最广;继承了前两款虚拟机的优点,还支持热点代码探测技术(通过计数器找出最具编译价值的代码);2006年Sun公司宣布JDK包括HotSpot VM开源,在此基础上建立OpenJDK;Sun Mobile-Embedded VM/Meta-Circular VM:还有一些Sun开发的面对移动和嵌入式发布的和实验性质的虚拟机;BEA JRockit/IBM J9 VM:JRockit VM号称是世界上最快的Java虚拟机,专注于服务器端应用,不包含解析器实现,全部靠即时编译器编译执行;J9 VM定位于HotSpot比较接近,主要目的是作为IBM公司各种Java产品的执行平台;Azul VM/BEA Liquid VM:特定硬件平台专有的高性能虚拟机;Apache Harmony/Google Android Dalvik VM:Apache Harmony包含自己的虚拟机和Java库,但没有通过TCK认证;Dalvik VM是Android平台的核心组成部分,其并没有遵循Java虚拟机规范,不能直接执行Class文件,使用的是寄存器架构而不是JVM常见的栈架构;Microsoft JVM及其他:微软曾经是Java技术的铁杆支持者,开发过Windows下性能最好的Java虚拟机,但后来被Sun起诉终止其发展。

1.5 展望java技术的未来

1)模块化:解决应用系统与技术平台越来越复杂、越来越庞大问题的一个重要途径。

2)混合语言:单一的语言去完成一项庞大的任务成本高、开发不易等缺点,利用各项语言的优点结合使用。

3)多核并行:CPU硬件已经从高频率向多核转变。

4)进一步丰富语法。

5)64位虚拟机。

1.6 实战:自己编译JDK

这部分还没学会,在此笔记先不写出。

  • 下载OpenJDK:https://jdk7.java.net/source.html
  • 系统需求:Ubuntu 64位、5GB的磁盘、1G内存;
  • 构建编译环境:需要Bootstrap JDK(JDK6以上)/Ant(1.7.1以上)/GCC。

1.7 本章小结

本章节介绍了java的过去、今天和将来,没有太多的知识点(除1.6节),仅是些了解、记忆的知识。作为《深入理解java虚拟机》全书的引言部分,是全书的奠基部分。





你可能感兴趣的:(深入理解java虚拟机,java,jvm,深入理解java虚拟机)