JVM_Java的跨平台性

1. 什么是平台?

CPU处理器与操作系统的整体叫平台。

  • CPU: 每种CPU又有特定的指令集
  • 操作系统: 不同的操作系统支持不同CPU的指令集

2. C语言的跨平台

C语言是将.c源程序在不同系统的编译器上编译得到可执行程序。
在这里插入图片描述
使用特定编译器编译的程序只能在对应的平台运行,这里也可以说编译器是与平台相关的,编译后的文件是平台相关的。然而我么所说的 语言跨平台是编译后的文件跨平台,而不是源程序跨平台。

3. Java的跨平台

java的跨平台是java编译器编译生成一个 .class 的中间代码,.class文件是跨平台的,在不同平台可以解释执行
在这里插入图片描述

4. C和Java跨平台两者的区别

  • C是编译执行的,编译器与平台相关,编译器生成的可执行程序与平台相关
  • Java是解释执行的,编译为中间码的编译器与平台无关,编译生成的中间码与平台无关(一次编译,到处运行),中间码再由解释器解释执行,解释器是与平台相关的,也就是不同的平台需要不同的解释器来解释.class中间码。

注意

  • Java先编译后解释
  • 同一个.class文件在不同的虚拟机会得到不同的机器指令(Windows和Linux的机器指令不同),但是最终执行的结果却是相同的

5. 总结

    跨平台性的平台表示的是操作系统,但由于各操作系统支持的指令集不完全一直,所以会让程序在不同的操作系统上执行不同的程序代码。Java开发了适用于不同操作系统及位数的虚拟机,屏蔽了各个系统的差异,提供统一的接口,对于开发者而言只需要安装不同的Java虚拟机且Java程序遵循Java规范就可以实现跨平台。

面试回答:
        Java通过不同系统、不同版本、不同位数的Java虚拟机(JVM),来屏蔽不同子系统指令集差异,而对外提供统一的接口,对于普通的Java开发者而言,我们只需要按照统一的应用开发接口(API) 开发即可,如果程序要部署到不同的环境时,只需要在系统上面安装对应的虚拟机即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值