この記事は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 プログラマーにとって有利になります。興味があれば、情報を検索して詳細を知ることができます。 |
>>: クラウドコンピューティングのハイパースケール開発において適切なパートナーを選択する方法
百度検索エンジンは、インターネットの情報内容を是正するために、「百度オリジナルスパーク計画」を大規模...
フォーラムのほとんどの人が、Baidu の 6.28K サイトのブラック ストームを経験したと思いま...
2024 年には、企業は時間とコストを節約するためにクラウド移行の機会の先を見据えるようになります。...
Hostgator は、最新の cPanel 仮想ホストの特別プロモーションを開始しました。40% ...
以前の記事でも述べたように、Naihe は、ウェブサイト上のキーワードランキング コラム ページ (...
過去1年間、人事異動、製品リコール、収益減少を経験してペロトンが倒産した後、このスマートフィットネス...
Stronghubは頭を悩ませる会社です。投稿するかどうかずっと考えていましたが、公式サイトからは何...
記者の唐剛中国で高級品の需要が急増する中、高級品を専門に扱う国内の電子商取引企業には喜ぶ理由がほとん...
locvps は年初に VPS を 30% 割引でご提供します: US CN2 VPS、日本 VPS...
Tencent Cloud(クラウドサーバー)は年末プロモーションを実施しており、香港のクラウドサー...
今日の急速に変化するデジタル環境において、企業は IT インフラストラクチャを最適化する革新的な方法...
[ 2020年5月12日北京] Amazon のクラウドサービスである Amazon Web Se...
rectified は「労働者の日」に新しい割引コードをリリースしました。すべての仮想ホスト、VPS...
dedipathは、旧正月を機に、ロサンゼルスデータセンター、アジア最適化ライン、E3ヘンなど、さま...
Sharktech は 11 月に、100M 専用または無制限の G ポート、無料の Windows...