没有合适的资源?快使用搜索试试~ 我知道了~
JVMClass文件结构学习.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 69 浏览量
2023-08-23
18:17:49
上传
评论
收藏 1.29MB DOCX 举报
温馨提示
试读
53页
要了解Class文件的结构首先得了解Class文件所采用的数据类型: Class文件格式采用一种类似C语言结构体的伪结构来存储数据,这种伪结构只有两种数据结构,即无符号数和表,解析Class文件全是以这两个数据结构为基础。 无符号数:属于基本的数据类型,由1字节、2字节、4字节、8字节分别用u1、u2、u3、u8表示,可以用来描述数字、索引引用、数量值或者UTF-8编码构成字符串值。 表:是由多个无符号数或者表构成的复合数据结构,习惯以"_info"结尾Class文件本质也可以看作一张表
资源推荐
资源详情
资源评论
第一章——JVM 简介
1. 虚拟机概念、JVM 定义、JVM 规范和 JVM 产品
1.1 虚拟机概念
所谓虚拟机,就是一台虚拟的计算机,它是一款软件,用来执行一系列虚拟
计算机指令。
虚拟机可以分为系统虚拟机和程序虚拟机。
大名鼎鼎的 VMware 就属于系统虚拟机,它们完全是对物理计算机的仿
真,提供了个可运行完整操作系统的软件平台。
程序虚拟机的典型代表就是 Java 虚拟机。
1.2 JVM 定义
Java 虚拟机是整个 Java 平台的基石,是 Java 技术用以实现硬件无关与操作
系统无关的关键部分,是 Java 语言生成出极小体积的编译代码的运行平台,
是保障用户机器免于恶意代码损害的屏障。
Java 虚拟机可以看做一台抽象的计算机如同真实的计算机那样,它有自己的
指令集以及各种运行时内存区域。
Java 虚拟机与 Java 语言并没有必然的联系,它只与特定的二进制文件格式
class 文件格式所关联,class 文件包含了 Java 虚拟机指令集(或者称为字
节码(bytecode))和符号表,以及其他一些辅助信息。
1.3 JVM 规范
Java 虚拟机规范是官方对准确 Java 虚拟机在架构上进行的一个设计和约定,
而具体的某某 Java 虚拟机这是对官方 Java 虚拟机规范的一个实现。
JDK 版本不同,Java 虚拟机规范也有一定差异
官方 Java 虚拟机规范地址
https://docs.oracle.com/javase/specs/index.html
1.4 JVM 产品
Classic VM(早期 Sun 的 Java 虚拟机)
Exact VM(早期 Solaris 平台上)
HotSpot(OracleJDK 与 OpenJDK 默认)
JRockit(BEA 的,被 Oracle 收购,并且整合到 HotSpot 里面)
J9(IBM 商用)
Google Android Dalvik VM(Android 上的)
KVM、CDC、CLDC(嵌入式领域)
Microsoft JVM(微软的)
Graal VM(跨语言全栈虚拟机 Run Programs Faster Anywhere)
2. JVM 发展史
2.1 1996 年 1 月 23 日
JDK 1.0 发布,JDK 1.0 提供了一个纯解释执行的 Java 虚拟机实现(Sun
Classic VM)
JDK 1.0 版本的代表技术包括:Java 虚拟机、Applet、 AWT 等
2.2 1997 年 2 月 19 日
JDK 1.1 发布,Java 里许多最基础的技术支撑点(如 JDBC 等)
JDK 1.1 版本代表技术包括:JAR 文件格式、JDBC、JavaBeans、RMI、内
部类(Inner Class)和反射(Reflection)等
2.3 1998 年 12 月 4 日
JDK 1.2 发布,Java 技术体系拆分为三个方向,J2SE、J2EE、J2ME
JDK 1.2 版本代表技术包括:EJB、Java Plug-in、Java IDL、Swing,并且
这个版本中 Java 虚拟机第一次内置了 JIT(Just In Time)即时编译器(JDK
1.2 中曾并存过三个虚拟机,Classic VM、HotSpot VM 和 Exact VM,、
Collections 集合类、strictfp(strict float point)关键字
2.4 2000 年 5 月 8 日
JDK 1.3 发布,默认虚拟机为 Hot-Spot 虚拟机
JDK 1.3 版本代表技术包括:JNDI、Hot-Spot 虚拟机、数学运算和新的Timer
API、Java 2D API、JavaSound 类库
2.5 2002 年 2 月 13 日
JDK 1.4 发布,Java 真正走向成熟的一个版本
JDK 1.4 版本代表技术包括:正则表达式、异常 链、NIO、日志类、XML
解析器和 XSLT 转换器
2.6 2004 年 9 月 30 日
JDK 5 发布,命名方式改变以前的 1.x 方案,直接 x 方案
JDK 5 版本代表技术包括:语法层面上自动装箱、泛型、动态注解、枚举、
可变长参数、遍历循环(foreach 循环)。在虚拟机和 API 层面上,这个版
本改进了 Java 的内存模型(Java Memory Model,JMM)、提供了
java.util.concurrent 并发包
2.7 2006 年 12 月 11 日
JDK 6 发布,终结 J2EE、J2SE、J2ME 的产品线命名方式,启用 Java EE 6、
Java SE 6、Java ME 6 的新命名来代替。
JDK 6 版本代表技术包括:提供初步的动态语言支持(通过内置 Mozilla
JavaScript Rhino 引擎实现)、提供编译期注解处理器和微型 HTTP 服务器
API,这个版本对 Java 虚拟机内部做了大量改进,包括锁与同步、垃圾收集、
类加载等方面的实现都有相当多的改动。
JDK 开源:建立了 OpenJDK 组织对这些源码进行独立管理,Hotspot 也是
默认的虚拟机
2.8 2008 年
2008 年,Oracle 收购 BEA,得到了 JRockit 虚拟机
2.9 2009 年 4 月 20 日
Oracle 宣布正式以 74 亿美元的价格收购市值曾超过 2000 亿美元的 Sun 公
司
Oracle 得到了 Hotspot 虚拟机,并计划把 JRockit 和 Hotspot 合并(只是计
划)
2.10 2011 年 7 月 28 日
JDK 7 发 布 , 跳 票 了 Lambda 项 目 、 动 态 语 言 支 持 、 Jigsaw 项 目 、
Garbage-First 收集器、Coin 项目
JDK 7 版 本 代 表 技 术 包 括 : 新 的 垃 圾 回 收 器 Gl 、 NIO2.0 、 新 增
invokedynamic 指令
2.11 2014 年 3 月 18 日
JDK 8 发布,提供了那些曾在 JDK 7 中规划过,但最终未能在 JDK 7 中完成
的功能,继续跳票 Jigsaw 项目,Oracle 启用 JEP(JDK Enhancement
Proposals)来定义和管理纳入新版 JDK 发布范围的功能特性
JDK 8 版本代表技术包括:
JEP-126(Lambda 表达式的支持)
剩余52页未读,继续阅读
资源评论
Java毕设王
- 粉丝: 6321
- 资源: 1075
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功