java虚拟机是什么,深入理解java虚拟机
文章目录
一、Java 虚拟机是什么
二、为什么需要了解 Java 虚拟机
三、Java JDK 的迭代历史
四、Java 虚拟机发展史与种类
五、Java 虚拟机规范
六、Java 虚拟机语言无关性
七、Java 虚拟机的组成
八、JVM 的生命周期
系统环境:
JDK 1.8
参考地址:
Oracle Java 虚拟机规范
JVM笔记 -- JVM的生命周期介绍
JVM基础系列第5讲:字节码文件结构
JVM基础系列第2讲:Java 虚拟机的历史
深入理解Java虚拟机: JVM高级特性与最佳实践
深入浅出 JVM 系列文章
01.深入浅出 JVM 之 Java 虚拟机
......
一、Java 虚拟机是什么
Java 虚拟机 简称 JVM (Java Virtual Machine),它是支撑 Java 语言的基石,是运行 Java 应用程序的关键,同时也是实现 Java 语言平台无关性的核心组成部分。
Java 虚拟机听名字就知道是一个虚拟机,可以简单认为它是一台抽象的计算机,是对真实的计算机进行的组成进行了模拟,它拥有着自己的指令集以及各种运行时内存区域,不同的区域实现不同的功能,比如堆、栈、程序计数器等。
并且,Java 虚拟机还拥有 一次编译到处运行、自动内存关联 和 自动垃圾回收 等特性。
二、为什么需要了解 Java 虚拟机
目前 Java 语言可以说是世界上使用率最高的语言之一,Java 开发者拥有着众多的数量,然而大部分开发者在使用 Java 语言开发过程中比较注重于基本语法和开源工具的使用,而并不太关注于 Java 底层的实现原理。
那么说道这里,相比每个人都想过一个问题,那就是学习 Java 虚拟机有必要么?这点笔者不好回答,这个必要性其实跟开发者的环境有关,如果你是一个整天忙碌于编写业务,无暇顾及这些底层知识,使用现有的知识便足以解决开发过程中遇到的问题,那么确实,说实在话必要性不是很大。
但是如果笔者认为,学习一门语言,尤其是想学好一门语言,不能只知其然而不知其所以然,而且我们在日常 Java 编码过程中,无时无刻都在跟 Java 虚拟机打交道,比如:
启动 IDE 工具,那么这时候工具也需要 Java 环境,运行在 Java 虚拟机中;
通过 Maven、Gradel 等工具对 Java 代码编译过程中,同样需要使用 Java 虚拟机执行任务;
运行 Java 应用;
....
所以,我们 Java 开发者时时刻刻都都在与 Java 虚拟机打交道,如果不懂其概念,那么在和同事讨论问题过程中,人家提到 JVM 内存划分,新生代和老年代,以及 GC 垃圾回收等等,听的一脸懵逼~
再谈一些实际情况,笔者在过往的面试过程中,几乎很多公司在面试过程中,都会对 Java 虚拟机相关知识比较感兴趣,有的面试官可能会简单问些概念,但是有的甚至能夺命 N 连问,所以如果对 Java 虚拟机相关知识没有了解,很可能会丧失市场竞争力,尤其是中国 Java 开发者人数众多,竞争压力大,而且还比较卷,所以,如果别人了解这些内容而你不了解,你咋能竞争过别人呢?
总之来说,学习并了解 Java 虚拟机对我们 Java 开发者来说是非常有必要的,毕竟 Java 虚拟机是 Java 语言运行的基石。
三、Java JDK 的迭代历史
了解 Java 虚拟机那肯定先了解 JDK 各个版本的迭代过程,每个版本的 JDK 都有各自的变化,了解这些他们的历史更有助于我们对其知根知底。
这里本人简单汇总了下 JDK 各个版本的变化(资料收集于网络):
JDK 1.0 ~ JDK 1.4:
1995 年 Java (原名Oak) 诞生,并且在 SunWorld 大会上正式发表了 Java 1.0 版本。
1996 年 JDK 1.0 发布,提供了纯解释执行的 Java 虚拟机实现 Sun Classic VM。
1997 年 JDK 1.1 发布,虚拟机没有做变更,依然使用 Sun Classic VM 作为默认的虚拟机。
1998 年 JDK 1.2 发布,提供了运行在 Solaris 平台的 Exact VM 虚拟机,但此时还是用 Sun Classic VM 作为默认的 Java 虚拟机。
2000 年 JDK 1.3 发布,默认的 Java 虚拟机由 Sun Classic VM 改为 Sun HotSopt VM,而 Sun Classic VM 则作为备用虚拟机。
2002 年 JDK 1.4 发布,Sun Classic VM 退出商用虚拟机舞台,直接使用 Sun HotSpot VM 作为默认虚拟机一直到现在,并且新增了正则表达式、异常链、NIO、日志类、XML 解析器等功能。
JDK 5 ~ JDK 17:
2004 年 JDK 5 发布,Sun 公司从这个版本开始放弃了 JDK 1.x 的命名方式,将产品版本号修改成了 JDK x 这种命名。并且在 Java 语法易用性上做出了非常大的改进,自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach循环)等语法特性都是在 JDK 5 中加入的。除此之外,还改进了 Java 的内存模型,以及提供了 java.util.concurrent 并发包等。
2006 年 JDK 6 发布,并且 Sun 公司还把 Java 开源了,创建了 OpenJDK 项目,OpenJDK 和 JDK 的代码基本一致。这个版本对 Java 虚拟机内部做了大量改进,包括锁与同步、垃圾收集、类加载等方面的实现都有相当多的改动。
2011 年 JDK 7 发布,并且在发布前 Sun 公司被 Oracle 收购,提供了新的 G1 垃圾收集器。
本文地址:百科问答频道 https://www.neebe.cn/wenda/936272.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!