如果你还没下载《Java虚拟机规范》这本书,那么先点击这里下载再一块儿看吧。

前言

Java 虚拟机是一个抽象化的机器,整个规范中提及的 Java 虚拟机都是抽象化的概念,而不是特指 Oracle 或者其他某一间公司的 Java 虚拟机实现。

可以看到JVM其实就是一个虚拟机的机器,与我们的普通PC一样,有内存、有CPU。JVM的内存就是运行时数据区,其CPU就是Java虚拟机指令集。

另外,我们还修正了许多《Java 虚拟机规范(第一版)》 和《Java 语言规范》 之
间不一致的内容。

Java开发者必须要搞懂的两个规范:《Java虚拟机规范》和《Java语言规范》。

在这个版本中, 我们扩充了 Class 文件格式以便支持新的 Java
语言特性,譬如泛型和变长参数方法等。

扩充了Class文件格式,便于支持泛型等特性。后续在查看Class文件格式的时候,可以重点查看相关内容。TODO

如新的字节码验证方式, 它源于 Eva Rose 的一篇硕士论文, 文中以 Java Card 平台为背景, 展示了 JVM 字节码验证的另一种全新的实现思路。 这导致了 Java MECLDC 第一版实现的诞生, 并最终成为 Java SE 平台 Class 验证过程的理论基础。关于这部分内容将会在本书的第四章中介绍①。

字节码验证也是一个不小的课题啊,标记一下,第四章看看。 TODO

引言

Java 虚拟机是整个 Java 平台的基石,是 Java 技术用以实现硬件无关与操作系统无关的关键部分,是 Java 语言生成出极小体积的编译代码的运行平台,是保障用户机器免于恶意代码损害的保护屏障。

Java虚拟机对于Java平台就是如此重要!

Java 虚拟机可以看作是一台抽象的计算机。如同真实的计算机那样,它有自己的指令集以及各种运行时内存区域。

这里说的再次与我之前的理解是一致的,JVM就是一台抽象得计算机,有自己的CPU指令集和内存,只不过表现形式不同而已。

Java 虚拟机与 Java 语言并没有必然的联系,它只与特定的二进制文件格式——Class 文件格式所关联, Class 文件中包含了 Java 虚拟机指令集(或者称为字节码、 Bytecodes)和符号表,还有一些其他辅助信息。

Java虚拟机与Java语言并没有必然的联系,这个是学习JVM必须要懂的一个知识点。

提要

下面是JVM规范中关于个章节的提要:

第 2 章:概览了 Java 虚拟机整体架构。
第 3 章:介绍如何将 Java 语言编写的程序转换为 Java 虚拟机指令集描述。
第 4 章:定义 Class 文件格式,它是一种与硬件及操作系统无关的二进制格式,被用来表示编译后的类和接口。
第 5 章:定义 Java 虚拟机启动以及类和接口的加载、 链接和初始化过程。
第 6 章:定义 Java 虚拟机指令集,按这些指令的指令助记符的照字母顺序来表示。
第 7 章:提供了一张以操作码值为索引的 Java 虚拟机操作码助记符表

说明

这部分介绍了规范里的一些固定的格式。

  • 代码块使用蓝色底
  • 汇编语言使用斜体

JVM规范系列文章目录

JVM规范系列第1章:引言的更多相关文章

  1. JVM规范系列第2章:Java虚拟机结构

    本规范描述的是一种抽象化的虚拟机的行为,而不是任何一种(译者注:包括 Oracle 公司自己的 HotSpot 和 JRockit 虚拟机)被广泛使用的虚拟机实现. 记住:JVM规范是一种高度抽象行为 ...

  2. JVM规范系列第3章:为Java虚拟机编译

    Oracle 的 JDK 包括两部分内容:一部分是将 Java 源代码编译成 Java 虚拟机的指令集的编译器,另一部分是用于Java 虚拟机的运行时环境. 第一部分应该说的是 Javac 这个前置编 ...

  3. JVM规范系列第4章:Class文件格式

    这一章节讲的是字节码的整个组成格式,读懂了这一章,就读懂了字节码文件.对于这一章的学习,我更推荐作为工具书去查找.最好是找一个最简单的Hello World例子,一个字节一个字节去分析其含义.在分析过 ...

  4. JVM规范系列第5章:加载、链接与初始化

    加载是根据特定名称查找类或接口类型的二进制表示(Binary Representation),并由此二进制表示创建类或接口的过程. 加载,就是指去寻找类或接口的过程. 链接是为了让类或接口可以被 Ja ...

  5. JVM规范系列第6章:Java虚拟机指令集

    一条 Java 虚拟机指令由一个特定操作的操作码和零至多个操作所使用到的操作数所构成. 虚拟机指令 = 操作码 + 操作数. 其中,操作码值分别为 254(0xfe)和 255(0xff),助记符分别 ...

  6. JVM规范系列开篇:为什么要读JVM规范?

    许多人知道类加载机制.JVM内存模型,但他们可能不知道什么是<Java虚拟机规范>.对于Java开发来说,<Java虚拟机规范>才是最为官方.准确的一个文档,了解这个规范可以让 ...

  7. JVM规范系列:总结

    我们花了几天的时间来阅读<Java虚拟机规范>,了解要实现一个虚拟机应该包括什么内容.通过这么一次阅读,我们大致了解了虚拟机规范的内容. 第1章.对Java虚拟机进行了一些简单的介绍. 第 ...

  8. USB 3.0规范中译本 第1章 引言

    本文为CoryXie原创译文,转载及有任何问题请联系cory.xie#gmail.com. 1.1 动机(Motivation) Universal Serial Bus (USB) 的原始动机来自于 ...

  9. JVM基础系列第8讲:JVM 垃圾回收机制

    在第 6 讲中我们说到 Java 虚拟机的内存结构,提到了这部分的规范其实是由<Java 虚拟机规范>指定的,每个 Java 虚拟机可能都有不同的实现.其实涉及到 Java 虚拟机的内存, ...

随机推荐

  1. mybatis学习系列二

    1 参数处理(封装map过程)(23) 1.1)F5进入断点:Employee employee1=mapper.selectEmployeeByMap(map); 1.2)进入MapperProxy ...

  2. Shell脚本应用(if语句的结构)

    1.测试:检测表达式是否成立,成立则返回值为0,否则为非0 方法: 1)test  表达式 2)[ 表达式 ] 2.文件测试: -d:是否为目录 -f:是否为文件 -e:是否存在 -r:是否有读取权限 ...

  3. macOS平台安装metasploit

    1  在Github上克隆Metasploit git clone https://github.com/rapid7/metasploit-framework.git /usr/local/shar ...

  4. account

    Account Doc V3_ADD 1. 用户头像 用户头像今后会放在阿里云上,所以: dev: http(s)://pyserver.oss-cn-hangzhou.aliyuncs.com/DE ...

  5. 【微软编程一小时】题目1 : Arithmetic Expression

    时间限制:2000ms 单点时限:200ms 内存限制:256MB 描写叙述 Given N arithmetic expressions, can you tell whose result is ...

  6. input框下拉综合搜索

    静态页面 <form action="houtai.php" method="get">                               ...

  7. Jolt的是使用

    1:简单入门例子 其中1为输入数据,其中2为spec,也就是输出json的格式规范,3为输出数据.重点关注4和5即可: 其中4是rating.quality.value的表示,rating.quali ...

  8. Ignatius and the Princess III(方案背包+搜索)

    就是问你,n这个数可以被多少种方案组成. 比如: 算是,方案+完全背包的模板题了. #include<iostream> #include<cstring> using nam ...

  9. go标准库的学习-time

    参考https://studygolang.com/pkgdoc 导入形式: import "time" time包提供了时间的显示和测量用的函数.日历的计算采用的是公历. 1&g ...

  10. mybatis collection使用注意

    背景 今天我在使用collection时候,出现数据库有两条数据,但是却返回一条,在复制这条数据到四条后,依然返回一条 分析 这四条数据,数据库的每个字段值完全相同,所以估计是当成一条处理了 如果随便 ...