BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース GraalVM 21.3がJava 17をサポート

GraalVM 21.3がJava 17をサポート

原文(投稿日:2021/11/08)へのリンク

Oracle Labs は Java 17 とネイティブ Java で実行可能なオーバーヘッドの少ないプロダクションプロファイリング、JDK Flight Recorder (JFR) のサポートで GraalVM 21.3 をリリースした。2021年4月のバージョン 21.1 と比較して、このリリースでは Spring PetClinic JDBC で 14% 小さくネイティブ実行ファイルが作成され、ビルド時間が 20% 短縮される。このリリースで、アプリケーションがより高速に実行され、Java プラットフォームモジュールシステムのサポートが開始される。

GraalVM はインタープリタの非ネイティブ Java アプリケーションもより速く開始する。これはビルド時間の長さによりネイティブ Java の実行が実用的でない開発中に役立つ。

GraalVM には Community Edition と Enterprise Edition の2つのエディションがある。Community Edition の Classpath 例外ライセンス付きの GPL は「あらゆる目的で無制限で無料で使用できるが、保証やサポートもない」ことを意味し、リリースは1年間更新される。Enterprise Edition はプロダクションで使用するためにユーザごとまたはプロセッサごとの支払う Oracle Java SE サブスクリプションが必要だ。

Enterprise Edition には Oracle によるサポートも含まれプロファイルに基づく最適化G1 ガベージコレクタなど独自のパフォーマンスおよびセキュリティ機能を備えている。このため、ネイティブ実行ファイルはベンチマークミックスで OpenJDK のパフォーマンスの 98% に達するのに対し、Community Edition では 43% で OpenJDK アプリケーションよりも少ないメモリで高速に起動する。

Oracle の主張では、いくつかの機械学習シナリオで Enterprise Edition のネイティブ実行が OpenJDK よりも最大 40% 高速だとする。定数ブラインド (Constant Blinding) は、Enterprise Edition のセキュリティ機能の例だ。JIT スプレー攻撃から防御し、-Dgraal.BlindConstants=true で有効にできる。

ネイティブ実行の新しいビルド時構成オプションを使用すると、リフレクション、JNI、動的プロキシオブジェクトなどの機能を無効にし、クラスに到達できないクラスパスリソースを除外できる。これによりネイティブ実行ファイルが小さくなる可能性がある。

新しい proftool (現時点ではLinuxのみ) は、Linux の perf ツールおよび HotSpot LogCompilation は JVM から Java アプリケーションのランタイムパフォーマンスメトリックスを収集する。これは JIT パフォーマンス分析に役立つ。

GraalVM Polyglot Runtime は Java 以外の複数の言語を実行する。JavaScript ランタイムが Node.js 14.17.6 に更新され、WebAssembly のサポートが改善された。Python ランタイムは、再コンパイルせずに HPy バイナリパッケージを実行できるようになった。また、マルチコアマシン上で複数の Python コンテキスト間のタスクを調整するマルチプロセッシングモジュールをサポートし、ネイティブコードで記述されたソケットモジュールを備えている。

より効率的な正規表現エンジン の TRegex を使用するようになった Ruby on GraalVM は一部のベンチマークで最大9倍高速になった。R ランタイムが PCRE から PCRE2 バージョン 10.37 にアップグレードされた。C/C++ をコンパイルする LLVM ツールチェーンがバージョン 12.0.1 に更新された。また WebAssembly は、GraalVM Enterprise Edition の一部のシナリオでより高速に実行される。

Visual Studio Code の GraalVM ツールが改善された: GraalVM Tools for Java はデバッグでネイティブ実行にアタッチできる。また、GraalVM Tools for Micronaut は、Kubernetes クラスタで Micronaut アプリケーションをデプロイ、実行、デバッグできる。

新しい Spring イニシアチブの Spring Native は Spring アプリケーションのネイティブ実行ファイルを作成する。2021年11月19日にリリースが予定されているバージョン 0.11 は GraalVM 21.3 と Spring Boot 2.6 の次のリリースに依存する。Kubernetes ネイティブの Java スタック、Quarkus は次の 2.5 リリースの推奨バージョンとして GraalVM 21.3 を使用する。フルスタックフレームワーク Micronaut は2021年11月下旬または12月に予定されているバージョン 3.2.0 の次のリリースで GraalVM 21.3 を正式にサポートする。

この記事に星をつける

おすすめ度
スタイル

BT