最流行的 WebAssembly 语言,会是 JavaScript 吗?( 五 )


他指出,“我们希望能够在 Deno 中使用 WinterCG API,同时也希望能够在 Shopify 的 Java 环境和 Fastly 的 Java 环境中使用 WinterCG API,后两种环境是使用 WASI 在 WebAssembly 之上实现的 。目前人们正在努力在 WebAssembly 之上实现 Java,他们正在研究 Java 能否支持 WinterCG API,然后这些 WinterCG API 能否在 WASI 中实现 。”
多语言 Wasm 的发展前景
Java 的灵活性使其成为探索组件化以及可组合性的好方法,我们可以利用 Java 为 WebAssembly 组件模型提供更多可能性,而这一切如今还处于萌芽状态 。
Java 与 Rust 将成为构建模块化 WebAssembly 体验的首选语言,Randall 预测将来这种体验将普及到所有语言,开发人员可以混合不同语言编写的多个 WebAssembly 组件,并将它们组合在一起创建新的应用程序 。
“我可以使用高性能且安全的 Rust 来构建云组件,就像 wasmCloud 那样,将不太复杂的组件组合起来,用 Java 编写面向用户的代码 。我可以使用来自世界各地不同的 Java 组件并将它们结合在一起,也可以使用 Rust 编写的组件,还可以通过许多不同的方式重构这些组件 。”
Bedford 表示赞同,“你可以让 Rust 与 Java 对话,在沙盒中运行代码,或者用一个高度优化的 Rust 组件做一些繁重的工作,然后用 Java 编写高层组件 。”
compontentize-js 允许你使用 Java,并将其捆绑为 WebAssembly 组件;而 Jco 工具链以及类似工具(如同样依赖于组件模型的 cargo-component)则可以通过这种方式使用多语言 。
Beford 解释道,”必须由某个人熟悉 Rust 应用程序并编写一些 Java——编写并维护 Java 的绑定生成 。而使用组件模型就不需要考虑Java 了,他们只需关注组件模型,提供多种语言的支持,而 Java 开发者只需使用组件即可 。“
“这就是组件模型为这些工作流程带来的便利性 。有人可以用 Rust 编写组件,而你可以很方便地在 Java 环境中使用这些组件 。然后在浏览器之外,Java 开发人员也可以一展所长 。”
他指出,Rust 开发人员也可以通过这种方式使用 Java 组件,“Jco 是一个 Java 组件工具链,它支持使用 Java 创建和运行 Java 组件 。”
Hayes 建议,将来开发者可以通过 wasm-compose 库将两个组件结合起来 。未来几年内,组件模型将成为 WebAssembly 中一个非常有趣的探索方向:
“如果你熟悉 Java 和 Rust,可以将两大语言生态系统结合在一起,二者之间可以互操作,人们则可以选择最好的库或工具 。我非常期待 WebAssembly 的组件,因为从理论上讲,它可以打破前端与后端工程师以及语言生态系统之间的孤岛 。”




推荐阅读