现在 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 ![]() 所说的任何一点,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 ![]() 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 这个跟云原生有什么区别吗? |
![]() | &nbs; 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 ![]() @3dwelcome #26 一个本来就设计为 linux x64 only 的二进制产物,不需要考虑让它 run 在浏览器跟 arm 上,这是 docker 能成功的根本原因 |
![]() | 37 learningman 2022-01-21 19:18:43 +08:00 ![]() @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 想推广开来,最好是有个程序员不得不用的理由,不然只是谈优势,没什么意义。 |