Java的特点之一——与平台无关

    Java出现之前,C和C++是当时广泛使用的编程语言。但是C和C++都有一个共同的缺点,那就是只能在特定的平台进行编译。这里指的平台是由操作系统(OS)和处理器(CPU)构成的。C和C++源程序所在的特定平台对其源文件进行编译、连接,生成当前平台的机器指令(平台的机器指令可以被该平台直接识别和执行),根据当前平台的机器指令生成可执行文件。那么,在任何与当前平台相同的平台上都可以运行这个可执行文件。但每个平台都会形成自己独特的机器指令,相同的CPU和不同的操作系统所形成的平台的机器指令可能是不同的。假如电器的设备更换了,平台就不能保证程序能正确运行。这个时候可能需要修改源程序,并针对新的平台重新编译源程序。而Java最大的优势就是编写的软件能在所有的计算机上运行。之所以能做到这一点,是因为Java可以在计算机的操作系统之上再提供一个Java运行环境(Java Runtime Environment--JRE),该运行环境是由Java虚拟机(Java Virtual Machine--JVM)、类库以及一些核心文件组成。Java虚拟机的核心是字节码指令(字节码指令可以被Java虚拟机直接识别和执行),字节码指令不是机器指令,因此它不与特定的平台相关。而Java针对不同平台提供的Java虚拟机的字节码指令是相同的,先看看Java程序的运行过程:

Java语言提供的编译器不针对特定的平台进行编译,而是针对Java虚拟机编译成字节码(称为“中间代码”),字节码被Java虚拟机(Java解释器是Java虚拟机的一部分)解释、运行。Java虚拟机将字节码翻译成本地计算机的机器指令,并将机器指令交给平台运行。

上图是本篇博客的整理。为了更方便清晰的理解,我们可以脑补一个剧场:维奇多去了英国留学,凭借流利的英语和英俊的外表,他认识了很多英国朋友。有一天,他遇到了一个充满罗曼蒂克风情的法国美女。但很可惜,他不会法语,她不会英语,所以他们无法交流。橙汁是一个富二代,虽然他只会中文,但是他有钱,雇佣了一个万能翻译官,一起环游世界美滋滋呀无压力呀。

脑补完剧情,有没有更好的帮助你理解呢?总之,只要平台提供了Java运行环境,用Java编写的软件就能在其上运行。

本剧终。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java常见问题整理

1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令

Java程序运行机制及开发环境

Java既是编译型语言,又是解释型语言java源文件首先需要通过javac编译生成后缀名为.class的字节码文件(与平台无关,只面向JVM),然后使用Java虚拟机将字节码解释成特定平台上的机器码运行。Java虚拟机JVM不同平台上的JVM不同,但是都提供了相同的接口。开发Java准备1.下

KVM调整cpu和内存

一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid