CSDN话题挑战赛第2期
参赛话题:Java技术分享

文章目录

引言

GraalVM基本介绍

安装GraalVM

在IDEA中配置GraalVM

代码测试:Java with JavaScript


引言

GraalVM:高性能,云原生,多语言

GraalVM基本介绍

 先来一张GraalVM的架构图

GraalVM是一个高性能的JDK,其设计目标是提高Java和其它JVM语言实现的应用的运行速度,与此同时,也提供了一些流行的开发语言的运行时环境,比如JavaScript和Python

GraalVM的核心组件如下

  • Java HotSpot VM
  • Graal编译器 - 顶级JIT编译器
  • 多语言API 
  • ​GraalVM Updater - 安装扩展功能的工具

安装GraalVM

安装GraalVM很简单,相当于新增一个JDK

GraalVM官网的快速开始页面提供了4种不同系统的安装方式

  • Linux
  • macOS
  • Windows
  • Docker Container

这里选择macOS安装方式,没有提供dmg安装方式,需要在Github下载压缩包

下载后用tar命令解压,移动到/Library/Java/JavaVirtualMachines目录下(需要sudo)

sudo tar -xzf graalvm-ce-java<version>-darwin-amd64-<version>.tar.gz

sudo mv graalvm-ce-java<version>-<version> /Library/Java/JavaVirtualMachines

完成后可以用/usr/libexec/java_home命令检查

 接下来配置环境变量,以及JDK多版本切换快捷方式,可以参考之前的一篇文章

到这一步,GraalVM环境就配置完成了

在IDEA中配置GraalVM

在IDEA社区版2022.2.3中新建项目graalvm-feature,并添加GraalVM到JDK

 这一步也很简单

代码测试:Java with JavaScript

还是国际惯例,Hello GraalVM吧

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello GraalVM!");
    }
}

Java代码能跑了,接下来测试一下多语言特性,那么Python可以上场了吧

使用前先使用gu安装对应的语言环境,gu是GraalVM提供的组件安装工具(GraalVM Component Updater),需要用sudo提高权限

但安装失败了,不甘心,那么试试node.js吧,还是一样的结果。用gu available命令查看,发现支持的多语言组件很少,除了JavaScript,其它的都不会

 继续查看文档,发现M1芯片node.js和Python都还不支持,看来只能和JS做好朋友了

 测试代码如下,参考官网的示例代码

import org.graalvm.polyglot.*;

public class Main {

    public static void main(String[] args) {
        // Java代码作为启动代码
        System.out.println("Hello GraalVM! from Java");
        System.out.println("Let's go with JavaScript");

        // 启用多语言
        Context polyglot = Context.create();
        // JavaScript
        polyglot.eval("js", "console.log('Hello GraalVM! from JavaScript')");
        // Python,未安装GraalVM对应的运行环境,执行会报错
        polyglot.eval("python", "print('Hello GraalVM! from Python')");
    }
}

执行结果如下

以上就是GraalVM的安装过程,还是比较简单的,只是Mac M1支持的多语言比较少,本系列后期会慢慢探索GraalVM的强大功能

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐