この記事は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 つの側面で速度低下が発生します。
QCon から、Java コンパイル技術の進化を示す写真をキャプチャしました。 最初の 2 つのステージは、誰もがよく知っているステージです。コードの実行は、翻訳、c1 コンパイル、c2 コンパイルを通じて実行されます。 3 番目の部分では、静的コンパイルである AOT テクノロジについて説明します。 C++ と同様に、コードを実行する前にコードをマシン コードにコンパイルできます。ただし、JAVA には多くの動的機能があるため、通常は jaotc を使用して JDK に付属するパッケージを静的にコンパイルし、他のパッケージでは引き続き変換と jit 実行を使用します。 4 番目のステージは、Graal ベースの AOT フレームワークである SubstrateVM (以下、SVM) です。動的な機能を静的にコンパイルできます。考えてみてください。Java で最も動的なものはリフレクションです。たとえば、クラスのメソッドを実行する場合は、次のように記述します。
私たちのメソッドは実際には文字列であり、動的変数であることがわかります。このような動的なものを静的にコンパイルするにはどうすればよいでしょうか?アリババは内部的にそれを観察します。たとえば、プログラムを数週間実行してすべての呼び出しシナリオを取得し、それらをまとめてコンパイルします。その時、観察がない場合はどうすればいいのかという質問もありました。この場合、確かにエラーが報告されるので、この部分の使用は確かに問題です。 静的コンパイル後、パフォーマンスは向上しましたか? 上記のパフォーマンス データから判断すると、パフォーマンスは Go に匹敵し、メモリ使用量は Go の半分しかありません。 Go の代わりに Graal が使用されていると皆が言うのも不思議ではありません。 同時に、Graal コンパイラは C2 コンパイラを置き換えることもできます。 Graal は、Twitter と Facebook の内部運用環境で C2 を置き換えるために使用されてきました。 したがって、弾力的なスケーリングと高速起動を必要とするプログラムの場合は、仮想マシンとして GraalVM の使用を検討できます。 多言語通話前述のように、GraalVM は多くの言語をサポートしています。サーバー開発には Java を使用し、データ分析には Python または R を使用する必要があると想像してください。以前は、これを行うには Rpc を呼び出す必要があったかもしれません。これで、同じプロジェクトまたは同じファイルにそれらを配置し、GraalVM の機能を使用してこれを実行できるようになりました。 要約するGraalVM は確かに比較的新しいテクノロジーであり、その全体的な野心は明らかに非常に大きいです。結局のところ、汎用の仮想マシンになりたいのです。成功すれば、Java で開発されるため、Java プログラマーにとって有利になります。興味があれば、情報を検索して詳細を知ることができます。 |
>>: クラウドコンピューティングのハイパースケール開発において適切なパートナーを選択する方法
最近、中国ビジネスネットワークデータセンター(CBNData)とTmall Overseasは共同で...
李佳奇の「美独り占め」99日目、アクセス数と取引量が爆発的に増加した。 27日、天猫3.8ガールズデ...
bigpowerhosting は比較的新しい企業で、主な事業は VPS と仮想ホスティングです。ロ...
過去数年間、クラウド コンピューティングについては多くの議論が行われてきました。短命な技術として始ま...
4 大ポータルがほぼ独占状態にある中、業界別の垂直ポータルが雨後の筍のように次々と誕生しています。各...
海外のIDCが中国市場に参入して以来、大多数のユーザーから熱烈な歓迎を受けています。国内IDC製品の...
幸運なことに、Baidu Webmaster Platform の内部ベータテストの資格を得ることが...
法制晩報(記者:李松平英英一多)オンラインショッピングをした後、第三者のプロモーション情報が届き、ホ...
世の中が「独身男性」で溢れかえっている現状を受けて、さまざまな出会い系アプリが登場し始めている。 L...
百度は自社製品に愛着を持ちすぎていて、特別扱いをしているとよく思われるが、この発言には実は強い嫉妬の...
PayPalのセキュリティ欠陥によりハッカーが口座資金を倍増させることが可能にフェニックステクノロジ...
Windchill は、グラフィックおよびドキュメント管理、製品構造管理、ライフサイクル管理、ワーク...
死亡者数と感染者数は依然として増加しています。この突然の新型コロナウイルス感染症の流行により、常に重...
Pacificrack は 9 月に最新の格安 VPS プロモーションをお届けします。合計 5 つの...
世界的なパンデミックにより、柔軟性は企業にとって非常に重要になり、事業運営においてはこれまで以上に重...