Keep on moving

あんまりまとまってないことを書きますよ

GraalVMとJavaでnative-cliを書いてみる

このTweetみて超興味がわいて、GraalVM+Javaでnative cliを書く練習をしてみた

navme version
Ubuntu 18.04
graalVM 1.0.0-rc2

install

download here

github.com

tar xzvpf graalvm-ce-1.0.0-rc2-linux-amd64.tar.gz 
mv ./graalvm-ce-1.0.0-rc2 /opt/graalvm

native imageにコンパイル

github.com

これに従ってやってみる

import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

class ListFiles{
    public static void main(String[] args) {
        Path dir = Paths.get(".");

        try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*")) {
            for (Path file : stream) {
                System.out.println(file.getFileName());
            }
        } catch (IOException ignored) {
        }
    }
}
$ /opt/graalvm/bin/java ListFiles
$ /opt/graalvm/bin/native-image ListFiles <= 一回Java classに変換してからnative-imageでビルドする
$ ls
ListFiles.class
listfiles* <= native imag3!!!
ListFiles.java
$ ./listfiles 
ListFiles.java
listfiles
ListFiles.class

こんな感じでJava環境なしでも動くイメージがつくれた。

Next

つぎは3rd-partyライブラリの使い方をしらべたいところ