2024年8月26日,InfoQ发布了一篇文章,探讨了如何在Java中更安全地集成本地代码,特别提到了WebAssembly(Wasm)在解决这一问题上的潜力。Java开发者在需要调用C语言实现的加密、压缩、数据库操作等本地功能时,通常会面临在JVM上执行本地代码的需求。文章作者Benjamin Eckel和译者明知山详细阐述了目前的挑战以及可能的解决方案。
动态链接的挑战
动态链接是目前解决本地代码集成的常见方式,但这种方法在JVM环境中可能带来安全性和可移植性问题。一旦从JVM跳转到本地代码,就失去了JVM提供的安全保证,如内存故障处理和性能优化。此外,动态链接的库需要为每个目标平台单独编译,增加了部署的复杂性。
代码移植的困境
移植代码到JVM可以解决这些问题,但需要大量工作且可能落后于原生实现。以SQLite为例,尽管有移植版本如SQLJet,但维护可能是个问题。直接将代码编译为JVM字节码的选项有限,且并非所有语言都支持。
WebAssembly的机遇
WebAssembly作为第三种解决方案,提供了一种兼顾安全性和便利性的途径。Wasm是一种类似JVM字节码的格式,可在多种环境中运行,包括JVM。SQLite等项目已提供Wasm版本,使得开发者可以在Java应用中安全地使用这些本地库,而无需从头重写代码。Wasm正逐渐成为多种编程语言的编译目标,为在JVM上运行本地代码提供了新的可能。
通过Wasm,开发者可以在享受JVM带来的安全性和可移植性的同时,利用已有的本地代码库,降低风险并简化发布流程。这一技术的普及和成熟,对于Java开发者来说,无疑为解决本地代码集成问题提供了一条新的、安全的路径。
【source】https://mp.weixin.qq.com/s/11QXs-m0hUGHGXHkrairZw
Views: 1