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

Wesley13
• 阅读 688

    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的特点之一——与平台无关

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

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

本剧终。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
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
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java常见问题整理
1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令
Wesley13 Wesley13
3年前
Java程序运行机制及开发环境
Java既是编译型语言,又是解释型语言java源文件首先需要通过javac编译生成后缀名为.class的字节码文件(与平台无关,只面向JVM),然后使用Java虚拟机将字节码解释成特定平台上的机器码运行。Java虚拟机JVM不同平台上的JVM不同,但是都提供了相同的接口。开发Java准备1.下
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
JVM入门到放弃之基本概念
1\.基本概念jvm是可运行Java代码的假想计算机,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。jvm是运行在操作系统之上的,屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在jvm上运行的字节码,就可以在多种平台上不加修改地运行。Java语言的一个非常重要的特点就是与平台的无关性(
Stella981 Stella981
3年前
JOptionPane修改图标
1.在Linux平台下.JOptionPane会显示Java默认的图标,在window平台不显示图标,如何替换这个图标了?2JOptionPane.setIcon(Icon)修改的是内容区域的icon,而不是左上角的Icon.所以需要通过修改Jdialog/Frame的图标来达到修改默认图标的问题.3.代码:if(JOptio
Stella981 Stella981
3年前
20165234 《Java程序设计》第一周学习总结
第一周学习总结教材学习内容总结java的特点语法简单,面向对象,稳定,与平台无关,多线程,动态。平台是由操作系统和处理器(CPU)所构成,每个平台都会形成自己独特的机器指令,相同的CPU和不同的操作系统所形成的的平台的机器指令可能是不同的。引用视频中老师的一句话:“操作系统是硬件的第一层虚拟机
可莉 可莉
3年前
20165234 《Java程序设计》第一周学习总结
第一周学习总结教材学习内容总结java的特点语法简单,面向对象,稳定,与平台无关,多线程,动态。平台是由操作系统和处理器(CPU)所构成,每个平台都会形成自己独特的机器指令,相同的CPU和不同的操作系统所形成的的平台的机器指令可能是不同的。引用视频中老师的一句话:“操作系统是硬件的第一层虚拟机