现在 WEB 服务,都上云服务,docker 容器的概念居多。
那么本质上,后台的逻辑代码,可以看成是一个个 VM 虚拟机。而 WASM 刚好就是一个非常成功,又跨平台的堆栈虚拟机。
在未来,WEB 前后端会用 WASM ,游戏会用 WASM 来替换现在的 LUA ,云计算会用 WASM 。也许这个技术,会改变我们写代码的方式。
1
rrfeng 2022-01-21 14:50:07 +08:00
出来的时候都是靠吹
等过十年,如果真成了我再吹它 |
2
3dwelcome OP |
3
orangie 2022-01-21 15:04:55 +08:00 3
所说的任何一点,JVM 都具备。
|
4
2i2Re2PLMaDnghL 2022-01-21 15:05:31 +08:00
WASM 太底层了,就真的是一个虚拟机
在里面跑虚拟机语言就都是虚拟机套虚拟机 —— 准确地说,这里的所有虚拟机(我要把 JVM 都拉上)全部都应该叫模拟器。究其原因,它并非采用虚拟化技术进行隔离,而是采用模拟器技术逐指令翻译,从而使得字节码平台无关。对照地说,GBA 模拟器也是一样的操作。 —— 反而,Qemu 有时是个虚拟机。因此倒也不用唯名论地逐字推敲。 当然,因为 WASM 效率高,可以推测 WASM+?VM 和?VM 效率差距不大。但是,这样一来,热加载就还是得交给内层的?VM 来实现。 |
5
industryhive 2022-01-21 15:05:42 +08:00 1
WASM 和 GraalVM 有什么区别?
1. GraalVM 完全支持热加载。 2. GraalVM 完全支持跨平台,甚至可以嵌入到 MySQL 和 Oracle 中作为执行引擎。 3. GraalVM 支持 jvm 语言,如果 java 、kotlin 、Scala 等 jvm 语言,也支持 js 、Python 、ruby 等动态语言,还支持 C 、C++等基于 LLVM 的语言,跨语言调用无性能损失 4. GraalVM 性能非常优秀,可以高性能通用编译后端 5. GraalVM 同时支持 AOT 和 JIT ,任何语言只要编译到 GraalVM 字节码,就能进行 AOT 编译,获得最快的启动速度,也可以进行 JIT 编译,获得最高的性能峰值 |
6
kop1989smurf 2022-01-21 15:06:20 +08:00
开发生态完备的今天,就不是哪个开发技术先进,生产力强,哪个技术就流行。
甚至生产力强都不算必要条件。 |
7
2i2Re2PLMaDnghL 2022-01-21 15:06:37 +08:00
@3dwelcome 感觉是格林斯潘第十定律的一个变体。
|
8
Jooooooooo 2022-01-21 15:14:06 +08:00
所以现在去招一个这样的程序员需要花多少时间呢?
(还是老老实实把过滤项选 java 或者 go 吧 |
9
3dwelcome OP @Jooooooooo WASM 只是代码的最终编译形态,写逻辑代码你还是可以用 java 和 go ,又没区别的。
|
10
3dwelcome OP @2i2Re2PLMaDnghL “反而,Qemu 有时是个虚拟机。因此倒也不用唯名论地逐字推敲。”
现在有些 docker 不就是用 qemu 驱动的,但发布体积大,CPU 转译效率又低,有些时候没必要杀鸡用牛刀。 WASM 可以做到体积极度轻量,几乎无重型依赖包。 你说 JVM 也可以,但 JVM 是一种特定语言。WASM 代表着十几种语言,这点上 WASM 完胜。 |
11
aneostart173 2022-01-21 15:25:06 +08:00
除非 wasm 变成指令集,或者 webos 成为主流。
|
12
learningman 2022-01-21 15:27:03 +08:00
反正现在 wasm 的生态还是一坨翔,啥时候出个 spring 这种的统一框架再说吧。
|
13
3dwelcome OP |
14
2i2Re2PLMaDnghL 2022-01-21 15:42:34 +08:00
@3dwelcome 不要太关注『——』开头的插曲。
你想要用 WASM 发布 Python 写出来的东西,貌似仍然需要带上整个 Python 环境和引入的包。 |
15
DianQK 2022-01-21 15:50:26 +08:00 via Android
在拥抱 Wasm 了
|
16
hefish 2022-01-21 16:12:57 +08:00
WASM 将来还会把人类变成电池。那样才是更加美好的世界。
|
17
yaphets666 2022-01-21 16:14:16 +08:00
又是你
|
18
gainsurier 2022-01-21 16:19:54 +08:00
我举得 wasm 最大的优势就是可以跑在只有几百 k 内存的 mcu 上。
|
19
masterclock 2022-01-21 16:24:22 +08:00
不懂 GraalVM ,可以把 Go 编译到 GraalVM ,然后跑在 MCU 上吗?
|
20
xinJang 2022-01-21 16:35:33 +08:00
这个跟云原生有什么区别吗?
|
21
3dwelcome OP |
22
3dwelcome OP |
23
xinJang 2022-01-21 16:48:27 +08:00
@3dwelcome 我之前看云原生的介绍是利用 k8s 这种容器编排技术,将一堆 docker 组成成一个 pod ,基于 pod 的管理,这跟你描述的 wasm 是否是相近的技术呢?
|
24
3dwelcome OP 是的。docker 的开发者说过,如果早年有 wasm ,就可以不用开发 docker 了。
两个看似不相关的技术,本质上都是把代码装进黑盒后,便捷发布。 WASM 对运行环境依赖很低,这样平台移植性就非常高。有时候 docker 还要用 qemu 包一层,就是因为 x86 和 arm64 指令不兼容,WASM 把这个问题,从根本上给解决掉。 |
25
ch2 2022-01-21 17:06:31 +08:00 via iPhone
@3dwelcome docker 是二进制级别的打包,不需要源代码适配,兼容性不是一个需要重写+编译的东西能比的
|
26
3dwelcome OP @ch2 docker 是二进制级别的打包,不能二次平台适配了。
而 WASM 是中间字节码打包,加载后可以二次适配到任意 CPU 和可运行平台。 真正意义上的 write once, run everywhere. |
28
weixiangzhe 2022-01-21 17:23:18 +08:00
发出来看看啊
|
29
3dwelcome OP @weixiangzhe 视频的名字叫“用 webassembly 做秒杀”, B 站上有,直接搜。
|
30
gam2046 2022-01-21 17:36:15 +08:00
@3dwelcome #26 “write once, run everywhere.” 这不是还是 JVM 老路嘛,JVM 语言也不止 Java ,Scala/Groovy/Kotlin 还有一堆使用率不怎么高的。
但有一说一,前几天刚刚试了下 ffmpeg 编译到 wasm 在浏览器里跑。确实可以跑,也可以转码,也可以通过 blob url 直接通过 video 标签播放,但在 Chrome 里跑,CPU 占用率挺厉害,用是可以用的。 至于上云的话,还是慎重,现在各个云平台并没有什么统一标准,真就是上云一时爽,下云火葬场。换个平台就脱一层皮。 |
31
3dwelcome OP @gam2046 每个程序员都是自己的语言偏好和历史代码负担,要想完全从头再一张白纸上写代码,是非常困难的事情。
有时候程序员之间的语言隔阂,比现实中的外语还要大。这也是为什么那么多年,JVM 不温不火,提不上去,又不断有新语言冒泡的原因。 目前也只有 WASM ,能统一天下所有语言了。 |
32
qqdaiyu55 2022-01-21 17:52:06 +08:00 via iPhone
wasm 已经有不少应用,pyodide ,以及 figma 等
|
33
neutrino 2022-01-21 18:20:43 +08:00 via Android
还是要根据需求来。虽然现在容器技术应用已经较为广泛,但实际工作中并没有上容器的需求,用 FTP 拷贝代码很顺畅。
|
34
zhangbohun 2022-01-21 18:31:41 +08:00
@3dwelcome “ JVM 是一种特定语言” 建议了解下 JVM 的概念
|
35
DrakeXiang 2022-01-21 18:42:22 +08:00
wasm 不是给浏览器用的么,后端怎么用?
|
36
ch2 2022-01-21 18:47:46 +08:00 1
@3dwelcome #26 一个本来就设计为 linux x64 only 的二进制产物,不需要考虑让它 run 在浏览器跟 arm 上,这是 docker 能成功的根本原因
|
37
learningman 2022-01-21 19:18:43 +08:00 1
@DrakeXiang #35 node 或者某些 wasm 的独立 runtime ,wasi 啥的
|
38
Elissa 2022-01-21 23:04:06 +08:00
@learningman 所以为啥不 nodejs ,前后端都用 js
|
39
musi 2022-01-22 10:46:49 +08:00
同在关注 WebAssmebly ,之前在 twitter 上看到 docker 作者说,“如果当时有 wasm 那可能就不会有 docker 了”。然后去年(21 年)WasmEdge 项目也进入了 CNCF ,就我个人而言还是比较看好 wasm 的
|
40
chrosing 2022-01-22 11:24:47 +08:00
Spring Cloud 已经没落了,DDD 后来居上 :Doge
之前有段时间 微信公众号只要是讲技术的 全是推 DDD 的 结果现在也没有多少用 DDD 的 |
41
winglight2016 2022-01-22 14:27:53 +08:00
wasm 作为一个运行时容器,跟 docker 比有什么优势?(特别是对程序员来说)
前面所说 docker 不能二次平台适配,我不了解对于运行时容器有什么问题? docker 现在在生产环境都已经被 k8s 战胜了,wasm 如果只是作为 k8s 的插件出现,对于普通程序员没什么用。 如果 wasm 想推广开来,最好是有个程序员不得不用的理由,不然只是谈优势,没什么意义。 |