究竟什么是Java虚拟机(JVM)?

究竟什么是Java虚拟机(JVM)?我们都知道,在Windows上,软件包后缀有exe,而苹果的MacOSX系统上没有安装exe。类似地,MacOSX系统上的软件安装包是dmg后缀,不能安装在Windows系统上。为什么不能安装不同系统上的软件,因为操作系统的底层实现是不同的。对于Windows系统,exe后缀的软件代码被编译成能被Windows系统识别的机器代码。对于MacOSX系统,最后将DMG后缀的软件代码编译为M…

大家好,又见面了,我是你们的朋友全栈君。

我们都知道,在Windows上,软件包后缀有exe,而苹果的Mac OS X系统上没有安装exe。类似地,Mac OSX系统上的软件安装包是dmg后缀,不能安装在Windows系统上。

为什么不能安装不同系统上的软件,因为操作系统的底层实现是不同的。对于Windows系统,exe后缀的软件代码被编译成能被Windows系统识别的机器代码。对于Mac OSX系统,最后将DMG后缀的软件代码编译为Mac OSX系统识别的代码。

究竟什么是Java虚拟机(JVM)?

系统软件不能通用是一个普遍的问题。但是所有使用Java的学生都知道Java代码可以在服务器端(Linux系统)或Windows系统上运行,但是我们还没有生成许多不同的代码。那么Java语言是如何做到这一点的呢?

与其他语言不同,Java语言不直接编译代码到系统相关的机器代码,而是将其编译成特定的语言规范,我们称之为字节码。无论在Windows、Mac OSX还是Linux系统中,Java程序都要编译成字节码文件,它们只能在那之后运行。

但是,即使编译成字节码文件,系统仍然不能理解字节码文件的内容,然后需要Java虚拟机的帮助。Java虚拟机会解析字节码文件的内容,并将它们转换成操作系统能够理解的机器代码。

究竟什么是Java虚拟机(JVM)?

简单地说,对于同一个Java源文件,我们把它编译成字节码,它既没有Linux也没有Windows系统知道。在这一点上,Java虚拟机是一个翻译器。它被转换为Linux系统上的Linux机器代码来监视Linux系统,而转换为Windows系统上的Windows机器代码来监视Windows系统。这样,Java就实现了“一次写,到处跑”的伟大愿景。

在Java虚拟机诞生之前,为了支持在不同系统上运行的软件,我们必须在多个平台上编写对应于特定系统的多个代码。但是Java虚拟机出现后,只需要根据具体的规范进行编译和编写。编译器编译字节码文件之后,虚拟机会将帮助您生成相应的Windows代码和MacCode字节码。基本上,最终将生成两个机器代码,Windows Code和MacCode,但是对于开发人员来说,他们只需要编写一次代码。Java虚拟机帮助开发人员进行重复性的工作,这使得开发更加高效。

许多初学者对Java虚拟机有误解,他们会觉得Java虚拟机只能运行Java代码。但事实上,Java虚拟机运行字节码文件。换句话说,如果在PHP中编写一段代码,并使用特定的编译器生成符合字节码规范的字节码文件,Java虚拟机也可以运行。

究竟什么是Java虚拟机(JVM)?

因此,虽然Java虚拟机的名称是Java虚拟机,但是Java虚拟机与Java语言没有直接关系。它只根据Java虚拟机规范读取类文件,根据规则解析和执行字节码指令,仅此而已。

如果你足够健壮,你可以编写一个编译器,将PHP语言代码编译成符合Java虚拟机规范的字节码文件,然后Java虚拟机也可以被执行。

确切地说,Java虚拟机绑定到字节码文件(类文件)。

最后,让我们回顾一下什么是虚拟机。事实上,Java虚拟机是字节码翻译器,它将字节码文件转换成每个系统的相应机器代码,以确保字节码文件可以在每个系统中正确运行。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/156872.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • 安装petalinux_怎么在Linux上搭建环境

    安装petalinux_怎么在Linux上搭建环境安装petalinux工具包和配置工作环境;·xilinx官网下载petalinux-v2017.3-final-installer.run安装包,注意:版本必须和你vivado一致; ·下载ubuntu16.4,按照ug1144安装工具包; ·建立petalinux安装目录,注意安装目录的权限必须为755且安装不能用root用户安装;$mkdir-p/opt/pkg/petal…

  • Android Log日志

    Android Log日志

  • idea 2021.5 激活码[在线序列号]

    idea 2021.5 激活码[在线序列号],https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • 【交换机】MAC-VLAN的功能作用是什么,如何设置[通俗易懂]

    【交换机】MAC-VLAN的功能作用是什么,如何设置[通俗易懂]MACVLAN就是基于MAC地址划分的VLAN,MACVLAN的最大优点就是用户不需要固定在某些端口下,可以随意移动,比如当用户物理位置移动时,即从一台交换机换到其它的交换机时,VLAN不用重新配置,所以,可以认为这种根据MAC地址的划分VLAN方法是基于用户的MAC地址信息来的。MACVLAN的缺点是初始化时,所有的用户都必须进行配置MAC与VLAN的对应关系。主要有两个配置步骤:1、所

  • VS Code注释快捷键[通俗易懂]

    VS Code注释快捷键[通俗易懂]单行注释:Ctrl+/或先按CTRL+K,再按CTRL+U取消单行注释:Ctrl+/或先按CTRL+U,再按CTRL+K块注释Alt+Shift+A

  • G1 收集器调优

    G1 收集器调优翻译:http://www.oracle.com/technetwork/articles/java/g1gc-1984535.html  学习如何适配、调优G1gc以用于评估、分析和性能优化。     G1收集器是用于hotspotJVM的低停顿、适合服务器的分代垃圾收集器。G1GC使用并发和并行阶段来获得目标停顿时间和维持优秀的吞吐量。当G1G

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号