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