美文网首页摸鱼JVM
1. JDK、JRE、JVM,新手傻傻分不清楚?!

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

作者: 码哥说 | 来源:发表于2021-04-13 15:22 被阅读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如下

  • HotSpot VM (SUN的)
  • J9 VM (IBM的)
  • Zing VM (Azul Systems的)

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

非主流的这里不介绍了.

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

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

JVM究竟做了哪些活?

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

网上找的图

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

  • 类加载
  • 执行

以及

  • 贯穿始终的内存分配及垃圾回收!

专业来说就是:

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

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

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

请关注我的订阅号

订阅号.png

相关文章

网友评论

    本文标题:1. JDK、JRE、JVM,新手傻傻分不清楚?!

    本文链接:https://www.haomeiwen.com/subject/lurpektx.html