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

问题描述 投票:2回答:1

我对WebAssembly的理解有点挑剔,但是我看到TeaVMJWebAssembly等项目似乎将Java字节码转换为Webassembly。我的问题是,可以使用其中任何一种工具将整个.jar小程序转换为可以在浏览器中执行的程序吗?

java browser jar webassembly
1个回答
0
投票

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

JWebAssembly(wiki / FAQ)所述:

问:我可以使用JWebAssembly Swing,AWT或Applet应用程序进行编译吗?答:不,您需要通过JWebAssembly中的DOM API编写GUIAPI项目。从理论上讲,任何人都可以编写一个库来实现支持Swing和/或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来查看代码的方式(sample)。

另一个类似的项目是:bytecoder

问候

© www.soinside.com 2019 - 2024. All rights reserved.