JVM概念及虚拟机栈——JVM(1)

本文介绍了Java从编译到运行的过程,重点解析了JVM作为规范的角色,包括其跨平台性和语言无关性。讨论了JVM对内存的规范,特别是虚拟机栈的概念和实例演示,详细阐述了栈帧的结构。此外,还提到了本地方法栈、运行时数据区的其他区域以及JVM内存处理的初步理解。
摘要由CSDN通过智能技术生成

一.Java从编译到运行的过程

1.图示(JDK,JRE,JVM三者关系)

在这里插入图片描述
java文件经过javac的编译后形成了class字节码文件,然后送入JVM在JRE的类库的帮助下进行类加载。从这张图也可以看出JDK,JRE,JVM之间的关系。

2.三者关系

  • JVM: JVM只是一个翻译,把Class翻译成机器识别的代码,但是需要注意,JVM 不会自己生成代码,需要大家编写代码,同时需要很多依赖类库,这个时候就需要用到JRE。
  • JRE: JRE是什么,它除了包含JVM之外,还提供了很多的类库(就是我们说的jar包,它可以提供一些即插即用的功能,比如读取或者操作文件,连接网络,使用I/O等等之类的)这些东西就是JRE提供的基础类库。JVM 标准加上实现的一大堆基础类库,就组成了 Java 的运行时环境,也就是我们常说的 JRE(Java Runtime Environment)。
  • JDK: 但对于程序员来说,JRE还不够。我写完要编译代码,还需要调试代码,还需要打包代码、有时候还需要反编译代码。所以我们会使用JDK,因为JDK还提供了一些非常好用的小工具,比如 javac(编译代码)、javap(反编译)等。这个就是JDK。

二.JVM是一种规范

为什么说JVM是一种规范呢?有以下两个原因

①JVM的跨平台性

同一个Java程序,可以在多个不同的操作系统上执行,不受平台的影响(当然前提是你安装了属于此平台的JDK)。比如安装了windows版本的JDK,我的Java程序就可以在windows操作系统上面运行。

②JVM的语言无关性

JVM识别的就是class文件,不管你是什么语言,Java也好,kotlin也好,还是你自己创的语言也好,只要能编译成class文件,JVM就能识别并进行操作。

综上,我们说JVM是一种规范。

常见的JVM实现有

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值