使用Java语言编写应用程序最大的优点在于“一次编译,处处运行”,然而这并不是说所有的Java程序都具有Java跨平台的特性,

事实上,相当一部分的Java程序是不能在别的操作系统上正确运行的。

Java字节码的两种执行方式:

1.即时编译方式:解释器先将字节码编译成机器码,然后再执行该机器码。

2.解释执行方式:解释器通过解释一段执行一段的方式来完成Java字节码程序的全部操作。

Java程序执行和C++程序执行的对比分析:

Java源代码就好比C++源代码

Java源代码编译后的字节码就好比C++源代码编译后的80x86机器码(二进制程序文件)

JVM虚拟机好比80X86计算机系统

Java解释器好比80X86的CPU

真正的80X86CPU上运行的是机器码

而在Java解释器上运行的是字节码

可以把Java解释器想象成运行了“Java字节码”的“CPU”,

但该“CPU”不是通过硬件实现的,而是用软件实现的。

Java解释器实际上就是特定的平台下的一个应用程序。

只要特定平台实现了Java解释器程序,Java字节码就能通过解释器程序在该平台下运行,这是Java跨平台的根本。

当然,并不是在所有的平台下都有相应Java解释器程序,这也是Java并不能在所有的平台下都能运行的原因,它只能在已经实现了Java解释器程序的平台下运行。

机器码(machine code)是一种机器指令的集合,有时也被称为原生码(Native Code),是计算机的CPU可直接解读的数据。

最新文章

  1. KnockoutJS 3.X API 第五章 高级应用(2) 控制后代绑定
  2. [转]ASP.NET中使用UpdatePanel实现局部异步刷新方法和攻略
  3. NGUI 图片变灰
  4. LeetCode OJ-- Valid Number **@
  5. c++学习笔记(1)
  6. MongoDB 复制集模式Replica Sets
  7. 觉得VR头显太笨重?轻便的VR“神器”来了
  8. Java 9 揭秘(14. HTTP/2 Client API)
  9. cookie路径问题
  10. 洛谷P3246 [HNOI2016]序列 [莫队]
  11. 关于 python中的转义字符
  12. webstorm keys
  13. 【PAT】B1068 万绿丛中一点红(20 分)
  14. 广电的宽带网络真流氓,替换google的广告为百度的广告
  15. [转][译] Closures in Lua - Lua中的闭包
  16. c++的矩阵乘法加速trick
  17. android----HttpClient的get,post和图片上传服务器
  18. 180217_JAVA学习_TreeSet中存放含多个String的类并设置排序规则
  19. Django_缓存
  20. BST树、B树、B+树、B*树

热门文章

  1. 7.6 chcount.c -- 使用逻辑与运算符
  2. 进程间传递文件描述符——sendmsg和recvmsg函数
  3. [UE4]让Spline具象化
  4. MySQL查询语句报错 sql_mode=only_full_group_by 问题
  5. [SQL]事务回滚详解及示例
  6. rabbit原理及项目应用
  7. vector用法
  8. 深入理解Major GC, Full GC, CMS
  9. IntelliJ IDEA 设置背景图片
  10. 记一次nginx强制将https请求重定向http