摸鱼JVM

1. JDK、JRE、JVM,新手傻傻分不清楚?!

2021-04-13  本文已影响0人  码哥说

前言

JDK, JRE, JVM这几个概念很容易搞晕, 其实, 哪怕是JAVA老手也不一定能理清这些, 所以, 咸鱼还是简单的过下这几个概念.

JDK, JRE, JVM

JDK(Java Development Kit), 针对Java开发人员的产品, 是整个Java的核心, 包括了Java运行环境JRE、Java工具和Java基础类库

JRE(Java Runtime Environment), 运行Java程序所必须的环境的集合,包含JVM标准实现及Java核心类库.

JVM(Java Virtual Machine), 我们常说的java虚拟机, 它是整个java实现跨平台的最核心的部分, 它是一种抽象的计算机, 通过从实际的计算机中仿真模拟各种计算机功能来实现的.

一句话描述三者的关系:

JDK包含JRE, JRE包含JVM

为什么要JVM?

一次编译, 到处运行”

这句话想必大家都听过.

那么问题来了, 不同的计算机平台有不同的硬件、系统、内核等等, 这些差异怎么可能让一个Java程序在不同的平台直接完美运行呢?!

于是聪明的开发者便想到了办法:

计算机底层我没法统一, 但是我可以屏蔽底层的差异, 加个中间层, 这个中间层就是JVM, 它就是一个字节码翻译器,它将字节码文件翻译成各个系统对应的机器码,确保字节码文件能在各个系统正确运行.

这样, 针对不同的计算平台(mac, windows, linux……)提供相同功能的JVM, 就能够让 “一次编译, 到处运行” 的NB吹上天.

看到此处以会恍然大悟, 原来:

Java的跨平台特性其实是由JVM实现的.

JVM有哪些

说到JVM就不得不提下JVM规范.

JVM规范是什么呢?

简单来说, JVM规范就是oracle制定的一组设计要求, 你只要遵守这些要求实现出来的虚拟机就是JVM.(可以简单的理解为接口和实现的联系)

我们平时常说的JVM一般是指的某种具体的JVM规范的实现, 而不是空洞的规范!

比如我们最经常使用的JAVA虚拟机hotspot, 它就是一种JVM规范的具体实现.

主流的JVM如下

不同的JVM实现细节上会有差异,

非主流的这里不介绍了.

接下来所有的知识均是针对HotSpot VM开展的, 要问为啥?

当然是因为它是绝对的主流!

JVM究竟做了哪些活?

JVM在Java程序执行过程中做了很多事.

网上找的图

可以看到JVM主要做了以下几件事

以及

专业来说就是:

JVM被分为三个主要的子系统:

  1. 类加载器子系统
  2. 运行时数据区
  3. 执行引擎

接下来的文章, 我们针对每一块进行详细的了解

请关注我的订阅号

订阅号.png
上一篇下一篇

猜你喜欢

热点阅读