JVM基础-运行

字节码

首先我们需要清楚计算机是不能直接运行JAVA代码的,需要先运行JAVA虚拟机,再由JAVA虚拟机运行编译后的JAVA代码,这个编译后的代码,就是字节码。

为什么jvm不能直接运行java文件呢?

因为在cpu层面来看,计算机所有操作都是一个一个指令去运行汇集而成的,而java代码是高级语言,只有人才能看懂其中的逻辑,计算机是无法识别的,所以java代码必须编译为计算机能看懂的字节码,jvm才能识别代码转换后的指令去运行。

多语言编译为字节码在JVM运行

Java代码间接翻译成字节码,再将字节码文件交由不同平台上的jvm去运行,从而实现一次编写,到处运行。
JVM不止支持java,还有很多编程语言。例:Groovy,Scala,Koltin

JAVA源代码.java
java编译器
字节码文件
JVM虚拟机

Class文件的结构属性:

  1. 魔数:每个class文件的头四个字节被称为魔数,它的作用就是确定这个文件是一个class文件,光靠文件的名字是不可以的。唯有以"cafe babe"开头的class文件方可被虚拟机所接受,这4个字节就是字节码文件的身份识别。
  2. 常量池:可以理解为class文件的资源仓库,是class文件中关联最多的数据类型,也是占用class文件最大的数据项目之一。存储的资源有:变量的属性,类型和名称。方法的属性类型名称等
  3. 访问标志:表示该class的属性和访问类型,是接口还是类,访问类型是不是public,是不是final修饰之类。
  4. 类索引,父类索引,接口索引:class文件靠这个来识别类的继承关系
  5. 字段表属性:用于描述类中声明的变量,比如变量的作用域,是否静态,是否final,数据类型等等
  6. 方发表属性:方法的类型,作用域
  7. 属性表类型:用于描述某些场景专有的信息,比如字段表中特殊的属性,方法表中特殊的属性
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

静为躁君S

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

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

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

打赏作者

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

抵扣说明:

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

余额充值