GraalVMとJavaでnative-cliを書いてみる
そうそう。ちょっとしたスクリプトみたいなの、go じゃなくて java で書いてgraalvmにするのありだと思いますね。そのうちやろうと思ってる
— tokuhirom (@tokuhirom) June 21, 2018
このTweetみて超興味がわいて、GraalVM+Javaでnative cliを書く練習をしてみた
navme | version |
---|---|
Ubuntu | 18.04 |
graalVM | 1.0.0-rc2 |
install
download here
tar xzvpf graalvm-ce-1.0.0-rc2-linux-amd64.tar.gz mv ./graalvm-ce-1.0.0-rc2 /opt/graalvm
native imageにコンパイル
これに従ってやってみる
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ライブラリの使い方をしらべたいところ