java语言规范_Java面试整理-基础篇2.Java的平台无关性


1.什么是平台无关性

平台性是指一种语言在计算机上的运行不受平台的约束,一次编译,到处执行。 有两种:源代码级和目标代码级。而C和C++具有一定程度的源代码级平台无关,表明用C或C++写的应用程序不用修改只需重新编译就可以在不同平台上运行。而Java编译出来的是字节码,到哪个平台都能用,只要有那个平台的JDK就可以运行,所以,Java程序的最大优势就是平台无关性。


2.Java的平台无关性是怎么实现的


谈论Java的平台无关性,就要先了解Java是如何运行的。在计算机中其实真正执行的是由0和1组成的二进制文件。而我们通常开发使用的C、C++、Java等都是高级语言。如果要让计算机识别Java代码,就需要把它“翻译”成二进制文件。这个过程称为编译。执行这一过程的工具叫编译器。在Java中,要把Java代码编译成二进制文件,需要进过前端编译和后端编译两步。
前端编译主要指和源语言有关但与目标机无关的部分。比如我们熟知的javac。以及eclipse、idea等IDE中内置的前端编译器。都是为了把.java代码转换为.class字节码。
后端编译就是将中间代码翻译成机器语言。Java中的这一步骤由虚拟机执行。所以,Java虽然是平台无关的,但是虚拟机(JVM)却是平台相关的,不同操作系统需要对应的JVM。我们可以从[orale官网](https://www.oracle.com/java/technologies/javase-jdk14-downloads.html)取得对应的安装版本,如下图

827b07ef3bbd88d64dc925ef9bf9ca66.png

简而言之,Java的平台无关性实现如下图

9c1304bf27adc8d2e27008af4bf67206.png


3.有了虚拟机就能实现平台无关性了吗


上面我们提到,Java通过虚拟机在不同的平台将Class文件翻译成对应的二进制文件。其实还有一位重要主演就是Java语言规范。Java的语言规范,保证了基本数据类型的一致,为Java的平台无关性提供了强力保障。举一个简单的例子,对于int类型,在Java中,int占4个字节,这是固定的。但是在C++中却不是固定的。所以,在不同的平台中,对于同一个C++程序的编译结果会出现不同的行为。


4.JVM还支持哪些语言


除了Java之外,其实JVM还可以支持一大批语言,比如Kotlin、Groovy、JRuby、Jython、Scala等

## 附言

* 转载请注明出处

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值