A look at GraalVM 20.0: better Windows support, better Native Images, better tooling

原文はこちら。
The original entry was written by Oleg Šelajev (Developer advocate for GraalVM at Oracle Labs)
https://medium.com/graalvm/a-look-at-graalvm-20-0-better-windows-support-better-native-images-better-tooling-4fabc1227a48

数日前に、GraalVM 20.0がリリースされ、ダウンロードできるようになっています。

GraalVM Downloads
https://www.graalvm.org/downloads

まだチェックされていないのであれば、プロジェクト全体で数多くの拡張機能が入っていますので、是非チェックしてください。

GraalVMコミュニティの優れたコラボレーションがなければ、リリースも素晴らしいものになりません。まず最初に積極的に参加してくれたコミュニティに感謝いたします。フィードバックからプルリクエストへの貢献までの全てがが重要です。さらに、最近、HibernateおよびTomcatがGraalVM Native Imageをサポートしました。これで通して、GraalVMネイティブイメージのJavaエコシステムの改善について学びました。

GitHub Issues
https://github.com/oracle/graal/issues
Pull Requests
https://github.com/oracle/graal/pulls
Showing some love for GraalVM: Hibernate ORM 5.4.12.Final is here
https://in.relation.to/2020/02/14/hibernate-orm-5-4-12/
GraalVM support
https://tomcat.apache.org/tomcat-9.0-doc/graal.html

GraalVM 20.0はmasterブランチからのリリースですが、19.3.xブランチは4月に予定されている次のリリースで引き続きメンテナンスされます。アップデートして新機能と改善点を活用なさることをお勧めします。このエントリでは最も注目すべき新機能を紹介します。

Version Roadmap
https://www.graalvm.org/docs/release-notes/version-roadmap/
GraalVM Release Notes : 20.0.0
https://www.graalvm.org/docs/release-notes/20_0/

Improved Windows support

最もエキサイティングなニュースの1つは、最も広く使用されているオペレーティングシステムの1つであるWindows用GraalVMビルドが、完全に機能するGraalVMディストリビューションに近づいたことです。

GraalVMのWindowsビルドには、gu install native-imageのように使ってコンポーネントをインストールするためのguユーティリティが含まれるようになりました。以前Windowsのベースディストリビューションに含まれていたネイティブイメージコンポーネントは分離されたため、guを使用してインストールする必要があります。

さらに興味深い事実は、Windowsのネイティブイメージが大幅に改善され、他のプラットフォームと同じように機能することです。これは、実行時にJVMを必要としないコマンドラインツールを開発する絶好の機会です。

scalafmtやbabashkaのような数多くのプロジェクトではLinuxやmacOSでやっていますが、Windows実行ファイルの追加に興味を持ってくれるかどうかを楽しみにしています。

Code formatter for Scala
https://scalameta.org/scalafmt/
A Clojure babushka for the grey areas of Bash
https://github.com/borkdude/babashka

Windowsでのネイティブイメージで問題が発生した場合は、Issueを立ててください。

Issues
https://github.com/oracle/graal/issues/new/choose

Native images improvements

前のリリースで、手動置換の代わりにJDKネイティブコードを使用し、GraalVMネイティブイメージの内部動作を変更しました。この変更は、JDK 11ベースのビルドを含める上で必要なものであり、先月、チームはネイティブイメージとJNIに関するいくつかの問題を修正しました。GitHubに問題を報告されたのであれば、問題が解決したかどうかを確認してください。

もう一つ、GraalVM Enterpriseのネイティブイメージ用の実験的な低遅延ガベージコレクション実装がエコシステムに追加されました。

ネイティブイメージのビルド時に-H:+UseLowLatencyGCオプションを指定すると試すことができます。これにはstop-the-worldの期間を短縮する別のGC実装が含まれています。現在サポートされているものと、ネイティブイメージのメモリ使用量を構成する方法についての詳細は以下のURLからどうぞ。

GraalVM Native Image
https://www.graalvm.org/docs/reference-manual/native-image/#lower-latency-garbage-collection

More advanced tooling

開発者ツールはGraalVMエコシステムの重要な部分です。GraalVMはユニークなpolyglot runtimeであり、典型的な開発者タスクに対する優れたサポートがなければ、その多言語機能は現在ほどエキサイティングなものにはなっていなかったでしょう。

GraalVM 20.0では、Language Server Protocol (LSP) 実装のテクニカルプレビューが導入されています。Language Server Protocolとは、開発ツールの言語サポートを標準化して、エディターが言語選択と結び付かないようにするアプローチです。GraalVMでは、1つのJITコンパイラ、GC、プロファイラ、およびその他のツールを複数の言語で使用できるため、サポートされている言語の言語サーバ (Language Server) の実装を追加しました。

現在JavaScriptで一番有効に機能します。その他のGraalVM言語ではLSPのサポートを追加する必要があります。LSPを試したい場合には、GraalVM extensionsをVS Codeにインストールし、node.jsアプリケーションを開き、GraalVMで実行してみてください。

GraalVM Extension Pack
https://marketplace.visualstudio.com/items?itemName=oracle-labs-graalvm.graalvm-complete

VS Codeのコード補完により、型情報を認識しているローカル変数 c のメソッドが表示されています。

アプリケーションプロセスには、実行中のプログラムの変数と型に関する情報を収集する言語サーバ実装が含まれており、VS Codeのコード補完機能は、言語サーバからの情報を使用して可能なメソッドを提案します。

Conclusion

GraalVM 20.0は全面的な改善が含まれたメジャーリリースです。このリリースでは、Windowsビルドの改善、ARM64ビルドの改善、Node.js 12.15のサポート、新しいツール、ネイティブイメージに関連する多数のバグ修正、そしてもちろんパフォーマンスの強化が含まれています。新機能や注目すべき機能の詳細は、リリースノートをご覧ください。

GraalVM Release Notes : 20.0.0
https://www.graalvm.org/docs/release-notes/20_0

ぜひGraalVM 20.0をダウンロードしてアプリケーションを実行してください。そして何かあればフィードバックをお寄せください。GraalVMコミュニティの一員として引き続きGraalVMエコシステムの拡大にご協力ください。

GraalVM Downloads
https://www.graalvm.org/downloads
GitHub Issues
https://github.com/oracle/graal/issues

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中