使用WebAssembly,有没有办法获取.jar并在浏览器中运行它?



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

目前没有直接转换。 但是,您可以使用JWebAssembly来重构Applet/Java代码,并进行一些工作和限制,并生成WebAssembly代码。 因此,您需要重构小程序代码(项目文档项目状态和 java 限制中详述的语言限制(,并通过 JWebAssembly API 项目的 DOM API 重写 GUI。

正如JWebAssembly(wiki/FAQ(所说:

问:我可以使用 JWebAssembly Swing、AWT 或 Applet 应用程序进行编译吗?
答:不,你需要通过 JWebAssembly 的 DOM API 编写一个 GUI。 接口项目。从理论上讲,任何人都可以编写一个实现 支持摆动和/或AWT。但是,但不建议这样做。

JWebAssembly转换类似于1:1转换。生成的 WebAssembly 代码的大小与原始.class文件相似。

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

正如TeaVM(Github(所说:

WebAssembly 支持处于实验状态。它可能缺乏主要 JavaScript 后端中可用的功能。尚无文档 你应该用手做很多事情(比如嵌入生成的WASM( 文件到您的页面中,导入 JavaScript 对象等(。看 样本/基准测试模块。您应该首先检查pom.xml文件 了解如何从 Java 构建 wasm 文件。然后你可能想检查一下 index-teavm.html 和 index-teavm.js 学习如何嵌入 WebAssembly 进入您的网页。

正如官方网站所说:

TeaVM主要是一个Web开发工具。这不是为了带走你的 大型现有 Java 或 Kotlin 代码库并生成 JavaScript。 不幸的是,Java的设计并不是为了在 浏览器。有些 Java API 是不可能实现的,没有 生成低效的 JavaScript。其中一些 API 是:反射, 资源、类加载器和 JNI。TeaVM 限制使用这些 蜜蜂属。通常,您必须手动重写代码以适应 TeaVM 约束。

你可以检查这个样本项目,java源代码(例如。WasmBenchmarkStarter.java(和pom.xml看看代码是如何的(示例(。

另一个类似的项目是:字节码器

问候

最新更新