0

0

java为什么能跨平台

青灯夜游

青灯夜游

发布时间:2019-05-22 17:51:14

|

23309人浏览过

|

来源于php中文网

原创

跨平台原因:java虚拟机(JVM)能跨平台;JAVA程序不是直接在电脑(CPU)上运行的,而是在java虚机(JVM)上进行的,每个系统平台都是有自己的JVM虚拟机,所以JAVA语言能跨平台。java是先把java文件编译成二进制字节码的class文件,jvm再解释执行class文件;就是因为java是运行在jvm上的,所以它的代码能不经修改在不同平台的jvm上运行。

java为什么能跨平台

本教程操作环境:windows7系统、java8版、DELL G3电脑。

JAVA语言为什么能跨平台?

Java之所以能跨平台,是因为java虚拟机(JVM)能跨平台。

因为Java程序编译之后的代码不是能被硬件系统直接运行的代码,而是一种“中间码”——字节码。然后不同的硬件平台上安装有不同的Java虚拟机(JVM),由JVM来把字节码再“翻译”成所对应的硬件平台能够执行的代码。因此对于Java编程者来说,不需要考虑硬件平台是什么。所以Java可以跨平台。

立即学习Java免费学习笔记(深入)”;

1.png

因为它有虚拟机(JVM),JAVA程序不是直接在电脑上运行的,是在java虚机(简称JVM)上进行的,每个系统平台都是有自己的虚拟机(JVM),所以JAVA语言能跨平台。 

  • Java代码不是直接运行在CPU上,而是运行在Java虚拟机上的(JVM)。

  • java是先把java文件编译成二进制字节码的class文件,jvm就解释执行class文件。

  • 就是因为java是运行在jvm上的,所以它的代码就能不经修改在不同平台的jvm上运行。

扩展知识:

JVM 的专业解释如下

Java 虚拟机(Java Virtual Machine,简称 JVM)是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java 虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。JVM 屏蔽了与具体操作系统平台相关的信息,使 Java 程序只需生成在 Java 虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM 在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。

上面的解释看不懂也比较正常,本来不想把专业解释放上来的,想了想还是算了,毕竟还是要让大家对 JVM 有一点详细的认识。如果看不懂专业解释的话,我就用大白话给大家说:

X-CART  GOLD
X-CART GOLD

X-Cart号称是全球最强大的PHP购物车软件,几乎囊括所有电子商务功能,采用网页方式管理后台,多语言支持,智能库存管理,模板定制灵活,功能插件化、模块化。X-Cart分为gold版和Pro版这两个版本。Gold版为普通商店版,Pro为商城版。这款软件的优势是功能比较强大,由于是付费方式采用终生制的开源软件,软件的稳定性、安全性以及可扩展性较强。目前已知的能与x-cart跨平台整合的软件包括了国外

下载

JVM,也就是 Java 虚拟机,就是一个平台,包含于 JRE 的下面。当你需要执行某个 Java 程序时,由 JVM 帮你进行编译和执行。我们编写的 Java 源码,编译后会生成一种 .class 文件,称为字节码文件。Java 虚拟机就是负责将字节码文件翻译成特定平台下的机器码然后运行。

而且JVM 分为很多个系统版本的,你编写好的 Java 程序,无论到哪个平台上,Windows 也好,Linux 也好,macOS 也好,只需要找到 JVM,便可以成功编译和执行。也就是说,只要在不同平台上安装对应的 JVM,就可以运行字节码文件,运行我们编写的 Java 程序。所以这也就是 Java 跨平台性良好,平台无关特性的来历。

而这个过程中,我们编写的 Java 程序没有做任何改变,仅仅是通过 JVM 这一”中间层“,就能在不同平台上运行,真正实现了”一次编译,到处运行“的目的。

JVM 是一个“桥梁”,是一个“中间件”,是实现跨平台的关键,Java 代码首先被编译成字节码文件,再由 JVM 将字节码文件翻译成机器语言,从而达到运行 Java 程序的目的。

注意:编译的结果不是生成机器码,而是生成字节码,字节码不能直接运行,必须通过 JVM 翻译成机器码才能运行。不同平台下编译生成的字节码是一样的,但是由 JVM 翻译成的机器码却不一样。

所以,运行 Java 程序必须有 JVM 的支持,因为编译的结果不是机器码,必须要经过 JVM 的再次翻译才能执行。即使你将 Java 程序打包成可执行文件(例如 .exe),仍然需要JVM的支持。

注意:跨平台的是 Java 程序,不是 JVM。JVM 是用 C/C++ 开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的 JVM。

关于JVM的执行效率

Java 推出的前几年,人们有不同的看法,解释字节码肯定比全速运行机器码慢很多,牺牲性能换来跨平台的优势是否值得?

然而,JVM 有一个选项,可以将使用最频繁的字节码翻译成机器码并保存,这一过程被称为即时编译。这种方式确实很有效,致使微软的 .NET 平台也使用了虚拟机。

现在的即时编译器已经相当出色,甚至成了传统编译器的竞争对手,某些情况下甚至超过了传统编译器,原因是 JVM 可以监控运行时信息。例如,即时编译器可以监控使用频率高的代码并进行优化,可以消除函数调用(即“内嵌”)。

但是,Java 毕竟有一些 C/C++ 没有的额外的开销,关键应用程序速度较慢。比如 Java 采用了与平台无关的绘图方式,GUI 程序(客户端程序)执行要慢;虚拟机启动也需要时间。

相关视频教程推荐:Java视频教程

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

846

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

745

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

741

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

397

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

420

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

447

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

431

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16947

2023.08.03

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

58

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 2.9万人学习

C# 教程
C# 教程

共94课时 | 7.5万人学习

Java 教程
Java 教程

共578课时 | 50.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号