MicrosoftがjClarityを買収してから3年後、Martjin Verburg氏はDevoxx UKで、MicrosoftがJavaにどれほど依存しているかについて発表した。この2つが同じ場所にいるように思えないが、現実は異なる。Microsoftは、社内利用、50以上のAndroidアプリ、Azureの内部システムのために200万のJVMを本番環境で実行している。そして、MinecraftはJavaで構築されている。さらに、MicrosoftはJavaを発展させることに取り組んでいる。
1990年代後半の実験と2000年代初頭の試行は、Satya Nadella氏が2018年に会社の新しい方向性を公に約束するときまで、長い間忘れられていた。
私たちは皆オープンソースの上に成り立っています
MicrosoftのJavaエンジニアリンググループは2019年に開始され、jClarityの元従業員、Microsoftのランタイムグループのベテラン、そして、IBM、ARMのJVMエキスパートが一堂に集まった。彼らの最初の取り組みでは、主にLinkedInのマイクロサービス、Azureのサービス、Minecraftに対する移行とチューニングに重点が置かれていた。その目的は、起動時間、スループット、遅延の改善、メモリフットプリントの削減である。
同じ年の秋、MicrosoftはOracle Contributor AgreementとOpenJDK Community Technology License Agreementに署名した。そして、OpenJDKコミュニティとのチームの統合を開始した。2021年に、Java Community Processに参加するためにJava Specification Participation Agreementが署名された。それによってJavaに関連するすべての特許が譲渡された。OpenJDKからのパッチのうち、より影響力のあるものは次のとおりである。
8241142: Shenandoah: 単一のGCスレッドで並列参照処理を使うべきでない: 複数のハードウェアスレッドが使える場合にのみ参照を並列処理されるべきである。そうでないと、1つのスレッドで競合することになり、処理速度が低下する。
8236179: T_ADDRESSでのC1レジスタ割り当てエラー: 負荷参照バリアのためのC1生成コードは、64ビットホストで負荷アドレスパラメータを32ビット値として扱っていた。
Martijn Verburg: 本当にコンパイラレベルのこともあります…
MD5ハッシュ: 本質的な機能強化: OSSコミュニティの支援を受けて実装された新しいバージョンは、15%~20%高速である。
Adoptiumの一部として、Microsoft JEGはWindows ARMポートに貢献した。これは、macOSポートの基礎が築かれた取り組みである。
現時点でAzureがJavaアプリケーションの多くのデプロイメントモデル(モノリス、マイクロサービス、サーバーレス、あるいは先に挙げたもののさまざまな組み合わせ)をサポートしていることを考慮すると、起動時間を改善するというグループの動機を簡単に理解できるでしょう。それによって、アプリケーションを水平方向に簡単にスケーリングできるようになる。さらに、他にも興味を持っている領域として、エスケープ分析の改善がある。この改善は、割り当てを排除することによってGCの圧力を軽減し、キャッシュ/ページのミスを減らすことができるするものである。
Microsoftは、最も象徴的なオープンソースプロジェクトの1つを、前世紀の最も困難な病気と比較していたが、それからわずか20年でオープンソースを採用する方向へと移行した。さらに驚くべきことは、同社がオープンソースソフトウェアをサポートする計画を公表してからわずか4年で変革を遂げたことである。かつてJavaへの猛烈な反対者であったレドモンドの巨人は、現在、Adoptium(現在までに3億8000万ダウンロード)の創設メンバーの1人である。Adoptiumでは、検証済みのJavaビルドが提供されており、その利用が推奨されている。さらに、同社は複数のプロジェクトをオープンソース化し、軽量のIDE VS Code(約1200万ダウンロード)用のJava用のコーディングパックを構築した。意外に思われるかもしれないが、このショーは彼らのために始まったばかりである。OpenJDKに関して彼らが将来取り組もうとしていることは、パフォーマンスの向上、jClarity ToolingとApplication Insightsの統合、Javaバージョン間(Java 8 => Java 11 => Java 17)の移行ツールの構築である。