この記事は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 プログラマーにとって有利になります。興味があれば、情報を検索して詳細を知ることができます。 |
>>: クラウドコンピューティングのハイパースケール開発において適切なパートナーを選択する方法
今日、クラウド コンピューティングは、ほぼすべての企業にとって基本的な IT インフラストラクチャ戦...
6月29日に「#48Hours:WLS-$19/年払い/メモリ1g/SSD30g/トラフィック2T/...
Google はすでに最も多くのページをクロールする検索エンジンですが、発見やクロールが難しい We...
インターネットの急速な発展に伴い、Weiboは人々の新たなお気に入りのオンラインソーシャルネットワー...
北京時間2月24日朝のニュースによると、Wikipediaは発展途上市場のユーザーにWikipedi...
先号(5月13日C5-7)では、Nandu Wealth Creation Magazineが「Di...
IDC Review Network (idcps.com) は 4 月 10 日に次のように報告し...
ロシアのホスティング会社、Hosting Telesystems (HTS) をご紹介します。同社は...
8月24日、2018年雲啓会議重慶サミットにおいて、アリババクラウドIoTは工業情報化部中国情報通信...
企業が成長するにつれて、ビジネスとアプリケーションは増加し続け、IT システムの規模はますます大きく...
バランスポイントを見つけるのは非常に難しく、起業家はユーザーの根本的なニーズを把握する必要があります...
検索エンジンは通常、次のような考え方に基づいて重複した Web ページを判断します。各 Web ペー...
SEOは関連性が重要検索エンジンでキーワードを検索すると、通常、多数のページが返されます。これらのペ...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますウェブサイ...
まず、これが discuz フォーラムの forum.php テールを削除する最も完全な方法であるこ...