Cheerp 是一个用于 Web 应用程序的 C/C++ 编译器,可让你将几乎所有 C/C++ 代码编译为 WebAssembly 和 JavaScript。其最新的3.0版本已经开源。
Cheerp 是一个用于 Web 应用程序的 C/C++ 编译器,可让您将几乎所有 C/C++ 代码编译为 WebAssembly 和 JavaScript。其最新的3.0版本已经开源。
Cheerp 主要用于将现有的 C/C++ 库和应用程序移植到 HTML5,但也可用于从头开始编写高性能 Web 应用程序和 WebAssembly 组件。使用 Cheerp,C/C++ 代码被编译成 JavaScript/WebAssembly,并通过公开正确的 JavaScript 接口进行优化,可以轻松集成到 Web 应用程序中。
Cheerp 是 Webassembly 编译工具系列的一部分,与 CheerpJ、CheerpX for Flash 和 WebVM 并列。可用于以下场景:
1.将遗留 Java 应用程序和 Java Applets 转换为 HTML5,只需很少的努力或无需任何努力,以延长它们的生命,直到弃用,或直到开发出替代的本机 HTML 应用程序。
2.将现有的 Java 客户端迁移到基于浏览器的 Web 应用程序,通常通过使用 CheerpJ 将业务逻辑从 Java 转换为 WebAssembly/JavaScript,并用原生 HTML 重写 UI。
3.使用(转换后的)Java 库作为本机 Web 应用程序的一部分。
在幕后,CheerpJ 需要 WebAssembly 中的完整 Java SE 运行时和存在于浏览器中的 JavaScript,以及支持从 Java 访问和操作 DOM 的 JavaScript/DOM 互操作性 API。
相比之下,C++ 的 Cheerp 不需要这样的运行时,而是直接使用 LLVM 字节码格式作为目标文件和库的中间表示。它的特性如下:
解析代码,发出最终的警告和错误,然后生成对输入程序进行编码的等效 IR(= 内部表示)。
IR 通过一系列转换优化为更紧凑和更高性能的 IR。
优化后的 IR 最终由代码生成为 JavaScript 和 WebAssembly 函数和变量的组合。
或者简单地说:C++ 代码库 ->Cheerp(使用 LLVM 的优化) ->JS + Wasm
一旦生成了 .js 和 .wasm 文件,接下来就是为这两个静态文件提供服务,将它们嵌入到相关的 HTML 页面中,在库的 API 之上构建功能,并测试是否一切正常。主文件到被调用的仍然是一个 .js 文件,但是一个 .wasm 文件也被加载并从 .js 文件运行。
虽然 CheerpJ 不是开源产品,但 Cheerp 现在是。
在这一点上,重要的是要注意,从 languageX 到 WebAssembly 的工具现在可以证明更有用,因为 WebAssembly 最近摆脱了浏览器的限制,现在可以用于运行微服务和无服务函数,甚至可以运行 Wasm 二进制 文件在命令行上,这样甚至可以开发跨平台的 CLI 应用程序。
暂无评论内容