JVM学习(一) 基本常识和JVM架构理解

为什么使用JVM

上学的时候我们都知道JAVA其中一个特性就是可移植性。而JAVA之所以具有该特性就是因为JVM的存在。
JAVA平时我们编译时是首先生成的字节码class文件,再通过JVM虚拟机生成CPU可直接读取的机器码。

机器码是由电脑CPU直接读取的操作指令,速度快,但一般从业人员无法直接编写
字节码是一种中间状态的二进制码,需要直译器进行转译后才能成为机器码

而JAVA程序只要编译一次就可以在不同的操作系统上运行也是因为JVM虚拟机屏蔽了操作系统之间的差异。

JDK、JRE、JVM之间的关系

JVM学习(一) 基本常识和JVM架构理解

  • JDK是java开发工具包,其中包含了JRE。我们开发时就需要安装JDK
  • JRE是JAVA 运行时环境,如果在服务器中不需要进行开发的主机,我们可以单独安装JRE
  • JVM无法单独安装,安装JRE或者JDK自动就安装了JVM

JVM与Hotspot的区别

JVM是一种规范
Hotspot是一种商用的JVM产品,初次之外还有Jrockit,J9
JVM学习(一) 基本常识和JVM架构理解
OracleJDK默认使用的就是Hotspot

JVM和JAVA的关系

首先JVM只认识.class文件而java语言编译后就是产生的class文件,但是并不是只有java一种语言产生class文件
JVM学习(一) 基本常识和JVM架构理解
比如Groovy ,Groovy 是 “用于 Java 虚拟机的一种敏捷的动态语言”,它 “以 Java 的强大功能 为基础,同时又包含由 Python、Ruby 和 Smalltalk 等语言带来的强大附加功能 ”,例如动态类 型转换、闭包和元编程(metaprogramming)支持。它是一种 成熟的面向对象编程语 言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。这些语言编译后也都是可以在java虚拟机上运行的。

JVM的Client模式与Server模式

JVM有两种运行模式Server与Client。两种模式的区别在于,Client模式启动速度较快,Server模式启动较慢;但是启动进入稳定期长期运行之后Server模式的程序运行速度比Client要快很多。这是因为Server模式启动的JVM采用的是重量级的虚拟机,对程序采用了更多的优化;而Client模式启动的JVM采用的是轻量级的虚拟机。所以Server启动慢,但稳定后速度比Client远远要快。
查询运行模式可以使用命令 java -version
JVM学习(一) 基本常识和JVM架构理解

JVM架构图

JVM学习(一) 基本常识和JVM架构理解