Java的跨平台特性—Compile once, run anywhere

1 篇文章 0 订阅

我们常说的Compile once, run anywhere,也就是Java的跨平台特性,Java的跨平台特性与JVM的存在密不可分,理解如下。

1、跨平台特性的解释

其实Java语言本身与其他的编程语言没有特别大的差异,那么相同的字节码文件如何在不同的平台上运行呢(不同平台的机器码指令不同)?并不是说Java语言本身就可以跨平台,而是在不同的平台都有可以让Java语言运行的环境(JVM)。
举个例子:我们日常家庭的用电电压220V(.class字节码文件),但是不同的用电器(操作系统平台)能承受的最大电压不同,手机10V,电视110V,电灯电压12V,那么怎么才能使不变的220V电压适应纷繁复杂的用电器呢?答案就是为每一种用电器使用对应的电源适配器(JVM),把220V转换成该用电器能承受的合适电压。
在这里插入图片描述

2、从源码到运行的流程

(1)编码
我们使用Java语言编写的.java文件
(2)编译
把.java文件转换成.class字节码文件
(3)解释
负责解释执行字节码的是JVM,JVM将这些字节码文件加载进来,加载进来一句,就解释一句,解释出来一句就执行一句,相当于是解释和执行是同步执行的,这种模式被称为解释执行。

注意: 解释执行这个过程并不会产生目标文件,也就是说这些可以被平台执行的机器码文件并没有生成,下次如果还是这部分代码被执行的时候,还需要重新的被解释一遍,这样每次都重复这个过程就会很耗时,因此java引入了JIT,(在程序运行时) 将那些执行比较频繁的代码,也被称作热点代码,编译成为机器码,这个时候其实内存中是保存了一部分这部分机器码的,这样就解决了上面所描述的问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值