字节码是JVM的核心

上文说到,Java 是解释器+编译器并存的架构, 下面来看看在这个基础上, 字节码是什么样的存在.

提示:
上一篇讲述的是 JVM 是编译器+即时编译架构的
下一篇将要讲述 Class 文件
本文很短, 最好的阅读顺序是这三篇一起看

其实 Java 的解释器+编译器并存的架构, 其实还有些需要注意的地方
![[Pasted image 20230312141130.png]]
这里的编译器+解释器, 指的是 Java 解释器以及即时编译器. 这对应的是将字节码转换成底层代码的两种方式.
一定不要理解成生成字节码有两种形式

然后我们看看字节码是什么样的存在

我们联想一个最常见的编译型语言: C 语言,C 语言 windows 下回生成一个 exe 可执行文件.
再来看看呢? 字节码可以直接执行吗?

不可用, 非常不可以

那么字节码有什么用呢?
字节码是一个规范, 对于 C 语言来说, 如果是 linux 环境, 那么中间文件就不会是 exe 文件了吧, 这对于 C 语言来说, 就需要将 C 语言代码转换成 Linux 中的可执行文件.
而字节码呢? 字节码的存在, 在不同平台中, 是通用的, 这是一个规范, 虽然说这个字节码, 不可以直接运行 (注意我这里指的是字节码不是一种可执行文件, 他需要额外的解释器或者 JIT 即时编译器来生成机器码), 但是但是我们所有平台就只需要去针对字节码去开发不同平台的解释器和 JIT 即时编译器即可, 也就是说, 有了字节码, 是可以实现一次编译, 到处执行的

为什么说字节码是核心呢

不同平台中的 JVM 虚拟机, 也都是正对于字节码进行开发和设计的, 字节码是通用的, 而其他的虚拟机各种运行时数据区啊, 方法区啊, 都是根据虚拟机规范, 但是不同的虚拟机可能在设计上会有一些差别, 但是都是正对于字节码这个东西而来的.

为什么字节码叫字节码呢?
一个 Java 字节码指令的操作码, 被固定为一个字节

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

渣渣高不会写Java

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

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

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

打赏作者

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

抵扣说明:

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

余额充值