Javet 3.0.2 发布:Java 与 V8/Node.js 的深度融合
Javet 是一个将 Java 与 V8 引擎(Node.js 的核心)结合的项目,最新版本 3.0.2 标志着其在 Java 中嵌入 Node.js 和 V8 技术方面取得了显著进展。该版本集成了 Node.js v20.10.0 和 V8 v12.0.267.8,展示了项目对最新技术发展的持续跟进。
主要特性与改进
- CPU 架构支持扩展
Javet 3.0.2 增强了对多种 CPU 架构的支持,包括 Linux、macOS 和 Windows 的 x86_64,以及 Linux、Android 和 macOS 的 arm64。这一扩展确保了更多开发者可以在不同操作系统上使用 Javet。 - 动态切换 Node.js 和 V8 模式
新版本支持在 Node.js 和 V8 模式之间动态切换。这种灵活性结合了 V8 API 在 JVM 中的暴露,使得 JavaScript 和 Java 之间的交互更加无缝。 - 原生支持 BigInt 和 Date
Javet 提供了对 BigInt 和 Date 的原生支持,并支持与 Spring 框架的轻松集成,进一步提升了开发体验。 开发者工具增强
- JavetSanitizer:用于 AST 分析的工具。
- Chrome DevTools 支持:支持实时调试,提升了开发效率。
- Javet 引擎池:更好地管理多个 JavaScript 引擎资源,适用于高性能复杂应用。
- V8 模式的 Polyfill:增强了 V8 引擎在 Java 环境中的兼容性。
- 简单易用的集成
Javet 3.0.2 通过 Maven 和 Gradle Kotlin DSL 依赖项,可以轻松集成到项目中,开发者可根据目标平台选择合适的依赖项。
示例代码
以下是一个简单的 Java 应用程序嵌入 V8 的示例:
import com.caoccao.javet.exceptions.JavetException;
import com.caoccao.javet.interop.V8Host;
import com.caoccao.javet.interop.V8Runtime;
public class JavetDemo {
public static void main(String[] args) {
try (V8Runtime v8Runtime = V8Host.getV8Instance().createV8Runtime()) {
int result = v8Runtime.getExecutor("1 + 2").executeInteger();
System.out.println("Result of 1 + 2: " + result);
v8Runtime.getExecutor("const obj = { x: 10, y: 20 };").executeVoid();
int x = v8Runtime.getExecutor("obj.x").executeInteger();
int y = v8Runtime.getExecutor("obj.y").executeInteger();
System.out.println("Values of x and y: " + x + ", " + y);
} catch (JavetException e) {
throw new RuntimeException(e);
}
}
}输出结果:
Result of 1 + 2: 3
Values of x and y: 10, 20与 Nashorn 的对比
在 Javet 之前,Nashorn 是 Java 中嵌入 JavaScript 的主要框架,随 Java 8 引入。然而,Nashorn 在 Java 11 中停止开发,Javet 作为替代方案,提供了更强大且功能丰富的 Java-JavaScript 集成解决方案。
总结
Javet 3.0.2 在 Java 与 JavaScript 的融合方面迈出了重要一步,其强调互操作性、增强的 CPU 架构支持以及开发者友好的特性,使其成为 Java 和 JavaScript 开发者的重要工具。开发者可通过 Javet 官方网站 和 GitHub 页面 获取更多信息,并支持项目的持续发展。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。