[//]: # TOC
J2CL now has an experimental Wasm backend that transpiles Java to WebAssembly. It is developed in collobration with Chrome team and based on Wasm GC spec that is available in [Chrome 119+] (https://chromestatus.com/feature/6062715726462976).
Let's take a look at the simple hello world sample:
https://github.com/google/j2cl/tree/master/samples/wasm
Tip: If you are not familiar with using Java with Bazel, it might be helpful to start with the Bazel Java Tutorial since J2CL closely follows Bazel Java idioms.
Let's get started with cloning the repository and build a sample app from source:
$ npm install -g @bazel/bazelisk
$ alias bazel=bazelisk
$ git clone https://github.com/google/j2cl.git
$ cd j2cl/samples/wasm
$ bazel build src/main/java/com/google/j2cl/samples/wasm:jsapp
Let's run the development server to see our application in action:
$ bazel run src/main/java/com/google/j2cl/samples/wasm:jsapp_dev_server
NOTE: J2CL currently uses experimental Wasm String functionality which might not be enabled
yet. If you see an
error message like: Failed to load wasm: CompileError: WebAssembly.instantiateStreaming(): Unknown type code...
, you can enable it via chrome://flags/#enable-experimental-webassembly-features
Please take the time to play with the code and get a better feeling of how things are working.
ibazel is file-system watcher that auto-triggers bazel build when needed. To use
it, just replace bazel
with ibazel
in any command:
Install ibazel and make sure it is in your path.
Run the wasm development server
$ ibazel run src/main/java/com/google/j2cl/samples/wasm:jsapp_dev_server
Navigate to 'http://localhost:6006/helloworld_dev.html" in your browser.
Edit any source (e.g. HelloWorld.java
), save and see the results. You will
enjoy it more as it warms up!
You like build-on-save but you would like to refresh on your own terms? Pass
-nolive_reload
while running ibazel.
You can also write regular JUnit tests for your application and run them under Wasm.
To run the sample unit test for our wasm sample app:
$ bazel test src/test/java/com/google/j2cl/samples/wasm:HelloWorldTest
To setup your first project you can use the sample as template:
$ cp -R <j2cl-repo>/samples/wasm <my-repo>/<app-name>
$ mv <my-repo>/<app-name>/WORKSPACE.remote <my-repo>/<app-name>/WORKSPACE
and you are done.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。