什么是虚拟机?

news2024/10/7 2:27:36

我们都知道在 Windows 系统上一个软件包装包是 exe 后缀的,而这个软件包在苹果的 Mac OSX 系统上是无法安装的。类似地,Mac OSX 系统上软件安装包则是 dmg 后缀,同样无法在 Windows 系统上安装。

为什么不同系统上的软件无法安装,这是因为操作系统底层的实现是不一样的。对于 Windows 系统来说,exe 后缀的软件代码最终编译成 Windows 系统能识别的机器码。而 Mac OSX 系统来说,dmg 后缀的软件代码最终编译成 Mac OSX 系统能识别的代码。

系统软件无法通用是一个常见的问题。但使用过 Java 的同学都知道,Java 代码可以在服务端(Linux 系统)运行,也可以在 Windows 系统运行,但我们并没有生成多份不同的代码。所以 Java 语言是如何做到的呢?

与其他语言不同,Java 语言并不直接将代码编译成与系统有关的机器码,而是编译成一种特定的语言规范,这种语言规范我们称之为字节码。无论 Java 程序要在 Windows 系统,还是 Mac OSX 系统,抑或是 Linux 系统,它首先都得编译成字节码文件,之后才能运行。

但即使编译成字节码文件了,各个系统还是无法明白字节码文件的内容,这时候就需要 Java 虚拟机的帮助了。Java 虚拟机会解析字节码文件的内容,并将其翻译为各操作系统能理解的机器码。

简单地说,对于同样一份 Java 源码文件,我们编译成字节码之后,无论是 Linux 系统还是 Windows 系统都不认识。这时候 Java 虚拟机就是一个翻译官,在 Linux 系统上翻译成 Linux 机器码给 Linux 系统听,在 Windows 系统上翻译成 Windows 机器码给 Windows 系统听。这样一来,Java 就实现了「Write Once,Run Anywhere」的伟大愿景了。

在 Java 虚拟机还没出现之前,为了支持软件在不同系统上运行,我们必须在多个平台写多份代码,分别对应特定的系统。但 Java 虚拟机出现之后,你只需要按照特定规范编译书写,编译器编译成字节码文件后,虚拟机会帮你将字节码生成对应的 Windows Code 和 Mac Code。本质上最终还是会生成 Windows Code 和 Mac Code 两份机器代码,但对于开发人员来说,却只需要写一次代码了。Java 虚拟机帮开发人员承担了重复的工作,让开发效率更高了。

很多初学者关于 Java 虚拟机有一个误区,他们会觉得 Java 虚拟机只能运行 Java 代码。但实际上 Java 虚拟机运行的是字节码文件。换句话说,如果你用 php 语言写一段代码,并自己用特定编译器能生成符合字节码规范的字节码文件,那么 Java 虚拟机也是可以运行的。

所以虽然名字是 Java 虚拟机,但 Java 虚拟机与 Java 语言没有直接关系,它只按照 Java 虚拟机规范去读取 Class 文件,并按照规定去解析、执行字节码指令,仅此而已。

如果你够牛逼,你完全可以写一个编译器,将 PHP 语言代码编译成符合 Java 虚拟机规范的字节码文件,那么 Java 虚拟机也是可以执行的。

准确地说,Java 虚拟机与字节码文件(Class文件)绑定。

最后,让我们回顾一下,到底什么是虚拟机?其实 Java 虚拟机就是一个字节码翻译器,它将字节码文件翻译成各个系统对应的机器码,确保字节码文件能在各个系统正确运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/514147.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

常见4种风险定量分析法

常见的风险定量分析方法主要有: 一、 敏感性分析法 用于确定哪些风险对项目影响最大,将其它不确定因素固定在基准值,再考察某个因素的变化会对目标产生多大的影响。 在这一分析中,检查每一个项目成分的不确定性对所检查项目目标的…

提示工程L1:关键原则

提示工程指南:关键原则 一、 环境配置 chatgpt使用有诸多限制,所以采用国产模型来代替,加载开源的chatGLM模型,使用ChatGLM-6b的INT8版本。 chatGLM6b在LLM匿名竞技场中的排名: import os import torch import war…

大学生找工作防坑指南,收藏10000+

2023年就业季即将抵达,你害怕了吗? 据数据统计,今年的应届生人数再创新高,将达到1158万人,相信同学们看到这串数字已经感到毛骨悚然。然而大学生要面临的挑战不仅这些,最残酷的考验还在最后。 作为初出茅庐…

某些科技外企结束在中国市场直接运营,你如何看?

在新的竞争态势下, 向左走,还是向右走…… 【全球存储观察 | 热点关注】前些天,我发了一篇文章《你如何看LinkedIn“领英职场”将于8月9日起停止中国服务?》引发了业内朋友的热议,大家一致认为&#xff0c…

const和int const 理解笔记(图、代码、讲解)

本文参考了 》C 中的 const & (常引用)参数 - 知乎 因为博文写的很详细,所以博主按着自己的理解写了demo, 和一些方便自己理解的备注。 自学的时候看到了下面这个代码,所以 const&是啥 首先,一句…

C++中继承的语法和使用

C入门必看 继承的定义及概念概念定义 基类和派生类对象赋值转换继承后的作用域派生类默认的6个成员函数该何去何从? 多继承 面向对象语言3大特性:封装、继承、多态。 继承的定义及概念 概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最…

Dubbo接口测试没你想的那么高大上

主题:Dubbo接口测试没你想的那么高大上 一、Dubbo是什么? Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架一款分布式服务框架、高性能和透明化的RPC远程服务调用方案、SOA服务治理方案下图是阿里巴巴技术解决方案演变图,从单应用->…

卡特兰数三个通项公式的推导

前提条件: 有两种操作,一种操作的次数不能超过另外一个,或者是不能有交集这些操作的合法方案数,通常是卡特兰数 情景: 1)n个0和n个1构成的字串,所有的前缀子串1的个数不超过0的个数&#xff…

月薪低于5千元必看,省钱购物攻略,本人亲测有效

作为资深的网购用户,我不允许我的姐妹们还不知道,网上购物如何省钱?如果你是学生党,或者月薪低于5千元,一定要看一看!学会了不但能提升生活品质,还能帮你省下好多钱~ 同样的东西,我…

云渲染动画价格一般多少?

云渲染是什么? 云渲染就是通过互联网将用户本地需要渲染的文件上传到云端服务器中,再通过云端庞大的计算机集群资源进行运算操作,帮助用户在云端完成渲染工作后,用户再下载到本地的过程,整个过程操作十分简便。 云渲染…

解释一下泛型擦除?为什么java必须强制?

一、概述: 在解释什么是泛型擦除之前我们得先了解什么是Java泛型。所谓的泛型就是参数化的类型。这就意思着我们可以具体的类型作为一个参数传递给方法、类、接口。 为什么我们需要泛型呢?首先我们都知道在java里,Object就是对象的父类。Ob…

2023 年10款「会议管理」软件对比

在这篇文章中,我们将介绍2023年你可以尝试的10个会议管理软件。我们还将介绍会议管理的基础知识,涉及的步骤,以及如何创建会议议程。 2023 年 10 款会议管理软件对比 会议管理软件解决方案是一种数字工具,可以让个人和团队计划、…

一、【Pytorch笔记】pytorch简介,开发环境安装,搭建

一、下载Anaconda Anaconda包括Conda、Python以及一大堆安装好的工具包(其他深度学习里用到的东西),比如:numpy、pandas等。所以下了Anaconda就不用下载Python进入Anaconda官网:https://www.anaconda.com/download/下…

【数字 IC】从底层重新认识 D 触发器、建立时间和保持时间

目录 1. NMOS 和 PMOS 2. MOS 管搭建逻辑门 3. 锁存器和触发器 3.1 交叉耦合反相器 3.2 SR 锁存器 3.3 D 锁存器 3.4 D 触发器 4. D 触发器的建立、保持时间 1. NMOS 和 PMOS MOSFET(金属氧化物半导体场效应晶体管)或 IGFET(绝缘栅场…

Web3中文|又一巨头入局?亚马逊或将正式进军NFT领域

行业的风向总随着巨头公司而动。 自从亚马逊公司推出 NFT 市场的消息传出后,大众的目光就锁定在了亚马逊的身上,作为科技巨头的亚马逊入局 NFT 对整个行业都有着举足轻重的意义。 受 FTX 的崩溃的影响,亚马逊 NFT 市场的推出几经波折&#xf…

InnoDB和MySAM有什么区别?

首先,MySAM和InnoDB都是mysql里面的两个存储引擎,mysql5.5版本之前的存储引擎默认是MySAM,mysql5.5版本以后的存储引擎默认是InnoDB,它们底层数据结构都是基于B树的。 Mylsam存储引擎: Mylsam索引是非聚簇索引,Mylsa…

旅游景点剧本杀小程序

旅游景点剧本杀小程序是一种基于微信、支付宝等平台的应用程序,其主要功能包括以下几个方面: 游戏规则和背景介绍:小程序可以提供游戏规则和背景介绍,让玩家更好地了解游戏内容和任务。 队伍组建和角色选择:在…

API网关简介|TaobaoAPI接入

API网关是什么 在日常工作中,不同的场合下,我们可能听说过很多次网关这个名称,这里说的网关特指API网关(API Gataway)。字面意思是指将所有API的调用统一接入API网关层,由网关层负责接入和输出。 那么在什…

智慧安监方案:AI及视频技术在企业安全生产中的风险预警作用

安全生产是企业生产管理中十分重要部分,在实际场景中,很多作业人员普遍存在安全意识薄弱的问题,大大增加了作业风险。如何建立健全的安全风险研判与监测预警机制,引入大数据、视频识别等技术手段,对安全生产领域潜在风…

EasyCVR视频融合平台设备接入的步骤及端口配置的相关注意事项

EasyCVR视频融合平台基于云边端架构,能实现视频汇聚与集中管理、视频多端分发、多屏展示。平台可支持多协议与多类型设备接入,具体包括国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、大华SDK、宇视SDK等,能对外分发RTMP、RTSP、HTTP-F…