JVM规范系列第1章:引言
如果你还没下载《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规范系列开篇:为什么要读JVM规范?
- JVM规范系列第1章:引言
- JVM规范系列第2章:Java虚拟机结构
- JVM规范系列第3章:为Java虚拟机编译
- JVM规范系列第4章:Class文件格式
- JVM规范系列第5章:加载、链接与初始化
- JVM规范系列第6章:Java虚拟机指令集
- JVM规范系列:总结
JVM规范系列第1章:引言的更多相关文章
- JVM规范系列第2章:Java虚拟机结构
本规范描述的是一种抽象化的虚拟机的行为,而不是任何一种(译者注:包括 Oracle 公司自己的 HotSpot 和 JRockit 虚拟机)被广泛使用的虚拟机实现. 记住:JVM规范是一种高度抽象行为 ...
- JVM规范系列第3章:为Java虚拟机编译
Oracle 的 JDK 包括两部分内容:一部分是将 Java 源代码编译成 Java 虚拟机的指令集的编译器,另一部分是用于Java 虚拟机的运行时环境. 第一部分应该说的是 Javac 这个前置编 ...
- JVM规范系列第4章:Class文件格式
这一章节讲的是字节码的整个组成格式,读懂了这一章,就读懂了字节码文件.对于这一章的学习,我更推荐作为工具书去查找.最好是找一个最简单的Hello World例子,一个字节一个字节去分析其含义.在分析过 ...
- JVM规范系列第5章:加载、链接与初始化
加载是根据特定名称查找类或接口类型的二进制表示(Binary Representation),并由此二进制表示创建类或接口的过程. 加载,就是指去寻找类或接口的过程. 链接是为了让类或接口可以被 Ja ...
- JVM规范系列第6章:Java虚拟机指令集
一条 Java 虚拟机指令由一个特定操作的操作码和零至多个操作所使用到的操作数所构成. 虚拟机指令 = 操作码 + 操作数. 其中,操作码值分别为 254(0xfe)和 255(0xff),助记符分别 ...
- JVM规范系列开篇:为什么要读JVM规范?
许多人知道类加载机制.JVM内存模型,但他们可能不知道什么是<Java虚拟机规范>.对于Java开发来说,<Java虚拟机规范>才是最为官方.准确的一个文档,了解这个规范可以让 ...
- JVM规范系列:总结
我们花了几天的时间来阅读<Java虚拟机规范>,了解要实现一个虚拟机应该包括什么内容.通过这么一次阅读,我们大致了解了虚拟机规范的内容. 第1章.对Java虚拟机进行了一些简单的介绍. 第 ...
- USB 3.0规范中译本 第1章 引言
本文为CoryXie原创译文,转载及有任何问题请联系cory.xie#gmail.com. 1.1 动机(Motivation) Universal Serial Bus (USB) 的原始动机来自于 ...
- JVM基础系列第8讲:JVM 垃圾回收机制
在第 6 讲中我们说到 Java 虚拟机的内存结构,提到了这部分的规范其实是由<Java 虚拟机规范>指定的,每个 Java 虚拟机可能都有不同的实现.其实涉及到 Java 虚拟机的内存, ...
随机推荐
- 2.网络编程-udp
# 使用套接字发送udp数据import socket s = socket.socket(socket.AF_INET, SOCK_DGRAM) s.sendto(b"hello" ...
- SSD 下的 MySQL(5.5) IO 优化
一 目录 一 目录 二 背景 三 SSD 特性 四 基于 SSD 的数据库优化 五 A 项目 MySQL 主从关系图 六 程序切换之前调优 6.1 修改系统 IO 调度算法 6.2 修改 innodb ...
- 解决SQL Server本地Windows身份无法登录
CREATE LOGIN [计算机名\Windows帐户名] FROM WINDOWS
- npm install node-sass 本地安装失败
$ npm install --save node-sass --registry=https://registry.npm.taobao.org --disturl=https://npm.taob ...
- ccf-20160903--炉石传说
本题思路如下图: 题目和代码如下: 问题描述 试题编号: 201609-3 试题名称: 炉石传说 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 <炉石传说:魔兽英雄传& ...
- PJ初赛复习日记
PA姑娘的PJ初赛复习日记 by Pleiades_Antares PJ初赛考试马上就要开始了(今年应该是10.13吧?),作为蒟蒻的我们怎么能不复习呢? 众所周知,复习方法有很多很多种-- 比如 ( ...
- node学习笔记_04 express相册
学习node用express框架做了一个相册展示及上传功能: 1.没有连接服务器,这里全部是操作文件夹 2.安装上传文件的依赖formidable,npm install --save formida ...
- postgresql中uuid的使用
本文总共介绍两种方法 : 1.使用create extension命令 create extension "uuid-ossp" 安装扩展成功以后,就可以通过uuid_genera ...
- Spring AOP 和 AspectJ
现如今有许多个可用的 AOP 库,使用这些库需要能够回答以下问题: 是否与现有的或新的应用程序兼容? 在哪里可以使用 AOP ? 如何迅速与应用程序集成? 性能开销是多少? 在本文中,我们将回答这些问 ...
- 椭圆曲线签名算法的v的定义
在之前的个个与签名相关的地方我都对v的定义感到十分困惑,知道查看了黄皮书以后才对它的作用有了一定地了解,如下: (v is the recovery id: a 1 byte value specif ...