なんでやったの
Java(TM) SE Runtime Environment 18.9 (build 11.0.3+12-LTS)
インストール
$ https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.0.0/graalvm-ce-java11-linux-amd64-20.0.0.tar.gz
$ tar xf graalvm-ce-java11-linux-amd64-20.0.0.tar.gz
$ mv graalvm-ce-java11-20.0.0 graalvm-ce
$ sudo mv graalvm-ce /usr/local/
$ ls -l /usr/local/graalvm-ce/
total 352
drwxrwxr-x 2 ec2-user ec2-user 4096 Apr 19 09:35 bin
drwxrwxr-x 4 ec2-user ec2-user 112 Apr 19 09:35 conf
-rw-rw-r-- 1 ec2-user ec2-user 2316 Feb 17 18:22 GRAALVM-README.md
drwxrwxr-x 3 ec2-user ec2-user 152 Apr 19 09:35 include
drwxrwxr-x 2 ec2-user ec2-user 4096 Apr 19 09:35 jmods
drwxrwxr-x 6 ec2-user ec2-user 52 Apr 19 09:35 languages
drwxrwxr-x 71 ec2-user ec2-user 4096 Apr 19 09:35 legal
drwxrwxr-x 14 ec2-user ec2-user 4096 Apr 19 09:35 lib
-rw-rw-r-- 1 ec2-user ec2-user 27181 Feb 17 18:22 LICENSE.txt
-rw-r--r-- 1 ec2-user ec2-user 3541 Feb 17 18:44 release
-rw-rw-r-- 1 ec2-user ec2-user 306188 Feb 17 18:22 THIRD_PARTY_LICENSE.txt
drwxrwxr-x 7 ec2-user ec2-user 91 Apr 19 09:35 tools
$ ls -l /usr/local/graalvm-ce/bin
total 141336
lrwxrwxrwx 1 ec2-user ec2-user 23 Feb 17 18:44 gu -> ../lib/installer/bin/gu
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 jar
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 jarsigner
-rwxr-xr-x 1 ec2-user ec2-user 8720 Feb 17 18:40 java
-rwxr-xr-x 1 ec2-user ec2-user 8784 Feb 17 18:40 javac
-rwxr-xr-x 1 ec2-user ec2-user 8784 Feb 17 18:40 javadoc
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 javap
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 jcmd
-rwxr-xr-x 1 ec2-user ec2-user 12888 Feb 17 18:40 jconsole
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 jdb
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 jdeprscan
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 jdeps
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 jfr
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 jhsdb
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 jimage
-rwxr-xr-x 1 ec2-user ec2-user 12880 Feb 17 18:40 jinfo
-rwxr-xr-x 1 ec2-user ec2-user 8784 Feb 17 18:40 jjs
-rwxr-xr-x 1 ec2-user ec2-user 8784 Feb 17 18:40 jlink
-rwxr-xr-x 1 ec2-user ec2-user 12880 Feb 17 18:40 jmap
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 jmod
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 jps
-rwxr-xr-x 1 ec2-user ec2-user 8792 Feb 17 18:40 jrunscript
lrwxrwxrwx 1 ec2-user ec2-user 22 Feb 17 18:44 js -> ../languages/js/bin/js
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 jshell
-rwxr-xr-x 1 ec2-user ec2-user 12880 Feb 17 18:40 jstack
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 jstat
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 jstatd
-rwxr-xr-x 1 ec2-user ec2-user 6341 Feb 6 17:35 jvisualvm
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 keytool
lrwxrwxrwx 1 ec2-user ec2-user 25 Feb 17 18:44 lli -> ../languages/llvm/bin/lli
lrwxrwxrwx 1 ec2-user ec2-user 24 Feb 17 18:44 node -> ../languages/js/bin/node
lrwxrwxrwx 1 ec2-user ec2-user 23 Feb 17 18:44 npm -> ../languages/js/bin/npm
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 pack200
-rwxr-xr-x 1 ec2-user ec2-user 144200783 Feb 17 18:44 polyglot
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 rmic
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 rmid
-rwxr-xr-x 1 ec2-user ec2-user 8744 Feb 17 18:40 rmiregistry
-rwxr-xr-x 1 ec2-user ec2-user 8736 Feb 17 18:40 serialver
-rwxr-xr-x 1 ec2-user ec2-user 117704 Feb 17 18:40 unpack200
$ /usr/local/graalvm-ce/bin/java -version
openjdk version "11.0.6" 2020-01-14
OpenJDK Runtime Environment GraalVM CE 20.0.0 (build 11.0.6+9-jvmci-20.0-b02)
OpenJDK 64-Bit Server VM GraalVM CE 20.0.0 (build 11.0.6+9-jvmci-20.0-b02, mixed mode, sharing)
OpenJDK Runtime Environment GraalVM CE 20.0.0 (build 11.0.6+9-jvmci-20.0-b02)
$ java -version
openjdk version "11.0.6" 2020-01-14
OpenJDK Runtime Environment GraalVM CE 20.0.0 (build 11.0.6+9-jvmci-20.0-b02)
OpenJDK 64-Bit Server VM GraalVM CE 20.0.0 (build 11.0.6+9-jvmci-20.0-b02, mixed mode, sharing)
public class GraalTest {
public static void main(String[] args) {
System.out.print("Hello World!\n");
}
}
$ gu install native-image
$ native-image GraalTest
Build on Server(pid: 948, port: 33429)
[graaltest:948] classlist: 524.06 ms, 0.37 GB
[graaltest:948] (cap): 365.60 ms, 0.37 GB
[graaltest:948] setup: 557.88 ms, 0.37 GB
Error: Unable to compile C-ABI query code. Make sure native software development toolchain is installed on your system.
Error: Use -H:+ReportExceptionStackTraces to print stack
$ native-image --verbose GraalTest
Build on Server(pid: 948, port: 33429)
SendBuildRequest [
-task=com.oracle.svm.hosted.NativeImageGeneratorRunner
-imagecp
/usr/local/graalvm-ce/lib/svm/builder/svm-llvm.jar:/usr/local/graalvm-ce/lib/svm/builder/graal-llvm.jar:/usr/local/graalvm-ce/lib/svm/builder/llvm-wrapper-shadowed.jar:/usr/local/graalvm-ce/lib/svm/builder/javacpp-shadowed.jar:/usr/local/graalvm-ce/lib/svm/builder/llvm-platform-specific-shadowed.jar:/usr/local/graalvm-ce/lib/svm/builder/svm.jar:/usr/local/graalvm-ce/lib/svm/builder/objectfile.jar:/usr/local/graalvm-ce/lib/svm/builder/pointsto.jar:/usr/local/graalvm-ce/lib/svm/library-support.jar:/home/ec2-user/java
-H:Path=/home/ec2-user/java
-H:CLibraryPath=/usr/local/graalvm-ce/lib/svm/clibraries/linux-amd64
-H:Class=GraalTest
-H:Name=graaltest
]
[graaltest:948] classlist: 486.59 ms, 0.37 GB
[graaltest:948] (cap): 317.02 ms, 0.37 GB
[graaltest:948] setup: 466.29 ms, 0.37 GB
Error: Unable to compile C-ABI query code. Make sure native software development toolchain is installed on your system.
Error: Use -H:+ReportExceptionStackTraces to print stacktrace of underlying exception
Error: Image build request failed with exit status 1
com.oracle.svm.driver.NativeImage$NativeImageError: Image build request failed with exit status 1
at com.oracle.svm.driver.NativeImage.showError(NativeImage.java:1527)
at com.oracle.svm.driver.NativeImage.build(NativeImage.java:1289)
at com.oracle.svm.driver.NativeImage.performBuild(NativeImage.java:1250)
at com.oracle.svm.driver.NativeImage.main(NativeImage.java:1209)
at com.oracle.svm.driver.NativeImage$JDK9Plus.main(NativeImage.java:1707)
エラー文言でぐぐったけどWindows系の対処方法しかなかった
解決
For compilation native-image depends on the local toolchain, so please make sure: glibc-devel, zlib-devel (header files for the C library and zlib) and gcc are available on your system.
sudo yum install glibc-devel
sudo yum install zlib-devel
sudo yum install gcc
$ native-image --verbose GraalTest
Build on Server(pid: 948, port: 33429)
SendBuildRequest [
-task=com.oracle.svm.hosted.NativeImageGeneratorRunner
-imagecp
/usr/local/graalvm-ce/lib/svm/builder/svm-llvm.jar:/usr/local/graalvm-ce/lib/svm/builder/graal-llvm.jar:/usr/local/graalvm-ce/lib/svm/builder/llvm-wrapper-shadowed.jar:/usr/local/graalvm-ce/lib/svm/builder/javacpp-shadowed.jar:/usr/local/graalvm-ce/lib/svm/builder/llvm-platform-specific-shadowed.jar:/usr/local/graalvm-ce/lib/svm/builder/svm.jar:/usr/local/graalvm-ce/lib/svm/builder/objectfile.jar:/usr/local/graalvm-ce/lib/svm/builder/pointsto.jar:/usr/local/graalvm-ce/lib/svm/library-support.jar:/home/ec2-user/java
-H:Path=/home/ec2-user/java
-H:CLibraryPath=/usr/local/graalvm-ce/lib/svm/clibraries/linux-amd64
-H:Class=GraalTest
-H:Name=graaltest
]
[graaltest:948] classlist: 586.08 ms, 0.37 GB
[graaltest:948] (cap): 1,519.61 ms, 0.37 GB
[graaltest:948] setup: 4,825.24 ms, 0.37 GB
[graaltest:948] (typeflow): 20,870.66 ms, 0.37 GB
[graaltest:948] (objects): 12,267.76 ms, 0.37 GB
[graaltest:948] (features): 500.71 ms, 0.37 GB
[graaltest:948] analysis: 34,038.85 ms, 0.37 GB
[graaltest:948] (clinit): 459.90 ms, 0.37 GB
[graaltest:948] universe: 1,395.97 ms, 0.37 GB
[graaltest:948] (parse): 7,364.63 ms, 0.37 GB
[graaltest:948] (inline): 4,375.56 ms, 0.37 GB
[graaltest:948] (compile): 33,904.71 ms, 0.37 GB
[graaltest:948] compile: 46,654.57 ms, 0.37 GB
[graaltest:948] image: 2,174.40 ms, 0.37 GB
[graaltest:948] write: 358.19 ms, 0.37 GB
[graaltest:948] [total]: 90,857.98 ms, 0.37 GB
$ ./graaltest
Hello World!
今更
- Javaのディストリビューション何使うか迷ってたけど、GraalVM使うと OracleOpenJDK入ってみるみたい
- AWSだからAmazon Corret使うべきかなとか迷っている
- Javaをそのままそっくり入れ替えたら動くのかな
- Applicationを動作させるためにはRootDirectoryにこのimage設置すればいい?
- JDKの最新版に追いつけるのか問題が自分の中で勃発している。