CheerpJ 3.0: 在浏览器中用WebAssembly运行应用

CheerpJ 3.0标志着在浏览器中利用WebAssembly部署应用程序取得重大进展,特别是Java应用。

译自CheerpJ 3.0: Run Apps in the Browser with WebAssembly,作者 B. Cameron Gain 是ReveCom Media的创始人和首席分析师。 20世纪80年代初,他黑掉了太空侵略者控制台,可以整天打游戏只需25美分,从那时起他就对计算机着迷。

CheerpJ3.0展示了WebAssembly在浏览器中的一个有趣的应用,表明其有潜力用于部署和运行用Java编写的复杂应用程序和运行时环境。开发人员可以用任何语言创建应用程序,并通过简单点击就可打包部署,使最终用户可以测试和使用。

虽然CheerpJ 3.0的开发仍在继续,但它代表了用WebAssembly在浏览器中部署应用程序的重大进步,特别是用Java。这补充了其他侧重于加密和能够将用C++编写的应用程序部署到浏览器中的项目。

随着CheerpJ 3.0的发布,该公司声称Java客户端应用程序,例如Java小程序、Java Web Start应用程序和独立的Java应用程序,可以在现代浏览器上无修改地运行,无需本地Java安装。其理念是使运行时环境(在本例中是Java)能够更好地运行,就像用户拥有端点服务器的资源可以自由发挥一样------在浏览器中。

"就像Docker允许您在计算机上运行二进制文件的容器一样,您需要拥有使您能够在浏览器中以与通常在普通平台操作系统上相同的方式运行二进制工作负载的技术。"Leaning Technologies的首席执行官兼创始人Stefano Marco Maria De Rossi向The New Stack透露。

设置CheerpJ 3.0相当简单,文档中有清晰的步骤概述,且与绝大多数浏览器兼容,该公司称。在游乐场方面,使用CheerpJ iText合并PDF文件非常简单。用户只需将PDF文件输入API,点击几次鼠标,文件就在"浏览器中完成合并"。您需要先访问iText演示页面:

上传您要合并的PDF文件,并按提示合并文档:

按提示合并PDF文件即可:

如上例所示,可以在CheerpJ 3.0的WebAssembly模块中编写和实现Java,以便跨浏览器分发和执行任何用Java编写的应用程序,至少在理论上是这样。近期内会有更多用CheerpJ在浏览器中运行的有趣应用程序。

Leaning Technologies提供的一个更有趣的例子,展示了它如何通过CheerpJ在浏览器中启用Java,那就是Browsercraft,它允许在浏览器中运行Minecraft游戏,以便用户可以直接(免费)玩游戏:

引擎盖下

文档中将CheerpJ 3.0描述为一个在浏览器中编译Java字节码为JavaScript的WebAssemblyJava虚拟机(如上所述),其组件包括:

  • 一个用于Java字节码的WebAssembly JVM和即时编译器。类文件中包含的代码进行编译和优化。JIT编译器支持诸如内联和动态虚拟化等高级优化。
  • OpenJDK的完整且未修改的构建版本。
  • 一个虚拟化的系统层,包括:
    • 通过HTTP访问资产的虚拟化文件系统,通过IndexedDB提供本地持久化R/W存储,通过/str/与JavaScript数据交互。
    • 通过Tailscale提供虚拟化网络支持。支持服务器和客户端应用程序。

正如De Rossi所指出的,在不使用WebAssembly的情况下,开发人员必须分别针对x86、Linux或其他目标体系结构使用运行时代码,无论是使用Rust、C++、Python、Java还是任何其他语言。代码被编译以在不同平台上运行。但是Wasm代表了一个统一的目标。"关键区别在于,Wasm是独一无二的,不管您的浏览器是Linux上的Chrome还是macOS上的Safari亦或Windows上的Firefox。" De Rossi说。"最终,Wasm创建了这种抽象,允许工具制造商为几乎任何语言创建工具。是的,由于Wasm变得越来越强大,越来越类似于本机平台,未来会出现越来越多的语言。"

本文在云云众生yylives.cc/)首发,欢迎大家访问。

相关推荐
小猪猪屁8 天前
WebAssembly 从零到实战:前端性能革命完全指南
前端·vue.js·webassembly
pepedd86410 天前
WebAssembly简单入门
前端·webassembly·trae
受之以蒙13 天前
Rust & WebAssembly 实践:构建一个简单实时的 Markdown 编辑器
笔记·rust·webassembly
wayhome在哪15 天前
3 分钟上手!用 WebAssembly 优化前端图片处理性能(附完整代码)
javascript·性能优化·webassembly
yangholmes888817 天前
EMSCRIPTEN File System 入门
前端·webassembly
yangholmes888822 天前
如何在 web 应用中使用 GDAL (三)
前端·webassembly
yangholmes888823 天前
如何在 web 应用中使用 GDAL (二)
前端·webassembly
yangholmes888824 天前
如何在 web 应用中使用 GDAL (一)
webassembly
DogDaoDao1 个月前
WebAssembly技术详解:从浏览器到云原生的高性能革命
云原生·音视频·编译·wasm·webassembly·流媒体·多媒体
受之以蒙1 个月前
Rust & WebAssembly 性能调优指南:从毫秒级加速到KB级瘦身
笔记·rust·webassembly