美好365app官方下载-beat365体育ios版下载-365bet手机客户端

什么是跨平台

我们知道,cpu 有不同的架构和指令集,上层也有不同的操作系统,一个系统的可执行文件在另一个系统上就是不可执行的,比如 windows 的 exe 文

什么是跨平台

我们知道,cpu 有不同的架构和指令集,上层也有不同的操作系统,一个系统的可执行文件在另一个系统上就是不可执行的,比如 windows 的 exe 文件在 mac 上就不能直接执行。不同的系统就是不同的运行平台。可执行文件是不跨平台的。

不同平台提供的 api 不同,所以代码逻辑可能也不同,需要不同平台单独维护代码。这样就带来了几个问题:

多平台各自开发,怎么保证功能是一致的

多平台各自开发,那是不是得各自测试,开发和测试的人力都是多份的

所以出现了跨平台的一些技术,目标是一份代码跑在任意平台。

我们先来看一些各领域的跨平台方案:

浏览器

操作系统不同,浏览器上跑的网页的代码确实同一份。浏览器就是一种历史悠久的跨平台方案。

网页跨平台不意味着浏览器也是跨平台的,浏览器的可执行文件还是每个平台单独开发和编译的,但是他们支持的网页解析逻辑一样,这样上面跑的网页就是跨平台的。

浏览器提供了一个容器,屏蔽了底层差异,提供了统一的 api(dom api),这样就可以实现同一份代码跑在不同平台的统一的容器里。这个容器叫做浏览器引擎,由 js 引擎、渲染引擎等构成。

docker

docker 是一种虚拟化技术,可以在操作系统之上加一个虚拟层,在这层之上划分一到多个容器,容器里再去跑系统、app,这样可以实现硬件和软件的分离,动态分配硬件资源给容器,并且方便 app 运行环境的整体迁移(保存成镜像)。

docker 很明显也是一种跨平台技术,同一个镜像可以跑在任何操作系统的 docker 上。只要不同操作系统实现同样的容器即可。

jvm

java 是一门编译 + 解释的语言,java 源码编译成字节码,然后字节码直接在 vm 上解释执行。

java 为什么这么火呢?主要是因为跨平台。

c、c++ 这种语言写的代码需要编译成不同操作系统上的可执行文件来跑,而且每个平台的代码可能还不一样,需要写多份。

java 因为提供了 jvm 容器,只要把源码编译成 jvm 能解释的字节码就行了,而且 jdk 提供了统一的 api,分别由不同操作系统的底层 api 来实现,这样对于 java 代码来说,不同操作系统的代码是一致的。

jvm 也是通过容器的技术实现了一份代码跑在多个平台,而且 jre 提供了统一的 api,屏蔽掉了底层的差异。

node、deno

node 和 deno 也是跨平台的技术,通过提供一套一致的 api,让其上的 js 代码可以跨平台。这些 api 也是不同平台各自实现的。

electron

electron 内置了 chromium,并为其注入了 node 的 api 和一些 GUI 相关的 api,是基于两大跨平台技术综合而成的跨平台方案。基于这些方案的组合使得 electron 支持用前端技术开发桌面端。

跨平台方案的优缺点

跨平台方案的优点很明显,就是一份代码跑在不同平台的同样的容器内,不用不同平台单独开发,节省成本。

但是跨平台方案也有缺点:

● 因为多了一层容器,所以性能相比直接调用系统 api 会有所下降

● 为了实现多平台的一致,需要提供一套统一的 api,这套 api 有两个难题:

api 怎么设计。要综合不同平台的能力,取一个合适的集合来实现。设计上有一定难度。node、deno、java 都抽象了操作系统的能力,提供了各自的跨平台 api

部分 api 很难做到多平台的一致性

当容器没有提供的能力需要扩展的时候比较麻烦,比如 js 引擎的 bridge、 jvm 的 jni、node 的 c++ addon 等都是为这个容器扩展能力的方式

← 上一篇: DNF星空深渊灵石都有哪些获取方法?灵石总是不够用怎么办?(dnf2020星空深渊灵石)
下一篇: 鼠标刷新率是什么意思? →

相关推荐

绿色建筑

绿色建筑

此条目介绍的是环境友好型建筑。关于通过增加绿化面积以达到调节城市气候的基建系统概念Green Infrastructure,请见“绿色基础设施”。 美国国

手机买房子的app排行榜TOP10推荐

手机买房子的app排行榜TOP10推荐

贝壳找房app 2025-06-30 安卓手机 iOS 二手房 房天下app 2025-06-20 安卓手机 iOS 二手房 链家app 2025-06-30 安卓手机 iOS 二手房 安居客app 2025-06-28 安卓手机

js的Function如何使用

js的Function如何使用

JavaScript的Function使用方法包括:定义函数、调用函数、函数表达式、箭头函数、回调函数等。本文将详细介绍每一种方法,并探讨它们的用法及

【游戏儿歌】100首幼儿园小班常规儿歌大全!老师家长收藏!

【游戏儿歌】100首幼儿园小班常规儿歌大全!老师家长收藏!

幼儿园里朋友多,有哥哥,有姐姐, 做游戏,笑呵呵,拍拍手来唱唱歌。 7、大公鸡: 大公鸡,逗人爱,一朵皇冠头上戴, 一副金甲放光彩,

麦当劳全球

麦当劳全球

麦当劳的品牌故事 如今,麦当劳已成为全球零售食品服务业龙头。截至2023年底,全球有超过40,000麦当劳餐厅,每天为100多个国家和地区超过6900

明教究竟是个什么宗教,到底有没有光明使者、护教法王?|文史宴

明教究竟是个什么宗教,到底有没有光明使者、护教法王?|文史宴

首先,历史上确实存在着“明教”这个教派,它与“祆教”、“景教”在唐朝时并称为“三夷教”,即唐朝时期三个最大的自外传入的宗教流派