Java跨平台的原理
2024-10-10 01:24:44
使用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可直接解读的数据。
最新文章
- KnockoutJS 3.X API 第五章 高级应用(2) 控制后代绑定
- [转]ASP.NET中使用UpdatePanel实现局部异步刷新方法和攻略
- NGUI 图片变灰
- LeetCode OJ-- Valid Number **@
- c++学习笔记(1)
- MongoDB 复制集模式Replica Sets
- 觉得VR头显太笨重?轻便的VR“神器”来了
- Java 9 揭秘(14. HTTP/2 Client API)
- cookie路径问题
- 洛谷P3246 [HNOI2016]序列 [莫队]
- 关于 python中的转义字符
- webstorm keys
- 【PAT】B1068 万绿丛中一点红(20 分)
- 广电的宽带网络真流氓,替换google的广告为百度的广告
- [转][译] Closures in Lua - Lua中的闭包
- c++的矩阵乘法加速trick
- android----HttpClient的get,post和图片上传服务器
- 180217_JAVA学习_TreeSet中存放含多个String的类并设置排序规则
- Django_缓存
- BST树、B树、B+树、B*树
热门文章
- 7.6 chcount.c -- 使用逻辑与运算符
- 进程间传递文件描述符——sendmsg和recvmsg函数
- [UE4]让Spline具象化
- MySQL查询语句报错 sql_mode=only_full_group_by 问题
- [SQL]事务回滚详解及示例
- rabbit原理及项目应用
- vector用法
- 深入理解Major GC, Full GC, CMS
- IntelliJ IDEA 设置背景图片
- 记一次nginx强制将https请求重定向http