【Java基础专题】2. Java为什么被称为平台无关性语言?
本问题对应的项目链接:高频题回答模版训练
回答指导:其实不是Java平台无关,因为 Java 是运行在 JVM 之上的,大家回答的时候,可以从操作系统指令的角度回答一下,先解释一下**平台无关究竟是什么意思**,再回答 Java 为啥平台无关。
本问题对应的项目链接:高频题回答模版训练
回答指导:其实不是Java平台无关,因为 Java 是运行在 JVM 之上的,大家回答的时候,可以从操作系统指令的角度回答一下,先解释一下**平台无关究竟是什么意思**,再回答 Java 为啥平台无关。
共以下 14 个回答
平台无关就是指一次编写,到处执行。因为Java被编译成字节码之后翻译成机器指令后在JVM虚拟机上执行,不同的平台对JVM的虚拟机的实现不同,但都遵循相同的规范,Java代码最终都能实现一样的效果
首先的话来解释一下,这个平台无关性,平台无关性,它指的是你写的JAVA代码,在进行了一次编译之后就可以在各个平台上正常的运行,不管你是Windows ,mac os或者说,是Linux它都是可以,正常运行的,不需要编译很多次,也不需要修改代码
JAVA实现跨平台性的根本就是因为jvm,因为JAVA它的class文件它是运行在jvm上面的,所以说它是跟真正的操作系统没有关系的。只要你在你的操作系统上安装了对应版本的JAVA,并且你写的代码,它编译后的字节码文件符合JAVA虚拟机的规范,它就可以正常的运行。甚至来说即便不是JAVA这门语言,最终它能够编译出符合JAVA这个虚拟机运行规范的文件,它也是可以实现跨平台性的。这个就是我对跨平台性的一个理解。
源码——.class——机器码——不同平台上运行结果一致;
不能直接编译成机器码:1、兼容性差;2、受检查成本高;
从操作系统指令的角度来解释平台无关性,可以理解为程序在执行时不直接依赖于底层操作系统的特定指令集。也就是说 Java 能够跨平台,实现一次编写到处运行。
Java 具有平台无关性的核心是在于 JVM,而不是 Java。 JVM 隐藏了操作系统最底层的 API,对于我们 Java 工程师来说,只需面对 JVM 层面进行开发,再由 JVM 转译到其他其他系统对应的 API 完成对应的工作就可以了。
总结起来,Java之所以能够实现一次编写到处运行,是因为它采用了字节码作为中间表示形式,并依赖于JVM在不同平台上的解释和执行能力。这种平台无关性使得Java成为一种广泛应用于跨平台开发的编程语言。
Java被成为跨平台或者平台无关性语言是因为Java程序是要通过JVM来运行的,.Java被编译器编译成.Class字节码文件,然后通过ClassLoader装载到JVM当中,然后JVM跟据不同的平台转换成该平台能够识别的机器语言,而且达到一次运行,到处编译的强大特性。
首先平台无关性指的是程序可以在任何的操作系统和平台上运行而不需要经过任何修改。
而Java被称为平台无关性的语言是因为Java程序经过编译器编译后形成字节码(.class)文件,字节码文件可以在任何支持Java虚拟机的操作系统和平台上运行,因为Java虚拟机提供了运行字节码文件的环境,实际运行的是字节码文件,也就是说Java程序的运行实际依赖的不是操作系统与平台,而是Java虚拟机。所以说Java是平台无关性语言。
Java可以在Linux,Windows,maxos等操作系统上运行,可以实现编译一次,到处运行。Java运行在jvm上,jvm只需要编译后.class文件,识别字节码就能运行,只需要jvm对操作系统进行适配
平台无关字面意思就是跟平台没有关系,平台无关性语言就是可以在不同平台上面运行程序的语言,由于java是运行在JVM上的,JVM只认识字节码文件,字节码可以在任何支持java虚拟机的平台上运行,所以编写java程序,不用考虑底层硬件和操作系统,因为java虚拟机会将字节码转换为平台特点的机器语言执行。
编译生成的class文件能在不同操作系统运行,不用修改,而每个OS都有JVM,因此说JAVA跨平台
Java中对源代码进行编译,生成class文件,可以运行在不同的操作系统上,无需对源代码做任何修改,就是平台无关。
我们平常写的java源代码编译后成为class类型的字节码,该字节码可以运行在jvm虚拟机上面,而我们虚拟机就给我们实现了一些关系平台相关的操作,程序员是看不到的,所以只要在不同的操作系统安装jvm虚拟机,就可以实现平台无关性,所谓的平台无关性也是站在程序员的角度平台无关的。
同一套代码,在不同操作系统上运行,不需要对源代码做任何修改,即可顺利运行,这就叫做平台无关性。
java之所以可以实现平台无关性,依靠的是JVM和字节码(Class文件)。java编译器首先把.java文件编译打包成字节码,然后启动JVM,由JVM在不同平台上运行这些字节码,所以java代码的运行是不用直接跟操作系统交互的,而是通过JVM作为中间层,来屏蔽平台的差异,所以java程序员只需要专注于java程序的开发逻辑即可,而不需要过多的关注平台的细节。当然,这并不意味着java程序完全与平台无关,还是要注意一些可能导致问题的因素,例如:文件路径、编码格式、系统属性等。
平台无关指的是对于不同的操作系统,都可以用一种统一的格式执行代码,也就是一次编译,到处运行
我们编写的.java源程序只需要编译成.class字节码文件,之后让JVM去执行字节码文件,JVM为我们屏蔽了操作系统的差异性,所以只需要针对不同的操作系统实现对应的JVM就可以执行我们的java代码,在java开发者看来,java代码只是在一台虚拟机器上运行的,感受不到操作系统的存在。而且由于JVM只执行字节码文件,所以像kotlin这样的语言,只要可以编译成字节码文件,也可以在JVM上运行,这是JVM的语言无关性
如果你在Windows操作系统下写的编译的代码文件如果可以在Linuxs操作系统下下执行。这就是平台无关。因为.java文件编译后的.class文件可以在不同的操作系统上运行,前提是每一个操作系统上都需要安装适配的JVM平台,由此可见,Java不是平台无关性的,Java只是让每一个操作系统都必须有一个可以运行Java程序的平台,这个平台是在软件层面实现的,而不是在硬件层面实现的,如果在硬件层面上实现JVM,那么Java就失去了平台无关性。另外,我认为JVM的还有一大特点就是语言无关性,因为JVM只接收并执行.class文件,而不管这个.class文件就是是由Java代码经过javac编译器编译而来,还是其它语言通过自己的编译器编译成.class,还是网络上传递的.class文件。只要是.class文件,JVM就能接收并执行。
平台无关性是说,一种语言在一台计算机上的运行不受平台的限制,一次编译,到处运行。
Java 语言具有平台无关性的关键在于 JVM。虽然不同的操作系统使用不同的机器指令集来执行任务,同一份代码在不同的操作系统上可能无法直接执行,但是 Java 源文件经过 javac 编译器编译后形成的二进制字节码,可以被各个操作系统的 JVM 翻译成该操作系统所需的指令集,进而执行。这可以提高 Java 程序的可移植性,因为只需针对不同操作系统提供对应的 JVM 即可,无需修改源代码。