当前位置: 首页 > news >正文

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

我们对比一个东西就可以了,那就是chrome浏览器。

MacOS/Linux/Windows上的Chrome浏览器,那么对于HTML/CSS/JS的渲染效果都一样的。

我们就可以认为Chrome+HTML/CSS/JS是跨平台的。

这里面,HTML/CSS/JS是不变的的,对于一个网页,它就一份。

但是在不同的操作系统上,Chrome 程序其实是不一样的。

然后用这些不一样的Chrome程序,来渲染同一份HTML/CSS/JS,实现同样的效果。

HTML/CSS/JS 是代码or程序,Chrome是代码运行的平台,也叫运行时Runtime。

同样的,对于Java来说,也有两个东西。

Java代码以及编译后的字节码,class文件或其打包的jar文件。

以及运行class或jar的容器,Java虚拟机,也叫JRE运行时。

不同操作系统平台上安装的JRE是不一样的。

但是给他们同样的一个class或者Jar文件,这些不同的虚拟机需要屏蔽差异,像Chrome运行HTML/CSS/JS一样,执行Java程序的效果最后是一样的。

这就是跨平台的原因,有一层用来承上启下的事儿,对上做抽象提供统一的调用方式和执行结果,对下屏蔽下层平台或操作系统的差异性,封装起来。

用一句最简单的话来说,不同平台的差异性由一个虚拟层来屏蔽掉了。

实际上,这个思路被用在各个地方,比如Linux操作系统跨不同的硬件平台。

再比如,Java的Swing和eclipse的swt/jface都可以做跨MacOS/Linux/Windows的桌面UI程序。

但是Swing和SWT/jface的方式又有非常大的差异。

Swing是完全自己重新画一套虚拟的界面出来,这样UI就全部统一了,缺点是效率低一点,优势是不管什么平台都是完全一致的。

SWT/jface则是直接复用当前操作系统原生或者某个native的UI,然后封装一层统一的操作模型,这样的优势是效率高一些,一个明显的缺点是,不同平台上明显效果是差异较大的。

java 可以跨平台的原因是什么? - kimmking的回答 - 知乎
https://www.zhihu.com/question/573490785/answer/36932325263

相关文章:

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

我们对比一个东西就可以了,那就是chrome浏览器。 MacOS/Linux/Windows上的Chrome浏览器,那么对于HTML/CSS/JS的渲染效果都一样的。 我们就可以认为ChromeHTML/CSS/JS是跨平台的。 这里面,HTML/CSS/JS是不变的的,对于一个网页&a…...

Solana应用开发常见技术栈

编程语言 Rust Rust是Solana开发中非常重要的编程语言。它具有高性能、内存安全的特点。在Solana智能合约开发中,Rust可以用于编写高效的合约代码。例如,Rust的所有权系统可以帮助开发者避免常见的内存错误,如悬空指针和数据竞争。通过合理利…...

npm | Yarn | pnpm Node.js包管理器比较与安装

一、包管理器比较 参考原文链接: 2024 Node.js Package Manager 指南:npm、Yarn、pnpm 比较 — 2024 Node.js Package Manager Guide: npm, Yarn, pnpm Compared (nodesource.com) 以下是对 Node.js 的三个包管理工具 npm、Yarn 和 pnpm 的优缺点总结&am…...

Linux下编译MFEM

本文记录在Linux下编译MFEM的过程。 零、环境 操作系统Ubuntu 22.04.4 LTSVS Code1.92.1Git2.34.1GCC11.4.0CMake3.22.1Boost1.74.0oneAPI2024.2.1 一、安装依赖 二、编译代码 附录I: CMakeUserPresets.json {"version": 4,"configurePresets": [{&quo…...

【团购核销】抖音生活服务商家应用快速接入②——商家授权

文章目录 一、前言二、授权流程三、授权Url3.1 Url参数表3.2 授权能力表3.3 源码示例 四、授权回调4.1 添加授权回调接口4.2 授权回调接口源码示例 五、实际操作演示六、参考 一、前言 目的:将抖音团购核销的功能集成到我们自己开发的App和小程序中 【团购核销】抖音…...

django宠物服务管理系统

摘 要 宠物服务管理系统是一种专门为宠物主人和宠物服务提供商设计的软件。它可以帮助用户快速找到附近的宠物医院、宠物美容店、宠物寄养中心等服务提供商,并预订相关服务。该系统还提供了一系列实用的功能。通过使用宠物服务管理系统,用户可以更加方便…...

vue2中使用three.js步骤

1.使用npm 下载依赖这里以0.158.0版本为例 npm install three0.158.0 --save 2. <template><div id"container"></div> </template><script> import * as THREE from three; import { OBJLoader } from three/examples/jsm/loaders/O…...

部落商城App开发笔记 2024.11.21 实现进入app就是短视频

初步效果: 基于图鸟UI二次开发, 这里静态资源没有加载, 我在本机上安装了一个nginx, 需要启动一下. PS C:\dev\nginx-1.26.2> start .\nginx.exe重新刷新就有数据了. 先看看目前的页面吧. 首页. 分类: 发现. 消息. 购物车. 我的. 这个项目是有短视频的功能…...

解决.DS_Store 在项目一致无法排除,.gitignore里也不生效

.DS_Store 是 macOS 操作系统创建的隐藏文件&#xff0c;通常用于存储目录的属性&#xff0c;比如视图设置、图标位置等。它通常不应包含在代码仓库中&#xff0c;因此需要排除它。你提到即使将其添加到 .gitignore 文件中&#xff0c;仍然无法排除它&#xff0c;可能是由于以下…...

MySQL-关键字执行顺序

&#x1f496;简介 在MySQL中&#xff0c;SQL查询语句的执行遵循一定的逻辑顺序&#xff0c;即使这些关键字在SQL语句中的物理排列可能有所不同。 &#x1f31f;语句顺序 (8) SELECT (9) DISTINCT<select_list> (1) FROM <left_table> (3) <join_type> JO…...

极客时间《Redis核心技术与实战》开篇词 知识点总结

Redis 主要的数据持久化方式 RDB&#xff08;Redis Database Backup file&#xff09; RDB 是 Redis 提供的一种数据快照持久化方式&#xff0c;它会在指定的时间间隔内生成数据集的时间点快照&#xff0c;并将这些快照保存到磁盘上的一个 RDB 文件中。RDB 文件是一个压缩的二…...

TCP并发服务器

端口号快速复用函数 通过getsockopt和setsockopt函数&#xff0c;管理套接字的端口号复用设置。具体操作如下&#xff1a; getsockopt函数 int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);功能&#xff1a;获取套接字的某些选项的属性。…...

Debug-031-近期功能实现小结

由于时间原因&#xff0c;没办法对每个小的功能点进行比较细致的总结&#xff0c;这里统一去记录一下最近的实现了的功能&#xff0c;算是存档备份&#xff0c;为今后开发带来便利和参考。 一、ACEeditor ACEeditor使用手册&#xff08;一&#xff09;_ace editor-CSDN博客 AC…...

Consumer Group

不&#xff0c;kafka-consumer-groups.sh 脚本本身并不用于创建 Consumer Group。它主要用于管理和查看 Consumer Group 的状态和详情&#xff0c;比如列出所有的 Consumer Group、查看特定 Consumer Group 的详情、删除 Consumer Group 等。 Consumer Group 是由 Kafka 消费者…...

.NET架构师学习大纲

目录 微服务 Consul Ocelot Polly Skywalking Exceptionless Apollo Jenkins Docker Kubernetes DDD领域驱动设计 DevOps CDN Nginx 应用服务器集群 数据库高可用 异步化架构 Azure前沿技术 工具排查 O/RM-EFCore IOC&AOP Core WebApi WebServer 数…...

【代码随想录】贪心

455. 分发饼干 题目 随想录 本质&#xff1a; 对于每个孩子&#xff0c;使用可以满足该孩子的最小的饼干。所以对孩子胃口和饼干进行sort排序&#xff0c;依次将大的饼干满足给孩子。 贪心策略&#xff1a; 想一下局部最优&#xff0c;想一下全局最优&#xff0c;如果局部最优…...

Harmony鸿蒙类似与Android中broadcast广播的api使用及释义

EventHub模块提供了事件中心&#xff0c;提供订阅、取消订阅、触发事件的能力。 这里需要注意&#xff0c;该模块接口仅可在Stage模型下使用。且Api>9 EventHub.on on(event: string, callback: Function): void; 订阅指定事件。&#xff08;接收广播&#xff09; 参…...

openGauss 6.0.0主备部署(企业版)

openGauss 6.0.0主备部署&#xff08;企业版&#xff09; 文章目录 openGauss 6.0.0主备部署&#xff08;企业版&#xff09;一、环境准备1.操作系统环境2.修改主机名3.设置字符集编码4.修改openEuler默认yum源5.安装所需工具6.同步网络时间7.关闭防火墙 二、安装openGauss数据…...

【机器学习】聚类算法原理详解

聚类算法 性能度量&#xff1a; 外部指标 jaccard系数&#xff08;简称JC&#xff09;FM指数&#xff08;简称FMI&#xff09;Rand指数&#xff08;简称RI&#xff09; 内部指标 DB指数&#xff08;简称DBI&#xff09;Dunn指数&#xff08;简称DI&#xff09; 距离计算&am…...

Ubuntu20.04从零安装IsaacSim/IsaacLab

Ubuntu20.04从零安装IsaacSim/IsaacLab 电脑硬件配置&#xff1a;安装Isaac sim方案一&#xff1a;pip安装方案二&#xff1a;预构建二进制文件安装1、安装ominiverse2、在ominiverse中安装isaac sim&#xff0c;下载最新的4.2版本 安装Isaac Lab1、IsaacLab环境克隆2、创建con…...

seo推广团队如何进行信息流推广

SEO推广团队如何进行信息流推广 在当今数字化时代&#xff0c;信息流推广已成为各大品牌和企业提升知名度、吸引客户的重要手段。信息流推广通过社交媒体、新闻门户网站和其他内容平台&#xff0c;将高质量的信息推送给目标用户&#xff0c;达到品牌曝光和销售转化的目的。SEO…...

3个实用方案解决百度网盘限速问题:高效下载工具使用指南

3个实用方案解决百度网盘限速问题&#xff1a;高效下载工具使用指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 百度网盘作为国内主流云存储服务&#xff0c;其资源分享功…...

你的QQ空间记忆会消失吗?GetQzonehistory终极备份方案让你完整珍藏青春印记

你的QQ空间记忆会消失吗&#xff1f;GetQzonehistory终极备份方案让你完整珍藏青春印记 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字时代&#xff0c;我们的青春记忆大多散落在…...

BetterNCM Installer:零门槛插件管理的颠覆式开源工具方案

BetterNCM Installer&#xff1a;零门槛插件管理的颠覆式开源工具方案 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 作为音乐爱好者&#xff0c;你是否曾因复杂的插件安装流程望而却…...

城通网盘下载加速终极解决方案:ctfileGet让你的文件传输速度提升10倍

城通网盘下载加速终极解决方案&#xff1a;ctfileGet让你的文件传输速度提升10倍 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 你是否还在为城通网盘下载速度缓慢而烦恼&#xff1f;每次下载大文件都…...

macOS极简安装法:OpenClaw汉化版对接千问3.5-27B镜像

macOS极简安装法&#xff1a;OpenClaw汉化版对接千问3.5-27B镜像 1. 为什么选择npm汉化版&#xff1f; 去年第一次接触OpenClaw时&#xff0c;我按照官方文档用curl脚本安装&#xff0c;结果在macOS Monterey上卡在了Python依赖报错环节。后来发现是系统自带的Python 2.7与新…...

二次元创作助手:OpenClaw调用Qwen3.5-9B自动生成同人图描述

二次元创作助手&#xff1a;OpenClaw调用Qwen3.5-9B自动生成同人图描述 1. 为什么需要二次元创作自动化&#xff1f; 作为一个长期混迹ACGN圈子的内容创作者&#xff0c;我每天要花费大量时间在Pixiv、微博超话和LOFTER上浏览同人作品。最头疼的莫过于看到一张惊艳的插图却想…...

Elasticsearch面试八股整理

1. Elasticsearch 和 Lucene 是什么关系&#xff1f;这是高频第一问。你可以答&#xff1a;“Lucene 是底层全文检索库&#xff0c;负责倒排索引、分词、评分这些核心能力。Elasticsearch 是在Lucene 之上做的分布式封装&#xff0c;提供了集群、分片、副本、REST API、聚合分析…...

前有张雪峰,后有张雪——这难道是天意-他们的成功最大的特点就是把事情做到极致,你只要坚持,就可能会成功!-你不坚持,不热爱,不可能会成功!-为什么摩托车发动机可以弯道超车,汽车不可以?到底中国汽车的发

前有张雪峰,后有张雪——这难道是天意-他们的成功最大的特点就是把事情做到极致,你只要坚持,就可能会成功!-你不坚持,不热爱,不可能会成功!-为什么摩托车发动机可以弯道超车,汽车不可以?到底中国汽车的发动机质量如何? 前有张雪峰,后有张雪——这难道是天意-他们的成…...

PregelProtocol——定义了“LangChain执行体“最小功能集

1. 配置绑定通过前面的内容我们会发现RunnableConfig这个对象几乎时无所不在&#xff0c;我们在调用Pregel对象的时候可以将它作为参数&#xff0c;用来提供用于控制其执行行为&#xff08;比如迭代限制&#xff0c;并发控制等&#xff09;的配置。执行引擎还将它作为容器用来下…...