1.字节码文件的跨平台性、前端编译器

1.字节码文件的跨平台性

  1. Java语言是跨平台的语言,当java源代码编译成字节码后,如果想在不同的平台上运行,则无需再次编译。
  2. Java虚拟机是跨语言的虚拟机。Java虚拟机不和Java语言进行绑定,无论用何种语言进行开发,只要能够将源文件编译成正确的Class文件,那么这种语言就能够在Java虚拟机上面执行。例如,Kotlin语言编写的程序,经过编译器编译成Class文件之后,就能够在Java虚拟机上面运行。
    在这里插入图片描述
  3. 想要让Java程序正确的运行在JVM中,Java源码就必须被编译为符合JVM规范的字节码。
    这项工作由前端编译器完成。Javac是一种常用的能够将Java源码编译为字节码的前端编译器。
    在这里插入图片描述
  4. 前端编译器和虚拟机是两部分,并不包含在虚拟机中。黄色部分是虚拟机相关的内容。
    在这里插入图片描述

2.前端编译器(了解)

  1. Java源文件编译成字节码文件的编译器称为前端编译器,在执行引擎中的JIT编译器称为后端编译器。
    在这里插入图片描述
  2. Hotspot VM没有强制要求前端编译器只能使用javac,只要编译结果符合JVM规范都可以被JVM所识别。
  3. 在前端编译器领域,除了javac之外,还有ECJ(Eclipse Compiler for Java)编译器。不同之处在于,javac使用的是全量编译,每次编译都是编译所有的源代码;ECJ使用的是增量编译,每次编译只是对未编译的部分进行编译。
    在这里插入图片描述
    更多JVM文章请访问我的JVM专栏:
    https://blog.csdn.net/u011069294/category_10113093.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值