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 を正式にサポートする。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT