Dart vs Rust vs Java 强语言类型写 Web 页面 Build Size 比较。

Dart

Build a web app with Dart

# install dart
$ brew tap dart-lang/dart
$ brew install dart

# install webdev tools
$ dart pub global activate webdev

# create a new project
$ dart create -t web quickstart
$ cd quickstart
$ webdev serve

# build
$ webdev build --output web:build

Build size: 60KB

image

Rust

简单 Demo

$ cargo generate --git https://github.com/rustwasm/wasm-pack-template
$ cd wasm-game-of-life
$ cargo install wasm-bindgen-cli
$ cargo add web-sys
$ wasm-pack build --target=web

参考 online-demo

image

Build size: 20KB

Yew 框架

参考 Rust Web

页面

image

Build size: 90KB

Polyfill 200KB,此处应该 IE11 兼容大小,不含在内

Java

Java 编译成 WebAssembly,有个测试 JWebassembly 项目,Demo 如下:

image

Build size: 10KB

teavm

目前 teavm 主要是 java 编译到 js,编译到 wasm 仅是实验性质,支持不完善。

java wasm 项目目前比较少且不活跃,按照 部分用户的回答,wasm 可能并不适合运行 java:

GC, lack of many things: exception handling, stack walking, page protection, signal handling, etc

其他对比

  • Dart 是 Google 主导开发,持续性维护状态未知,暂不开放社区
  • Rust 是 Mozilla 主导开发,社区活跃

参考