LoginSignup
2
0

More than 3 years have passed since last update.

Graalvmを触ってみてハマった事など

Posted at

Graalvmを触ってみてハマった事など

Graalvmとは


GraalVMは、JavaScript、Python、Ruby、R、Java、Scala、Kotlin、ClojureなどのJVMベースの言語、およびCやC ++などのLLVMベースの言語で作成されたアプリケーションを実行するためのユニバーサル仮想マシンです。

GraalVMはプログラミング言語間の分離を取り除き、共有ランタイムでの相互運用性を可能にします。スタンドアロンでも、OpenJDK、Node.js、Oracle Database、またはMySQLのコンテキストでも実行できます。

公式の翻訳まんまだけど。

公式からは代表的な機能として
- Polyglot
- Native
- Embeddable
とかあったのだけど今回Nativeを触る

native-imageを触ってみた

Nativeを触る前に

意外と知らないJITコンパイラとAOTコンパイラの違いは読んでおくといい

通常scalaなどはJITコンパイラ 生成物が中間ファイルでjavaに任せて実行する。

AOTコンパイラだとOSに依存した実行ファイルを生成する。

OS側にはjavaは不要になり実行ファイルのみで起動が可能になる。

環境構築など

ScalaをGraalVMで動かす&ネイティブイメージ化する主にここを参考にできるので

省略

ただnative-imageなどは追加でインストールする必要に変わったので
その当たりは公式を参考に下記みたいに追加する必要がある。

$ $GRAALVM_HOME/bin/gu install native-image

また今回はコマンドラインだったけど、brew search graalvmだと

brew search graalvm
No formula or cask found for "graalvm".
Closed pull requests:
Add GraalVM Community Edition 1.0.0 RC12 (https://github.com/Homebrew/homebrew-cask/pull/58492)
Add GraalVM v1.0.0-rc10 (https://github.com/Homebrew/homebrew-cask/pull/57374)

な感じなんでupdateとかすればbrewでインストールは可能になりそう

scalaをnative化

DB接続系のライブラリなどを使うとリフレクション周りで落ちた

制約事項LIMITATIONS.mdに記載されているので確認すると良い。

後で知ったがGraalVM の native image を使って Java で爆速 Lambda の夢を見るこちらに上がってる記事でリフレクション周りの設定は少し解決できるっぽい

感想

まだscalaでしかやってなかったがnodeなどもちょっと試してみたい。

またnative以外ももうちょっと理解はしていきたいと思う

参考URL

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0