JVM系统学习-入门了解

JVM、JDK、JRE与Java关系

  • JVM 全称 Java Virtual Machine(Java虚拟机),是Java语言编译成class字节码文件之后运行的平台
  • JRE 全称 Java Runtime Environment 是指Java运行环境,是运行Java程序所必须的环境的集合,包含JVM标准实现及Java核心类库
  • JDK 全称 Java Development Kit 是Java语言的软件开发工具包,JDK是整个Java开发的核心,他包含了Java的运行环境(JVM+JRE)和Java工具,例如Javac编译器等
    JVM系统学习-入门了解开发人员在开发过程中,只需要安装jdk即可支持Java程序的开发和运行

什么是JAVA虚拟机(JVM)?

虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

主流的JAVA虚拟机

HostSpot

Oracle Jdk、Open Jdk的各种变种,目前最流行的Java虚拟机

Jrocket

Sun公司被Oracle公司收购以后,将Jrocket和HotSpot进行的糅合,现在已经不更新了

J9

IBM开发的一块高度模块化的虚拟机,但由于使用方面存在限制(需要和IBM相关的产品同时使用,也就是有许可证方面的限制),因此并没有被Java程序员广泛使用

TaobaoVM

淘宝公司根据HotSpot 深度定制的产品,基于InterCPU,损失了兼容性,提高了性能,在调用本地方法JNI时,降低了进程的开销

LiquidVM

BEA 公司的一个产品。不需要操作系统的支持,它自己就是一个操作系统。说Java慢,是因为它先经过一层Java VM,然后虚拟机来调用OS,多了一部。而Liquid VM本身就不需要OS的支持,它自己就已经实现了File System,网络支持等等这些必要的功能,本身就相当与一个OS。所以性能和速度都是相当强大的

Zing

是一款相对而言很优秀的Java虚拟机产品,但是好的东西一般都会收费,因此也没有被Java程序员广泛使用

其他

当然,还有一些其他的Java虚拟机,例如Dalvik (安卓)、Microsoft JVM、Azul VM、KVM、Exact VM等等一些非主流的,有兴趣可以自行了解

JVM的特性

JVM支持的语言和平台:
JVM系统学习-入门了解

语言无关性

jvm支持Java、Scala、kotlin、groovy、JRuby等语言,无论是哪一种语言,在编译过后都会转换成class字节码文件,因此JVM具有语言无关的特性
JVM系统学习-入门了解

平台无关性(跨平台)

JVM具有跨平台特性,那是因为在JVM执行class字节码文件时,会将class字节码文件“翻译”成不同的机器可执行的语言,其实也就是JVM本身不支持跨平台,但是由于每个不同的操作系统都会安装不同版本的JVM,JVM再将字节码文件翻译成当前机器可执行的机器语言,因此JVM具有平台无关的特性
JVM系统学习-入门了解
JVM可跨越的平台有:Windows、Linux、Unix、Android、Mac等