美文网首页摸鱼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