Java面试整理-基础篇2.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官网取得对应的安装版本,如下图
Java面试整理-基础篇2.Java的平台无关性
简而言之,Java的平台无关性实现如下图
Java面试整理-基础篇2.Java的平台无关性

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

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

4.JVM还支持哪些语言

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

附言

  • 转载请注明出处
  • 更多文章,请关注公众号《百育科技》,公众号会定期按系列整理文章。