Skip to content

Latest commit

 

History

History
98 lines (71 loc) · 2.72 KB

Notes.md

File metadata and controls

98 lines (71 loc) · 2.72 KB

Java 21

The first production-ready version, GraalVM 19.0, was released in May 2019

Pure Java implementation.

License: Community Edition: GPLv2. Enterprise Edition: Trialware

Install GraalVM

sdk list java
sdk install java 21-graalce
sdk use java 21-graalce
java -version

Graal JIT compiler

javac CountUppercase.java
java CountUppercase "Hello Codely!"

java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler CountUppercase "Hello Codely!"
java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler -Dgraal.PrintCompilation=true CountUppercase "Hello Codely!"

Truffle Language Implementation Framework

wget https://github.com/oracle/graaljs/releases/download/graal-23.1.0/graaljs-community-23.1.0-macos-aarch64.tar.gz
wget https://github.com/oracle/graaljs/releases/download/graal-23.1.0/graalnodejs-community-23.1.0-macos-aarch64.tar.gz
sudo xattr -r -d com.apple.quarantine graaljs-community-23.1.0-macos-aarch64.tar.gz
sudo xattr -r -d com.apple.quarantine graalnodejs-community-23.1.0-macos-aarch64.tar.gz
tar -zxvf graaljs-community-23.1.0-macos-aarch64.tar.gz
tar -zxvf graalnodejs-community-23.1.0-macos-aarch64.tar.gz
graaljs-community-23.1.0-macos-aarch64/bin/js --version
graalnodejs-community-23.1.0-macos-aarch64/bin/node -v
graaljs-community-23.1.0-macos-aarch64/bin/js
var BigInteger = Java.type('java.math.BigInteger');
console.log(BigInteger.valueOf(200000).toString(16));
mvn compile com.github.johnpoth:jshell-maven-plugin:1.4:run
import org.graalvm.polyglot.*;
import org.graalvm.polyglot.proxy.*;

String JS_CODE = "(function myFun(param){console.log('hello '+param);})";

System.out.println("Hello Java!");
try (Context context = Context.create()) {
  Value value = context.eval("js", JS_CODE);
  value.execute("Hello Codely!");
}
try (Context context = Context.create()) {
  Value value = context.eval("python", "print('Hello Python!')");
}

GraalVM Native Image

javac CountUppercase.java
java CountUppercase "Hello Codely!"

native-image CountUppercase
ls -lah countuppercase

./countuppercase "Hello Codely"

time java CountUppercase "Hello Codely!"
time ./countuppercase "Hello Codely"

Resources