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

Java 有了WebAssembly,有没有办法获取.jar并在浏览器中运行它?,java,browser,jar,webassembly,Java,Browser,Jar,Webassembly,我对WebAssembly的理解有点挑剔,但我见过像和这样的项目,它们似乎可以将Java字节码传输到WebAssembly。我的问题是,这些工具中的任何一个都可以用来将整个.jar小程序转换为可以在浏览器中执行的内容吗?目前没有直接转换。 但是,您可以使用JWebAssembly重构Applet/Java代码,并生成WebAssembly代码。 因此,您将需要重构小程序代码(具有项目文档中详细说明的语言限制)并通过JWebAssembly API项目中的DOM API重写GUI 正如JWebAs

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

目前没有直接转换。 但是,您可以使用JWebAssembly重构Applet/Java代码,并生成WebAssembly代码。 因此,您将需要重构小程序代码(具有项目文档中详细说明的语言限制)并通过JWebAssembly API项目中的DOM API重写GUI

正如JWebAssembly(wiki/FAQ)所说:

问:我可以使用JWebAssembly Swing、AWT或小程序应用程序进行编译吗?
答:不,您需要从JWebAssembly通过DOM API编写GUI API项目。理论上,任何人都可以编写一个实现 回转和/或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限制了这些功能的使用 API。通常,您必须手动重写代码以适应 TeaVM约束

您可以检查这个示例项目、java源代码(例如WasmBenchmarkStarter.java)和pom.xml,以了解代码是如何编写的()

另一个类似项目是:

问候