Javet 3.0.2 发布:通过增强功能桥接 Java 和 JavaScript

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,展示了项目对最新技术发展的持续跟进。

主要特性与改进

  1. CPU 架构支持扩展
    Javet 3.0.2 增强了对多种 CPU 架构的支持,包括 Linux、macOS 和 Windows 的 x86_64,以及 Linux、Android 和 macOS 的 arm64。这一扩展确保了更多开发者可以在不同操作系统上使用 Javet。
  2. 动态切换 Node.js 和 V8 模式
    新版本支持在 Node.js 和 V8 模式之间动态切换。这种灵活性结合了 V8 API 在 JVM 中的暴露,使得 JavaScript 和 Java 之间的交互更加无缝。
  3. 原生支持 BigInt 和 Date
    Javet 提供了对 BigInt 和 Date 的原生支持,并支持与 Spring 框架的轻松集成,进一步提升了开发体验。
  4. 开发者工具增强

    • JavetSanitizer:用于 AST 分析的工具。
    • Chrome DevTools 支持:支持实时调试,提升了开发效率。
    • Javet 引擎池:更好地管理多个 JavaScript 引擎资源,适用于高性能复杂应用。
    • V8 模式的 Polyfill:增强了 V8 引擎在 Java 环境中的兼容性。
  5. 简单易用的集成
    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 页面 获取更多信息,并支持项目的持续发展。

阅读 301
0 条评论