gpt4 book ai didi

java - 使用 WebAssembly,有什么方法可以获取 .jar 并在浏览器中运行它?

转载 作者:行者123 更新时间:2023-12-05 06:20:47 26 4
gpt4 key购买 nike

我对 WebAssembly 的理解有点挑剔,但我见过类似 TeaVM 的项目和 JWebAssembly这似乎将 Java 字节码转换为 Webassembly。我的问题是这些工具中的任何一个都可以用来将整个 .jar 小程序转换成可以在浏览器中执行的东西吗?

最佳答案

目前没有直接转换。但是,您可以使用 JWebAssembly 通过一些努力和限制来重构您的 Applet/Java 代码并生成 WebAssembly 代码。因此,您将需要重构您的小程序代码(项目文档 project statusjava limits 中详述了语言限制)并通过 JWebAssembly API 项目的 DOM API 重写 GUI。

正如JWebAssembly(wiki/FAQ)所说:

Q: Can I compile with JWebAssembly Swing, AWT or Applet applications?
A: No, you need to write a GUI via the DOM API from the JWebAssembly API project. In theory, anyone can write a library that implements support for Swing and / or AWT. However, but this is not recommended.

JWebAssembly 转换就像是 1:1 转换。生成的 WebAssembly 代码在大小上与原始 .class 文件相似。

在 TeaVM 的这种情况下,不仅仅是直接转换,您会发现一个专门为 Javascript 设计的开发框架,并且目前对 WebAssembly (Wasm) 具有实验性支持。它试图重构方法的原始结构,它有一个优化器,可以删除死代码,将虚拟调用转换为静态调用等。

正如 TeaVM (Github) 所说:

WebAssembly support is in experimental status. It may lack major features available in JavaScript backend. There's no documentation yet and you should do many things by hands (like embedding generated wasm file into your page, importing JavaScript objects, etc). Look at samples/benchmark module. You should first examine pom.xml file to learn how to build wasm file from Java. Then you may want to examine index-teavm.html and index-teavm.js to learn how to embed WebAssembly into your web page.

正如官方网站所说:

TeaVM is primarily a web development tool. It’s not for taking your large existing codebase in Java or Kotlin and producing JavaScript. Unfortunately, Java was not designed to run efficiently in the browser. There are Java APIs that are impossible to implement without generating inefficient JavaScript. Some of these APIs are: reflection, resources, class loaders, and JNI. TeaVM restricts usage of these APIs. Generally, you’ll have to manually rewrite your code to fit into TeaVM constraints.

您可以检查此示例项目、java 源代码(例如 WasmBenchmarkStarter.java)和 pom.xml 以查看代码(sample)。

另一个类似的项目是:bytecoder

问候

关于java - 使用 WebAssembly,有什么方法可以获取 .jar 并在浏览器中运行它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60255318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com