【JVM入门(一)】到底什么是JVM?

到底什么是JVM

  • 参考资料
  • 引入虚拟机
  • JVM 概述
  • 为什么学习 JVM

参考资料

到底什么是虚拟机

Java虚拟机的历史

引入虚拟机

都知道在 Windows 系统上一个应用程序或软件安装包是以 .exe 为后缀的,而这个应用程序如果是 Mac OsX 系统上的应用的话,则是以 .dmg 为后缀的,无法放在 Windows 系统上去打开/安装。

由于各系统下的操作系统底层的实现不一样,使得系统上的软件无法安装。对于Windows 系统来说,.exe 后缀的软件代码最终编译成 Windows 系统能识别的机器码。而 Mac OSX 系统来说,.dmg 后缀的软件代码最终编译成 Mac OSX 系统能识别的代码。

【JVM入门(一)】到底什么是JVM?_第1张图片

小编在学习 Java 过程中,知道 Java 代码可以在服务器端(Linux系统)运行,也可以在 Windows 系统上运行,没有对代码进行移植。小编不知道咋做到的,直至今日。

Java语言并不同其他语言一样,它并不是直接将代码编译成系统有关的机器码,而是编译成一种特定的语言规范,这种语言规范被称为字节码。 无论Java程序是在 Windows 系统,还是 Mac OSX 系统,抑或是 Linux 系统,它首先都得编译成字节码文件,之后才能运行。

但即使编译成字节码文件了,各个系统还是无法明白字节码文件所指的具体内容。这时 JVM(下面进行概述) 便出现了,它会解析字节码文件的内容,将其翻译为各个操作系统能理解的机器码。

【JVM入门(一)】到底什么是JVM?_第2张图片

准确的说 JVM 就是一个翻译官,把字节码文件翻译成各个系统所能理解的机器码,以便运行。再确切地说:Java虚拟机(JVM)是和字节码文件(Class文件)绑定在一起的,和 Java 文件没有任何关系,它只是按照规范去读取Class文件,去解析并执行字节码指令。

也就是说即便不是由编译Java文件产生的字节码文件,其他语言编译后形成符合规范的字节码文件,JVM也是可以读取、解析的。

JVM 概述

JVM 全称 Java Virtual Machine - Java虚拟机。被用来当作Java程序的运行环境,准确的说应该是Java 二进制字节码的运行环境。 JVM 是运行在操作系统上的,它和硬件没有直接的交互。

严格来说 JVM 也是虚拟机的一套规范,有很多不同的实现,Sun/OracleJDK 和 OpenJDK中的默认Java虚拟机是 HotSpot 虚拟机,是目前使用范围最广泛的Java虚拟机。

好处:

  • 一次编写,到处运行。便是JVM的功劳,Java被编译成字节码文件后,可以通过JVM实现跨平台(而不是像一些其他语言一样,直接编译成与系统有关的机器码)。
  • 自动内存管理,垃圾回收功能。
  • 多态提高了程序的扩展性,而它的实现是由JVM通过虚方法表去实现的。
  • 数组下标越界检查

比较:

JVM :字节码文件运行环境。

JRE (Java Runtime Environment):JVM + 基础类库,形成了真正的Java运行环境。

JDK(Java Development Kit):JRE + 编译工具。

JavaSE(Java Standard Edition,Java标准版):开发JavaSE程序,即需要 JDK + IDE工具。

【JVM入门(一)】到底什么是JVM?_第3张图片

为什么学习 JVM

  1. 可以清楚的知道 Java 程序是如何执行的。
  2. 可以明白为什么 Java 等高级语言具有可移植性强的特性。
  3. 小编不甘做一个平庸的Java码农。
  4. 方便查找 Java 程序中的一些问题。
  5. 方便以后优化 Java 程序。
  6. 面试

你可能感兴趣的:(JVM,jvm,java,linux)