LeaningTech最近发布了CheerpJ 的第二个主要版本。 CheerpJ 2.0 可以将 Java 应用程序转换为 HTML、WebAssembly和 JavaScript 的混合体,这样开发人员就可以在浏览器中运行 Java 应用程序(包括小程序),或者将 Java 库集成到 Web 应用程序中。 CheerpJ 2.0 使用 WebAssembly 提高运行时的速度。
在 WebAssembly 和 JavaScript 中,CheerpJ 2.0 提供了一个完整的(100%的 Java 8 语言)、模块化的、优化了的 Java 8 SE 运行时库。运行时由一组基于浏览器的各种不同功能的原生实现(例如,使用Web Worker的多线程、使用Web Audio的音频、基于IndexedDB的文件系统访问等等)来补充。 CheerpJ 2.0 全新地利用了 WebAssembly 的运行时模块,提高了运行时的速度,并减少了程序包的大小,同时降低了大量的计算成本(例如字体渲染)。
CheerpJ 之前的版本为一个简单的增量计数器应用程序就提供了超过1MB的JavaScript。 CheerpJ 2.0 通过仅交付运行时所需的组件来努力降低下载的大小。然而,在考虑了 Wasm 模块和等效的 JavaScript 模块在解析时间上的增加之后,CheerpJ 2.0 应用程序可能仍然会显示一个用户可感知的等待时间(从用户使用该应用程序时开始计时)。因此,CheerpJ 并不适用于开发人员的所有用例。 LeaningTech 的首席执行官 Stefano De Rossi 特别强调了 CheerpJ 不支持的目标(non-goal):
CheerpJ 不打算在从头开始编写 Web 应用程序(…),我们不认为 CheerpJ 是 Java 的 Blazor 等价物(…)
Rossi 详细介绍了 CheerpJ 努力解决的三个主要用例。第一个用例涉及到遗留 Java 应用程序和小程序(applet)的转换。由于可以在现代浏览器中分发、访问和使用,这些遗留应用程序的寿命可能会延长。Rossi 提到,数以百计的遗留教育 Java 小程序可能会从中受益。
第二个用例涉及到将现有的 Java 客户端迁移到基于浏览器的应用程序,保留现有的业务逻辑并将其转换为 JavaScript/WebAssembly,同时用 HTML 重写用户界面。在第三个用例中,开发人员可以转换现有的 Java 库并将其集成到 Web 应用程序中。
Rossi 在接受techUK的采访时,总结了与 WebAssembly 相关的优势:
多亏了 Wasm,我们才能制造出将原生桌面应用程序和移动应用程序转换为标准 Web 应用程序的编译器和转换工具,这些程序可以被任何带有浏览器的设备使用,而不管这些设备使用的是何种操作系统以及浏览器的供应商如何。
这意味着我们可以使用现有的 Java、Flash 或 C++应用程序,这些应用程序都是任务关键型的,并且都花费了数年的时间来开发;也意味着我们可以将它们自动地移植到 HTML5,而无需人工干预。
至关重要的是,编译到 WebAssembly 意味着我们的组织不再依赖远程执行和基于云的虚拟化来交付应用程序了。通过使用终端用户设备上的计算能力来运行应用程序,可以将维护和运行成本降到最低。
CheerpJ 是闭源的,但它可以免费用于非商业目的以及技术评估;其他用途可能需要许可证。开发人员可以使用在线平台编写 Java 代码,并在浏览器中实时渲染 Java 代码。
Leaning Technologies是一家计算机软件公司,专门从事 WebAssembly 和可编译为 JavaScript 的解决方案和工具的研究,以将应用程序转换为 Web 应用程序。Leaning Technologies 致力于为大型遗留应用程序提供一种自动化的、迁移低成本的、现代化的解决方案。
将 Java 应用程序编译为 Web 应用程序的其他解决方案包括GWT、 TeaVM、 JSweet、 Vaadin Flow、J2CL 等。 JWebAssembly开源项目当前正在开发一个 Java 字节码到 WebAssembly(Java-bytecode-to-WebAssembly)的编译器。
原文链接:
WebAssembly Used by Java-to-Web Compiler CheerpJ 2.0 to Port Java Applications to Browsers
评论