摸鱼JVM - 几个常识概念启蒙 (老鸟请跳过)

前言

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, 就能够让 “一次编译, 到处运行” 吹上天.

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码哥说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值