The first production-ready version, GraalVM 19.0, was released in May 2019
Pure Java implementation.
License: Community Edition: GPLv2. Enterprise Edition: Trialware
sdk list java
sdk install java 21-graalce
sdk use java 21-graalce
java -version
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!"
- https://www.graalvm.org/latest/graalvm-as-a-platform/language-implementation-framework/LanguageTutorial/
- https://github.com/oracle/graaljs/releases/
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!')");
}
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"