1、为什么

  我们都知道Java有一个特性,那就是与平台无关性,一次编译到处运行,那么这是怎么实现的呢?

  Java语言与其他语言相比,最大的优势就是编写的软件能在执行码上兼容,在所有的计算机上运行。Java之所以能做到这点,是因为Java可以在计算机的操作系统上再提供一个Java运行环境(Java Runtime Environment,JRE)。该运行环境由Java虚拟机(Java Virual Machine,JVM)、类库以及一些核心文件组成,也就是或,只要平台提供了Java运行环境,Java编写的软件就能再其上运行。

  与平台无关性,这里的平台指的是操作系统,每个平台都会有自己独特的机器指令,而高级语言都要编译成该平台的机器语言才能在该平台上运行,所以不同平台上的编译方法要不同,才能正确的在特定的机器(平台)上运行我们的程序。

  与平台无关系是指软件的运行不因操作系统、处理器的变化而无法运行或出现运行错误。

  Java虚拟机的核心是所谓的字节码指令,即可以被Java虚拟机直接识别、执行的一种由0、1构成的序列代码。字节码并不是机器指令,因为他不和特定的平台相关,不能被任何平台直接识别、执行。Java针对不同的平台提供的Java虚拟机的字节码指令都是相同的,例如,所有的虚拟机都将11110000 识别、执行为加法操作。

  和C/C++不同的是,Java语言提供的编译器不针对特定的操作系统和CPU芯片进行编译,而是针对Java虚拟机把Java源文件编译成称为字节码的 “中间代码”,例如Java源文件中的+被编译成字节码指令11110000.字节码是可以被Java虚拟机识别、执行的代码,即Java虚拟机复负责解释运行字节码,其原理是:Java虚拟机负责将字节码翻译成虚拟机所在平台的机器码,并让当前平台运行该机器码,如图:

  在一个计算机上编译得到的字节码文件可以复制到任何一个安装了Java运行环境的计算机上直接使用。字节码由Java虚拟机解释运行,即Java虚拟机负责将字节码翻译成本地计算机的机器码,并将机器码交给本地的操作系统执行。

2、总结

  一句话总结就是:Java的编译器将Java源文件编译为Jvm的字节码之后,Jvm再将字节码翻译为虚拟机所在的平台的机器码。

  以.java结尾的叫Java源文件,.class结尾的叫字节码文件,源文件中有几个类,字节码就生成几个.class文件(内部类不算)。Java中的main类称为启动类或者主类,Java程序总数从主类开始执行,过程如图:

内容参考自(清华大学 J2使用教程),若侵权,请联系我删除

Java为什么与平台无关相关推荐

  1. java虚拟机 什么语言_什么是Java虚拟机?为什么Java被称为平台无关的编程语言...

    一.什么是java虚拟机? java虚拟机是执行字节码文件(.class)的虚拟机进程. java源程序(.java)被编译器编译成字节码文件(.class).然后字节码文件,将由java虚拟机,解释 ...

  2. java平台无关性_为什么Java能够实现平台无关性?

    前言从最初学习Java开始,我们就知道Java的口号是:"一次编写,到处运行".没有了平台的束缚,使得我们再编写Java时并不需要(那么)关心将来运行程序的平台. 那么,Java是 ...

  3. 什么是Java虚拟机?为什么Java被称为平台无关的编程语言

    一.什么是java虚拟机? java虚拟机是执行字节码文件(.class)的虚拟机进程. java源程序(.java)被编译器编译成字节码文件(.class).然后字节码文件,将由java虚拟机,解释 ...

  4. java 平台无关_Java | 为什么 Java 实现了平台无关性?

    前言从最初学习Java开始,我们就知道Java的口号是:"一次编写,到处运行".没有了平台的束缚,使得我们再编写Java时并不需要(那么)关心将来运行程序的平台. 那么,Java是 ...

  5. Java修炼之路——基础篇——平台无关性

    Java如何实现平台无关性? 首先说无论是哪种语言,都需要经过操作系统和CPU来完成程序的运行.平台无关性指的是程序不会因为操作系统和处理器的不同而不能运行或者发生运行错误.而不同的CPU和OS组成的 ...

  6. Java是如何实现平台无关性(跨平台)的?

    相信对于很多Java开发来说,在刚刚接触Java语言的时候,就听说过Java是一门跨平台的语言,Java是平台无关性的,这也是Java语言可以迅速崛起并风光无限的一个重要原因.那么,到底什么是平台无关 ...

  7. Java的平台无关性是怎么实现的?

    前言 在接触Java的时候,经常能听到Java的特点之一就是:"一次编译,到处运行(Write Once, Run Anywhere)".这种特点对于Java来说,有什么好处呢?J ...

  8. java语言有没有平台无关性_Java语言具有良好的安全性和可移植性及平台无关性。...

    [判断题]在类的定义中如果不明确给出父类,那么默认父类是Object类. [判断题]数组一旦创建大小不可改变. [单选题]手绘天花布置图的表示方法中,凡是剖到的墙.柱的断面轮廓线用( )绘制. [单选 ...

  9. 深入Java虚拟机(2)——Java的平台无关性

    一.平台无关性的好处 Java技术在网络环境下非常有用,其中一个关键理由是,用Java创建的可执行二进制程序,能够不加改变地运行于多个平台. 这样的平台无关性随之带来许多的好处.这将极大地减轻系统管理 ...

最新文章

  1. R语言数据包自带数据集之survival包的colon数据集字段解释、数据导入实战
  2. 每天定时备份mysql数据库任务
  3. 2017-2018-1 20155226《信息安全系统设计基础》第2周学习总结
  4. POJ C++程序设计 编程题#4:计算整数平方和
  5. 在Browser Application中使用XNA
  6. 秒半价,限三天。戴尔i7高配电脑低至2750元
  7. POJ - 1061 青蛙的约会(扩展欧几里得)
  8. Android小测验感受
  9. xml生成2维码_MyBatis(2)之MyBatis-Generator最佳实践
  10. python保存和加载数组
  11. apache2.4 php5.6.30,php5.6.3 + apache2.4.25 安装配置
  12. Python检查字符串重叠部分并进行拼接
  13. java通达信_通达信公式转换JAVA
  14. 144个城市坐标Python程序
  15. 用计算机和电视机组成家庭影院,家庭影院怎么连接电脑_家庭影院连接电脑详解【图文】-太平洋IT百科...
  16. 孔雀东南飞用mysql存储_【原】一个真实的故事,现实版的《孔雀东南飞》
  17. 币种对应的转换因子(处理日元台币…
  18. .net core 使用阿波罗配置中心
  19. jQuery EasyUI详解-EasyUI环境配置
  20. layui table点击tr更改当前行颜色

热门文章

  1. 蝶变!三线城市高新产业与人口的深度观察(上篇)-原创
  2. hive insert 时遇到锁表怎么解决
  3. 如何搭建一个自己的知识付费平台
  4. ASM 的归档日志双份的情况
  5. mysql存带表情的微信昵称_MySQL保存 emoji 表情(微信昵称表情)
  6. Go语言,区块链公链,区块链钱包和区块链浏览器技术培训
  7. 2021华科计算机学院推免生名单,武汉理工大学2021届保研率14.9%,主要保研本校、武大、华科...
  8. 信息学奥赛一本通C++语言-----1124:矩阵加法
  9. fitz 将pdf裁剪成左中右三部分,并提取内容保存为excel
  10. Python使用fitz库报错、运行异常解决办法