JVM学习(一) 基本常识和JVM架构理解
为什么使用JVM
上学的时候我们都知道JAVA其中一个特性就是可移植性。而JAVA之所以具有该特性就是因为JVM的存在。
JAVA平时我们编译时是首先生成的字节码class文件,再通过JVM虚拟机生成CPU可直接读取的机器码。
机器码是由电脑CPU直接读取的操作指令,速度快,但一般从业人员无法直接编写
字节码是一种中间状态的二进制码,需要直译器进行转译后才能成为机器码
而JAVA程序只要编译一次就可以在不同的操作系统上运行也是因为JVM虚拟机屏蔽了操作系统之间的差异。
JDK、JRE、JVM之间的关系
- JDK是java开发工具包,其中包含了JRE。我们开发时就需要安装JDK
- JRE是JAVA 运行时环境,如果在服务器中不需要进行开发的主机,我们可以单独安装JRE
- JVM无法单独安装,安装JRE或者JDK自动就安装了JVM
JVM与Hotspot的区别
JVM是一种规范
Hotspot是一种商用的JVM产品,初次之外还有Jrockit,J9
OracleJDK默认使用的就是Hotspot
JVM和JAVA的关系
首先JVM只认识.class文件而java语言编译后就是产生的class文件,但是并不是只有java一种语言产生class文件
比如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