次世代 JVM である GraalVM とは何でしょうか?

次世代 JVM である GraalVM とは何でしょうか?

[[404037]]

この記事はWeChatの公開アカウント「Coffee Latte」から転載したもので、著者はCoffee Latteです。記事の転載についてはCoffee Latte公式アカウントまでご連絡ください。

背景

先週、私は QCON に参加し、さまざまな企業の重役による技術共有を聞くという栄誉に恵まれました。しかし、私が得たものに関して言えば、あまり多くの知識は得られませんでした。ブースからたくさんの小さなプレゼントを持ち帰りました、はは〜。写真

実際、このような会議では詳細を本当に理解するのは難しいです。重要なのは、新しい業界のトレンドと新しい技術開発を理解することです。その中で、アリババはコールドスタートローディング技術を共有し、GraalVMと呼ばれる技術について言及しました。私はこれまでにもこの単語を多少なりとも偶然に見たことはありましたが、それについて学んだことはありませんでした。偶然にも、アリババのボスがこの技術について再び言及した。この技術がこれほど強力だとは思っていなかったので、いくつかの情報を慎重に調べて、皆さんと共有したいと思いました。

GraalVM とは何ですか?

GraalVM について話す前に、JVM について話しましょう。 JVM は Java 仮想マシンです。 Java プログラムを実行する場合は、JVM 上で実行する必要があります。 JVM はコードをマシンが理解できるコードに変換して実行します。つまり、JVM は Java しか実行できないということですか?もちろん違います。 Scala や Groovy などのよく知られた言語も数多くあり、それぞれのコンパイラを通じて Java 仮想マシンに対応するバイトコードにコンパイルされて実行されます。

GraalVMに戻りましょう。一見すると、Graal 言語用の仮想マシンのように見えますが、そうではありません。 GraalVM は、ORACLE によって開発された「汎用」仮想マシンです。この将軍をどう理解すればいいのでしょうか?前述の通り、JVMはJava以外の言語もサポートできるため、GraalVMはJVM言語だけでなく、JavaScript、Python、Ruby、C、C++などもサポートできます(理論上は対応する言語開発さえ行えば、すべての言語をサポートできます)。

しかし、ここで注目すべきは、GraalVM は Java で記述されているため、JAVA プログラマーとして仮想マシンのコードを変更する場合、C++ や C などの言語を理解する必要がないということです。

GraalVM は何をしますか?

起動加速

QCon では、k8s やサーバーレスなど、よく耳にするテクノロジーがいくつかあります。弾性拡張がこれらの技術の中核であることはわかっています。たとえば、クラスターでトラフィックのバーストが発生すると、通常はマシンの容量を迅速に拡張します。ただし、Java の特性により、次の 2 つの側面で速度低下が発生します。

  • 起動が遅い: JAVA を起動するとき、つまりクラス ファイルを JVM にロードするとき、クラスのロードにはかなりのコストがかかり、取得、検証、解析などが必要になります。
  • 起動後の実行が遅い: Java コードは起動後、一定期間解釈され実行されることがわかっています。コンパイルされた実行を実現するには、効率的な実行を実現するために、JIT テクノロジを使用して実行用のマシン コードに直接コンパイルする必要があります。これをウォームアップと呼びます。

QCon から、Java コンパイル技術の進化を示す写真をキャプチャしました。

最初の 2 つのステージは、誰もがよく知っているステージです。コードの実行は、翻訳、c1 コンパイル、c2 コンパイルを通じて実行されます。 3 番目の部分では、静的コンパイルである AOT テクノロジについて説明します。 C++ と同様に、コードを実行する前にコードをマシン コードにコンパイルできます。ただし、JAVA には多くの動的機能があるため、通常は jaotc を使用して JDK に付属するパッケージを静的にコンパイルし、他のパッケージでは引き続き変換と jit 実行を使用します。

4 番目のステージは、Graal ベースの AOT フレームワークである SubstrateVM (以下、SVM) です。動的な機能を静的にコンパイルできます。考えてみてください。Java で最も動的なものはリフレクションです。たとえば、クラスのメソッドを実行する場合は、次のように記述します。

  1. 文字列メソッド = "xx" ;
  2.  
  3. オブジェクト.invoke(メソッド);

私たちのメソッドは実際には文字列であり、動的変数であることがわかります。このような動的なものを静的にコンパイルするにはどうすればよいでしょうか?アリババは内部的にそれを観察します。たとえば、プログラムを数週間実行してすべての呼び出しシナリオを取得し、それらをまとめてコンパイルします。その時、観察がない場合はどうすればいいのかという質問もありました。この場合、確かにエラーが報告されるので、この部分の使用は確かに問題です。

静的コンパイル後、パフォーマンスは向上しましたか?

上記のパフォーマンス データから判断すると、パフォーマンスは Go に匹敵し、メモリ使用量は Go の半分しかありません。 Go の代わりに Graal が使用されていると皆が言うのも不思議ではありません。

同時に、Graal コンパイラは C2 コンパイラを置き換えることもできます。 Graal は、Twitter と Facebook の内部運用環境で C2 を置き換えるために使用されてきました。

したがって、弾力的なスケーリングと高速起動を必要とするプログラムの場合は、仮想マシンとして GraalVM の使用を検討できます。

多言語通話

前述のように、GraalVM は多くの言語をサポートしています。サーバー開発には Java を使用し、データ分析には Python または R を使用する必要があると想像してください。以前は、これを行うには Rpc を呼び出す必要があったかもしれません。これで、同じプロジェクトまたは同じファイルにそれらを配置し、GraalVM の機能を使用してこれを実行できるようになりました。

要約する

GraalVM は確かに比較的新しいテクノロジーであり、その全体的な野心は明らかに非常に大きいです。結局のところ、汎用の仮想マシンになりたいのです。成功すれば、Java で開発されるため、Java プログラマーにとって有利になります。興味があれば、情報を検索して詳細を知ることができます。

<<:  クラウドコンピューティングの謎を解く

>>:  クラウドコンピューティングのハイパースケール開発において適切なパートナーを選択する方法

推薦する

Baidu のオリジナル Spark Project 検索エンジンが重複コンテンツを識別する方法

百度検索エンジンは、インターネットの情報内容を是正するために、「百度オリジナルスパーク計画」を大規模...

6.28 Baidu Kステーションから学んだ教訓と経験

フォーラムのほとんどの人が、Baidu の 6.28K サイトのブラック ストームを経験したと思いま...

2024 年に向けてすべての企業が準備すべきクラウド コンピューティングの 10 大トレンド

2024 年には、企業は時間とコストを節約するためにクラウド移行の機会の先を見据えるようになります。...

Hostgator: cpanel 仮想ホスティング、40% オフのプロモーション、中小規模のウェブサイトに最適

Hostgator は、最新の cPanel 仮想ホストの特別プロモーションを開始しました。40% ...

素晴らしい貢献です。キーワードとタイトルの変更に関する私の経験を共有します

以前の記事でも述べたように、Naihe は、ウェブサイト上のキーワードランキング コラム ページ (...

キープがついにIPOの分野に参入

過去1年間、人事異動、製品リコール、収益減少を経験してペロトンが倒産した後、このスマートフィットネス...

stronghub-1g メモリ/2g バースト/40g ハードディスク/月額 4.95 ドル

Stronghubは頭を悩ませる会社です。投稿するかどうかずっと考えていましたが、公式サイトからは何...

高級品電子商取引の再編が加速、不明確な収益モデルが発展の弱点に

記者の唐剛中国で高級品の需要が急増する中、高級品を専門に扱う国内の電子商取引企業には喜ぶ理由がほとん...

locvps: 年初30%オフ、米国cn2 vps、日本vps、無制限トラフィック、Windowsをサポート

locvps は年初に VPS を 30% 割引でご提供します: US CN2 VPS、日本 VPS...

テンセントクラウドサーバー:年末プレゼント、1499元/3年間、4Gメモリ/2コア/50gハードドライブ/6M帯域幅、香港/上海/北京/広州

Tencent Cloud(クラウドサーバー)は年末プロモーションを実施しており、香港のクラウドサー...

ハイブリッドクラウドとは何ですか?

今日の急速に変化するデジタル環境において、企業は IT インフラストラクチャを最適化する革新的な方法...

Amazon SageMaker が中国の AWS 寧夏および北京リージョンで利用可能になりました

[ 2020年5月12日北京] Amazon のクラウドサービスである Amazon Web Se...

#Labor Day# 修正済み - 30% 割引コード/Shark データセンター/無制限トラフィック/年間支払いは 15 ドルから KVM VPS

rectified は「労働者の日」に新しい割引コードをリリースしました。すべての仮想ホスト、VPS...

dedipath - 超格安E3専用サーバー+256IPクラスターサーバー/ロサンゼルスアジア最適化ライン

dedipathは、旧正月を機に、ロサンゼルスデータセンター、アジア最適化ライン、E3ヘンなど、さま...

おすすめ:sharktech - 11月特別価格超強力Dサーバー(無料勝利/無料パネル/複数IP)

Sharktech は 11 月に、100M 専用または無制限の G ポート、無料の Windows...