[@徐雷frank][¥20]什么是JAVA的平台无关性-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

[@徐雷frank][¥20]什么是JAVA的平台无关性

大河人家 2018-10-29 23:55:20 139861

与C C++相比,JAVA是如何实现与平台无关的

Java C++
分享到
取消 提交回答
全部回答(40)
  • 徐雷frank
    2019-07-17 23:10:58
    已采纳

    Java的平台无关性,概念听起来比较抽象。说简单通俗一线。Java的跨平台执行。
    我们编写的Java代码可以在不同的操作系统平台,Winlinux、mac等系统上运行、、
    底层使用了JVM的Java虚拟机托管执行Java代码。
    Java代码第一次编译生成的是中间代码。在JVM里执行在根据具体的系统平台编译成对应的CPU指令执行。
    做到与系统平台上的表面无关。

    0 0
  • cnhanxj
    2019-09-10 10:47:55
    推荐

    1、Java源代码编译之后得到的是字节码(byte code),不是机器指令。 2、字节码也可以看作是JVM才能看懂的源代码,在运行期间,JVM会将字节码解释、编译为机器指令。 3、Sun公司在开发Java语言时,为不同的系统平台提供了不同版本的JVM,用于将字节码解释、编译为各个系统平台所支持的机器指令。

    0 0
  • shawn2046
    2020-03-31 19:57:21

    因为Java代码并不会被直接编译成为机器码执行,二是先编译成为Java字节码,然后不同平台的JRE(Java运行环境)会将Java字节码再编译成为机器码来运行,这样整个结构的上层就平台无关了,所谓一次编译到处运行,就是只一次编译成字节码,字节码在其他平台都可以运行。

    0 0
  • 一只刺猬
    2020-03-30 10:22:15

    C/C++之所以不能跨平台,就是因为C/C++源程序是对平台编译的,所以与平台密切相关。如果有这样的一个环境:它既可以向下兼容(对平台兼容),又可以向上兼容(程序可以运行),那么不就可以跨平台了吗。基于这样的原理,Java在计算机的操作系统上又提供了一个Java运行环境——JRE(安装JDK)。 JRE由Java虚拟机,类库和一些核心文件组成,也就是说,只要平台提供了Java运行环境,Java编写的软件就可以在其上运行。 和C/C++不同的是,Java语言提供的编译器不针对特定的操作系统和CPU芯片进行编程,而是针对Java虚拟机把Java源程序编译成称为字节码的“中间代码”,然后Java虚拟机负责将字节码翻译成虚拟机所在平台的机器码,并让当前平台运行该机器码。 Java语言的运行原理: 在一个计算机上编译得到的字节码文件(就是.class文件),可以复制到任何一个安装了Java运行环境的计算机上直接运行。然后字节码文件由虚拟机负责解释执行,即Java虚拟机将字节码翻译成本地计算机的机器码,然后将机器码交给本地的操作系统运行。

    由于在一个计算机上编译得到的字节码文件可以复制到任何一个安装了Java运行环境的计算机上直接使用,所以字节码其实是一种“中间代码”,这也就是为什么“Java语言能够一次编译,处处运行,也就是Java跨平台的原因。”所以称Java是一种“半编译,半解释的语言”,即源程序——>编译——>字节码——>字节码解释程序——>对应平台的机器语言。”

    0 0
  • galaxystar
    2020-03-18 16:55:01

    java是基于jvm虚拟机来运行字节码,字节码是由java语言编译而成,不同平台的编译策略是和平台相关的,java语言本身和平台无关,编译器和平台有关

    0 0
  • 吴甜甜
    2020-02-08 19:39:15

    有解释器

    0 0
  • vincent_浩哥
    2019-12-09 15:24:00

    与平台无关是依赖于Java Virtual Machine(JVM),由于他的存在,可以实现一次编译,到处运行,官网文档:https://docs.oracle.com/javase/8/docs/index.html

    0 0
滑动查看更多
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程