次世代 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 プログラマーにとって有利になります。興味があれば、情報を検索して詳細を知ることができます。

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

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

推薦する

データベース |分散トランザクションの実装原理の詳細な説明

トランザクションは、データベース システムにおいて非常に興味深く重要な概念です。これは、データベース...

テンセントセキュリティは、デジタル時代のより良い生活を守るために共同セキュリティ構築を呼びかけています

11月3日、「デジタルとリアルの融合が新たなチャンスをもたらす」をテーマにした2021年テンセントデ...

App Store 中国がアルゴリズムを調整?一部のアプリではフルネームによる検索が機能しません

文/Sohu IT 何鋒本日、Apple App Storeの中国地域で「奇妙な現象」が発生しました...

私の発見: 2013 年の Baidu アップデート後の新しいサイトの問題

長い間インターネットを利用してきたウェブマスターであれば、2012年から2013年にかけて、初期のK...

ソフトデコレーションデザイン会社向けウェブサイト分析・最適化事例

自己紹介させてください。私の名前はボボです。SEO 業界で働き始めたばかりです。現在は、ウェブサイト...

トラフィックこそが王様という考えはSEOの毒

中国では、SEO は比較的神秘的な職業です。外部の人にとっては、非常に技術的で、親に説明するのが難し...

価値を理解し、潜在能力を引き出す: Lenovo が超高性能の SAP HANA オールインワンの新世代を発表

企業は、インテリジェントなデータ管理の将来のニーズにどのように対応すべきでしょうか?最近、Lenov...

Kubernetes ジョブを使用して 1 回限りのタスクを実行する方法

ジョブコンセプトKubernetes では、Deployment と DaemonSet が引き続き...

海外で利用率の高いSEOツール07選

2007年に海外で最も利用率の高いSEOツール1 SEO分析ツールのトップ10を挙げる2 バックリン...

ウェブサイト運営者はユーザーのニーズを理解するためにデータを分析する必要がある

2013年のインターネットは熾烈な競争の時代を迎えています。大手インターネット企業間の競争であれ、ラ...

マイクロソフト、マインクラフトの25億ドル買収完了を発表

北京時間11月9日朝のニュースで、マイクロソフトのXbox事業責任者フィル・スペンサー氏は土曜日、マ...

「構造化されたブログコミュニティ」---モバイルインターネットで遊ぶ新しい方法

「モバイル垂直コミュニティ」は、2013年のホットワードの1つと言えます。美容、母子ケア、ペット、軽...

魔法のSEOの背後には、戻れない深淵が潜んでいるかもしれない

記事にあらゆる種類のキーワードを追加することに慣れたのはいつからかわかりません。まるで強迫性障害があ...

テンセントが2021年度の年次財務報告書を発表、自社開発技術で複数のブレークスルーを達成

テンセントは3月23日、2021年第4四半期および通年の財務報告書を発表した。そのうち、「金融テクノ...