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

时间:2021-7-3 作者:qvyue

前言

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程序执行过程中做了很多事.

1. JDK、JRE、JVM,新手傻傻分不清楚?!
网上找的图

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

  • 类加载
  • 执行

以及

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

专业来说就是:

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

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

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

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。