java可以跨平台的原因是什么?

news2024/11/18 23:34:51

因为不同平台可以安装对应的JVM(Java Virtual Machine),它是C/ C++写的,JVM可以屏蔽所有和平台相关的信息,并帮助把Java文件经过编译后生成的和平台无关的class类文件(也就是字节码)从硬盘读取到内存中,并转换为机器码执行。

总结:一个就是JVM,一个就是生成的运行类文件和平台无关。所以可以拿着这些文件在不同平台执行。

Python、PHP同理。

C/C++需要根据不同的平台和操作系统选择不同的编译器和库文件,编译后生成的可执行文件不同平台是不一样的,格式如可执行文件名都不一样,内容也不一样,它中间从编译——汇编——链接,汇编语言和链接都与平台有关,所以不能跨平台。Java生成的不是可执行文件而是中间件的类文件,需要在JVM中进一步编译成机器语言才能执行,中间件和平台无关。

JVM一般不需要独立安装,安装JRE(Java Runtime Environment)的时候就会带上,JRE其实也可以不用独立安装,安装JDK(Java Development Kit)的会带上。

相比C/ C++,Java需要先转为字节码,所以效率相对较低,但已经越来越接近原生机器码的水平了。另外,像Groovy 、Kotlin、Scala 等等语言也是编译成字节码,所以他们也能在jvm上运行,可见jvm的强大!在这里插入图片描述

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

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

相关文章

Java面试题(持续更新中)

一、Java基础集合多线程JVM 1.Java基础 1.1面向对象和面向过程的区别 面向过程:面向过程的性能比面向对象高。因为类调用时需要实例化,消耗比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、Li…

内存卡数据恢复软件推荐,简直是高效恢复好帮手!

“朋友们在使用内存卡时有没有好的内存卡数据恢复软件推荐呀?我的内存卡对我来说真的很重要,但是我不小心把里面的数据删除了,我应该怎么做才能恢复里面的数据呢?” 内存卡为我们的生活提供了很多的便利,我们可以在里面…

输入时并未按照格式,没注意汉字符号

🎈问题现象: 运行出来的代码没得到想要的结果: 🎈原因分析: 程序运行起来了,计算的结果是错误的,这个最好的解决办法就是调试,一步步的看代码在每个阶段的值是不是我们期望的&…

Qt学习记录___9.10

1.QtSvg初体验 #include <QtSvg> QSvgWidget w1;w1.load(QString(":/iconfont-gongyichongwu.svg"));QSvgRenderer *renderw1.renderer();qDebug()<<render->defaultSize();w1.resize(render->defaultSize());w1.show(); 2. 对话框实验。 QT之隐藏…

LNMP网站搭建

安装宝塔面板一键安装LNMP LNMP LNMP含义 L代表Linux 用来当作程序运行的系统平台 N代表Nginx 用来提供WEB网页服务 M代表Mysql 用来存储管理网站数据 P代表PHP 用来处理动态资源 LNMP搭建方法 1. yum安装依赖环境 yum -y install pcre-devel zlib-devel gcc gcc-c make安…

Cascade-MVSNet CVPR-2020 学习笔记总结 译文 深度学习三维重建

文章目录 4 Cascade-MVSNet CVPR-20204.0 主要特点4.1 背景介绍4.2 代价体构造回顾4.3 Cascade-MVSNet4.4 Loss的设置4.5 Cascade-MVSNet实战操作4.6 总结4 Cascade-MVSNet CVPR-2020 深度学习三维重建 cascade-MVSNet-CVPR-202(源码、原文、译文 )下载 4.0 主要特点 采用特…

一阶高通滤波器(博途SCL代码)

高通滤波器与低通滤波器刚好相反,允许信号的高频分量通过,可以和低通滤波器组合使用,组成带通滤波器。一阶低通滤波器相关算法介绍,可以查看下面文章链接: PLC信号处理系列之一阶低通(RC)滤波器算法_plc滤波算法程序_RXXW_Dor的博客-CSDN博客1、先看看RC滤波的优缺点 优点…

C#中的IQueryable vs IEnumerable (二)

概要 在前面的文章中&#xff0c;本人曾经分析了IQueryable和 IEnumerable两个接口的异同点。但是整个分析过程&#xff0c;侧重于基本概念层面&#xff0c;本文从设计和代码应用的角度来分析它们的区别。 现象讨论 相比于IEnumerable&#xff0c;IQueryable多了一个Express…

4.k8s部署私人仓库并且部署java服务案例

文章目录 前言一、搭建私人仓库1.1 拉取仓库镜像1.2 创建一个文件夹用来放用户名密码,然后在新创建一个账户1.3 Registry服务默认会将上传的镜像保存在容器的/var/lib/registry&#xff0c;我们将主机的/opt/registry目录挂载到该目录&#xff0c;即可实现将镜像保存到主机的/o…

多线程-锁的种类

1 作用 Java中的锁主要用于保障多并发线程情况下数据的一致性。在多线程编程中为了保障数据的一致性&#xff0c;我们通常需要在使用对象或者方法之前加锁&#xff0c;这时如果有其他线程也需要使用该对象或者该方法,则首先要获得锁,如果某个线程发现锁正在被其他线程使用,就会…

案例研究|农业信息化企业天演维真的堡垒机选型思路与落地实践

浙江天演维真网络科技股份有限公司&#xff08;以下简称为“天演维真”&#xff09;成立于2004年&#xff0c;是中国领先的乡村振兴数字化服务整体解决方案提供商。作为中国品牌农业信息化服务的先行者、中国农产品数字身份识别技术开创者&#xff0c;天演维真的产品已助力全国…

【Python】Python基础语法

总感慨万千&#xff0c;虽只道寻常 文章目录 前言1. python与Java的主要区别2. 数据类型3. 输入与输出3.1 输入3.2 输出 4. 注释5. 运算符6. 条件语句7. 循环8. 函数9. 列表9.1 创建9.2 根据下标访问元素9.3 列表切片9.4 遍历9.5 插入元素9.6 查找元素下标9.7 删除元素9.8 列表…

Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理

文章目录 PreJunit4 / Junit5 / Spring Boot / IDEAIDEA版本Spring-Boot-Older-Release-NotesSpringBootTest 起源 & Spring-Boot-1.4-Release-Notes2.0.0.RELEASE ----- 2.0.9.RELEASE2.1.0.RELEASE ----- 2.1.18.RELEASE2.2.0.RELEASE ~ 2.2.13.RELEASE2.3.0.RELEASE ~ 2…

记一次线程堵塞(挂起)导致消息队列积压

1 背景 A服务作为生产者&#xff0c;每天发送上千万的mq消息&#xff0c;每一个消息包含500个用户ids数据。B服务作为消费者&#xff0c;接受MQ消息并通过http调用第三方请求进行业务处理&#xff0c;消费组启用了rabbitmq的多线程消费组&#xff0c;一个实例并发40个mq消费者…

索尼mp4变成rsv修复案例(ILME-FX3)

索尼mp4的修复案例讲过很多&#xff0c;这次是索尼的ILME-FX3也算是一个畅销的机型&#xff0c;一般索尼没有封装的文件是RSV文件&#xff0c;但是极少遇到有多个RSV文件的&#xff0c;下边我们来讲下这个特殊案例。 故障文件:4个RSV文件&#xff0c;大小在1.78G~28G多 故障现…

(测评补单)Lazada、Shopee、Zalora:探索东南亚电商市场

随着互联网的发展&#xff0c;电子商务在东南亚地区迅速崛起。在这个充满活力和潜力的市场中&#xff0c;Lazada、Shopee和Zalora成为了三大领先的电商平台。它们以其独特的商业模式和创新的服务&#xff0c;吸引了数百万用户。本文将深入探讨这三家电商巨头的发展历程、核心竞…

一文讲透机器学习超参数调优!

公众号&#xff1a;尤而小屋作者&#xff1a;Peter编辑&#xff1a;Peter 大家好&#xff0c;我是Peter~ 本文的主题&#xff1a;机器学习建模的超参数调优。开局一张图&#xff1a; 文章很长&#xff0c;建议直接收藏~ 一、什么是机器学习超参数&#xff1f; 机器学习超参数…

代码随想录训练营 打家劫舍

代码随想录训练营 dp 198. 打家劫舍&#x1f338;code 213. 打家劫舍 II&#x1f338;分析code 337.打家劫舍 III&#x1f338; 198. 打家劫舍&#x1f338; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素…

FastChat工作原理解析

在了解FastChat如何完成大模型部署前&#xff0c;先了解下Huggingface提供的Transformer库。Hugggingface提供的Transformer库 Hugging Face 的 Transformers 库是一个用于自然语言处理&#xff08;NLP&#xff09;任务的 Python 库&#xff0c;旨在简化和加速使用预训练语言模…

Vue3 中的几个坑,你都见过吗?

Vue3 目前已经趋于稳定&#xff0c;不少代码库都已经开始使用它&#xff0c;很多项目未来也必然要迁移至 Vue3。本文记录我在使用 Vue3 时遇到的一些问题&#xff0c;希望能为其他开发者提供帮助。 1. 使用 reactive 封装基础数据类型 传统开发模式中&#xff0c;数据声明很简…