Javaコミュニティを盛り上げる：アリババがDragonwell OpenJDKをオープンソース化

アリババはOpenJDKのバージョンであるAlibaba Dragonwellをオープンソース化することで、Javaコミュニティを後押ししています。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/alibaba-makes-dragonwell-openjdk-open-source_594624)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

Yuying Zhaoより

InfoQの記者は、アリババがOpenJDKの長期サポート版である[Alibaba Dragonwell](https://github.com/alibaba/dragonwell8?spm=a2c65.11461447.0.0.f5367924I3Bnp2)をオープンソース化しようとしていると独占的に報じています。ご存知のように、オラクルのJavaに対する姿勢は相次いで変化しており、Javaユーザーが多いこともあり、この問題は開発者の間で長い間議論の焦点となることが予想されます。

世界最大級のJavaユーザーであるアリババは、Alibaba Dragonwellのオープンソース化を決定するにあたり、多くの検討を行った。これは以下の発表と重なります。

- オラクルは、個人ユーザー向けのJava 8の公式サポートは2020年12月までで、商用ユーザー向けは2019年1月以降の無償アップデートは提供されないと発表しています。
- Red Hatは、2023年までOpenJDK 8のサポートを提供し続けることを計画していました。
- AWSは、OpenJDKの長期サポート版「Amazon Corretto」を正式に発表しました。

さて、AlibabaはOpenJDKの長期サポート版であるAlibaba Dragonwellをオープンソース化することを発表しました。

Javaエコシステム内での分断化の傾向は、ますます顕著になってきています。開発者にとっては、すぐに代替されるリスクを冒すのではなく、継続的なセキュリティアップデートと充実した機能を備えたJDKを使いたいと考えています。

では、アリババはどのように開発者のニーズに対応しているのだろうか。Dragonwellをオープンソース化することで、Java 8に固執するユーザーに感動を与え、緊急のニーズを解決することができるのでしょうか。今後、アリババはこのプロジェクトとOpenJDKの関係をどのように扱うつもりなのでしょうか。何十億行ものJavaコードを持つ同社は、Javaの未来をどのように見ているのでしょうか？

上記の問題点を受けて、InfoQ記者は、Alibaba Cloud Intelligent Basic Products Divisionのシニア技術専門家であるLi Sanhong氏と、Alibaba Cloud Intelligent Basic Products Divisionの研究員であるKingsum Chow氏に独占インタビューを行い、Alibaba DragonwellとJavaのこれからをどのように見ているのかを聞いてきました。

#Alibaba Dragonwellとは

Javaエコシステムの開発者の中には、AWSのオープンソースOpenJDKの長期サポート版であるCorrettoというプロジェクトの名前の由来を聞いたことがある人も多いはずです。Correttoは、イタリア語でエスプレッソに少量のお酒を加えたものを指すCaffe Correttoから発展したものです。偶然にも、アリババのDragonwellの名前も人気飲料に関連しています。

インタビューに答えたKingsum Chow氏によると、

>「Dragonwell」の中国語訳は龍井で、中国茶文化の象徴であり、たまたま杭州（アリババ本社がある）の特徴でもある。通常、「井戸」という言葉は、誰もが楽しめるように水源を集めたものと表現されていますが、「龍井」は、そのような水源を集めたものではありません。開発者の皆さんの力を結集して、継続的な改善を行い、最終的には全てのユーザーに貢献していきたいと考えています。

#なぜ今、オープンソースにするのか？
大幅に言えば、Javaは長い間Oracleが独占してきました。2017年末以降、オラクルはJavaの戦略を徐々に変え、Oracle JDK内の商用機能を徐々にコミュニティにオープンソース化し、無償の商用バージョンアップデートやセキュリティアップデート、脆弱性修復サポートの提供を終了すると発表しました。

これは開発者にとってどのような意味があるのでしょうか。Oracle JDK 8のユーザーであれば、元のライセンスは今まで通り無料で利用できますが、後から継続的なセキュリティアップデートを受けるためには有料である必要があります。現在、オラクルが支配するJava環境は変化しています。Javaの最大のユーザーであるアリババは、世界最大級のJavaアプリケーションクラスタを持っているので、間違いなく何かをしなければなりません。

インタビューの中で李三宏氏は、Oracleによる一連の変化が重要なメッセージを届けたと述べました。

>無料でJavaを使い続けて継続的なアップデートを受けたい場合は、後からコミュニティ版に切り替える必要があるかもしれません。

これを踏まえて、アリババがOpenJDKの長期サポート版であるAlibaba Dragonwellをオープンソース化することにしたのには、2つの理由があります。1つ目は、Javaの顧客やビジネスニーズが多いことです。アリババは、今後もJDKのすべての機能を無償で利用できるようにしたいと考えています。2つ目は、多くの開発者が新たな選択をする可能性があることを考慮し、アリババは開発者に新たなリファレンスを提供するため、Dragonwellプロジェクトをオープンソース化することにしました。

#Dragonwellの主な特徴
Alibaba Dragonwellは無料のOpenJDKリリース版で、パフォーマンスの向上やセキュリティの修正など長期サポートを提供しており、実際にはOracleが課金している機能に対応しています。三宏李氏によると、Alibaba Dragonwellは現在x86-64/Linuxプラットフォームをサポートしており、主にデータセンターでの大規模なJavaアプリケーションの展開状況下でのJavaアプリケーションの安定性、効率性、パフォーマンスの最適化と向上を目指しているといいます。

今回のAlibaba Dragonwell 8のプレビュー版はOpenJDK 8に対応しており、Java SE Standardに対応しています。特に注目に値するのは、以下の3つの特徴です。

- 上流のJava 11のJFR（Java Flight Recorder）機能を移植します。ご存知の通り、JFR機能はOracle JDKの商用機能であり、利用するには有料になります。この機能はOpenJDK 11以降のオープンソースであるにもかかわらず、Java 8のユーザー数は非常に多いのです。そこでアリババは、この機能をAlibaba Dragonwell 8に移植し、開発者が利用できるようにすることにしました。Java開発者はJFRを利用することで、JVMの動作中に詳細なプロファイリング情報を収集し、Java Mission Control（JMC）と連携してJavaアプリケーションの問題診断や性能最適化の効率化を図ることができます。
- JWarmup技術を統合しています。ウォームアップ問題は、Javaアプリケーションでは常に最も困難な問題の1つとされてきた。アリババは以前から解決策を持っていましたが、外部のユーザーがこの解決策にたどり着くのは困難でした。現在、JWarmupはOpenJDKのJava Enhancement Proposal（JEP）として確立されており、将来的にはJava Standardのリリース版に加わることが期待されています。JWarmupにより、ユーザーは、データセンターのアプリケーション・トラフィック・スケジューリング・タイミングと組み合わせて、Javaコードを動的に事前にコンパイルすることができるようになるため、過度のCPULoadやレスポンス・タイムアウトなど、従来のジャスト・イン・タイム・ウォームアップによって引き起こされていた問題を効果的に軽減することができます。
- GC診断などのサービス機能の向上を実現します。

おそらく、一部の開発者は、Alibaba Dragonwellが現在、ほとんどのデータセンターで使用されているオペレーティング・システムでもあるLinuxプラットフォームのみをサポートしていることに気づいたのでしょう。開発者の誤解を防ぐために、ここではJavaのクロスプラットフォーム機能には影響しないことに特別な注意が必要です。クロスプラットフォーム機能とはJavaアプリケーションそのものを指し、JDK（JVMを含む）はソフトウェアに過ぎません。プラットフォームによってバージョンが異なります。対応するプラットフォームに対応するJDKをインストールすればいいだけです。開発者は、どのシステムでもJavaアプリケーションを開発し、対応するプラットフォームにデプロイしてバイトコードファイルを実行することができます。(プロジェクトがオープンソース化されると、アリババは中国語と英語の両方で詳細な使用方法のドキュメントを提供します)

#今後の展開
将来的には、アリババは四半期ごとにバージョンのイテレーションを行い、次のフェーズ、つまり3ヶ月後にGA版がリリースされることを期待しています。また、アリババJDK技術チームは、プロジェクトの保守と更新を継続し、OpenJDKコミュニティと緊密に連携してJava技術の開発を推進しています。

さらに、実際のユーザーのニーズやJava 8のユーザー数の多さを考慮し、アリババでは、前述のJava Flight Recorder機能と同様に、将来のバージョンのOpenJDKからAlibaba Dragonwellへの優れた機能の移植を継続し、開発者が本番環境で先行して利用できるようにすることも検討しているといいます。

#アリババとJava
アリババは2018年に2年間の任期でJCP実行委員会に招かれ、中国企業としても初めてJCPに参加した。JCPはオープンな国際組織であり、Javaの実行委員会です。Javaの開発者と認定された人たちで構成されています。その主な機能はJava技術仕様の開発と更新であり、アリババはJava標準仕様の策定に一定の権利を持ち、Javaエコシステムの主要なイベントの意思決定に参加することができます。

調査によると、アリババは世界最大級のJavaユーザーであり、Javaの開発者やサーバーの数が非常に多く、事業展開に対応しているといいます。アリババといえば、最も簡単に思いつくタグは「シングルスの日」--世界最大のショッピングカーニバルです。2018年、Tmall「Singles' Day」の総取引高は最終的に2時間足らずで1000億を突破し、2135億に達しました。支援システムの効率的な運用を支える最大のヒーローはJavaです。

業務要件のボリュームと複雑さが増す中、アリババは2004年にPHPからJavaへの完全な切り替えを決断し、本番環境での問題解決に向けて、より効率的な方法を緊急に必要としていた。このため、アリババはオープンソース技術に基づいた独自のソリューションを構築し、Java開発者が問題を迅速に発見して解決できるように指導することを余儀なくされました。

インターネット企業の運用は非常に速く、時には多くの製品バージョンを1週間以内に反復する必要があり、多くの問題が発生することがあります。これらの問題がすべて公式アップデートの解決を待つことに頼ってしまうと、フロントエンド全体に影響が出てしまい、ビジネスは待っている余裕がありません。これは、多くのインターネット企業が重要なサービスにオープンソース製品を採用することを選択する大きな理由でもあります。自律的かつ制御可能な方法で、ビジネス展開にマッチしたソリューションを迅速に構築するためです。

早ければ2010年、アリババはOpenJDK 6をベースにJVMの最適化をカスタマイズし始めました。 これは、中国で初めて最適化され、カスタマイズされ、オープンソースのサーバー版Java仮想マシンです。その後、アリババ社内のいくつかのチームが次々とJDKの研究開発に参加するようになりました（そう、実際には当初は複数のチームで行われていました）。その後、Alibabaは、JDKは重要なインフラとして、物流、金融、Eコマース、新規小売、カイナオなど、ほぼすべてのビジネスシナリオをカバーしていると考え、長い間、別々に研究開発を行うことは間違いなく不可能であると判断し、すべてのJDKチームを1つに統合しました。

2015年、統合されたAlibaba JVMチームはOpenJDK 8をベースに最適化とカスタマイズを開始し、有名なカスタマイズAJDK（Alibaba/AlipayJDK）を立ち上げ、タオバオ、Tmall、Ant、Cainiaoのほぼすべてのコアアプリケーションをホストし、「独身の日」のショッピング熱狂に何度も耐えました。

###では、現在のオープンソースのAlibaba Dragonwellは、Alibabaが内部で使用しているAJDKと同じものなのだろうか？

アリババの業務運用から判断すると、AJDKの機能や性能は確かに良いのですが、オープンソースのAlibaba DragonwellはAJDKとはやはり違います。三宏李氏によると、Alibaba DragonwellはAJDKのオープンソース版であり、AJDKの技術を継承したものだという。現在のところ、オープンソース版には、マルチテナンシー、Wisp coroutine、ZenGCなど、AJDKのすべての機能が含まれていません。これは、技術をオープンソース化するための準備に時間がかかることが主な理由です。

現在のプレビュー版である「Alibaba Dragonwell 8」についても、アリババは社内での議論を重ね、かなりの準備、テスト、コミュニケーションを経てきました。確認後、最終的にプレビュー版をオープンソース化するまでには、さらに半年を要し、その後、アリババはAJDKの機能を徐々にAlibaba Dragonwellに移すことを検討してきました。明らかに、この作業には時間がかかります。

###OpenJDKで何をすべきか？
Oracle JDKとは異なり、OpenJDKはGPL v2/a Classpath Exceptionに基づいたオープンソースプロジェクトです。Java 7以降、Java SEの公式リファレンス実装となっている。インタビューに答えてくれたOpenJDKコミッターによると、OpenJDKでは当たり前のことが行われているそうです。何年も無料サポートを続けてきたOracle JDKのライフサイクルが終わりに近づいているため、コミュニティが引き継ぎ、その後のアップデートを処理しています。それ以前にも、Oracleはコミュニティのメンテナンス段階に入るまでの5年間、JDK 8の無償サポートを提供していました。

現在では、Google、Twitter、Amazon、Alibabaなど、多くの主要な海外ベンダーがOpenJDKを使用しており、それをベースにJDKのバージョンを開発しています。これはエコシステムの開発者を悩ませています。多くのユーザーがOpenJDKの利用を検討し始めたとき、これらの大手ベンダーはまだコミュニティ全体のメンテナンスに参加したいと思っているのでしょうか。

アリババの立場から、三紅李氏はインタビューの中で、ある視点を繰り返し強調しています。

>Alibaba DragonwellはOpenJDKの下流にある必要があります。Alibaba Dragonwellの各リリースは、最新の上流アップデートを同期させ、Alibaba内で大規模なアプリケーションクラスタテストを実施します。同時に、アリババはAJDK上の技術的な蓄積をOpenJDKに積極的に貢献し、コミュニティプロジェクトのアップデートやメンテナンスにも積極的に参加しています。

AWSの視点もかなり似ています。AWSのチーフオープンソース技術専門家であるArun Gupta氏は、かつてAWSのオープンソースブログで次のように発表しています。

>OpenJDKコミュニティと緊密に協力して、OpenJDK 8および11の将来の拡張機能を開発していくことを楽しみにしています。

このような状況下で、大手ベンダーが発売しているJDKソフトは、わかりやすいOpenJDKとは微妙に異なるものに縛られているのではないかと私は考えています。実際にお客様の生産環境で遭遇した問題がOpenJDKの改善に適さない場合もありますし、同じ問題に直面した場合、大手ベンダーの考えとOpenJDKの解決策が一致しない場合もあり、様々な関係者の友好的な交渉が必要となり、徐々に有益な仕組みが形成されていくのではないでしょうか。今は、OpenJDKを普及させるための第一歩に過ぎません。

#Javaの宿命
選択肢が増えたことで、エコシステムはさらに「細分化」されているようです。Java 8に固執する開発者は、将来的にOpenJDKに移行する意思があるのでしょうか？

###Java 8に固執するユーザー
Java 8やOracle JDK 8には多くの問題点があるため、なぜ開発者は大規模に新バージョンに移行しないのでしょうか？なぜAlibaba Dragonwellは当初、OpenJDK 8をベースにしているのでしょうか？この質問に対する答えは簡単です。

###Java 8は現在最も広く使われているバージョンであり、今も根強く人気を博している!
Javaのエコシステムでは、非常に興味深い現象が見られます。新しいバージョンのアップデートがどんなに魅力的であっても、ほとんどのJava開発者は興味を示さず、自分たちの選択に固執しています。実際、Java 8はリリースが成功しているので、多くの開発者は他のバージョンをアップデートする必要がないと考えています。

この点について、Sanhong Li氏は、長年のJava開発の中で、ほとんどの開発者は公式のOracle JDKを信頼することに慣れてしまい、OpenJDKに十分な注意を払っていないと考えています。そのため、Oracle JDKからOpenJDKへの切り替えにはプロセスが必要です。しかし、これらの国際的なテクノロジー大手ベンダーの努力により、OpenJDKのエコシステムは改善され、機能はより完成度の高いものになるでしょう。継続的なセキュリティアップデートと、多くの大規模ベンダーの綿密な参加に直面して、このプロジェクトはJavaエコシステムにおける重要な公的リソースとなるはずです。

###分断化が進むエコシステム
Javaエコシステムはかなり前から断片化の傾向を示し始めており、Oracleがサービスへの課金を開始して以来、その傾向は強まっているようです。以前は、断片化に関する潜在的な懸念を減らすために、AdoptOpenJDKはすべてのOpenJDKプロバイダーに対して、OpenJDKにパッチを提出することを強く推奨していました。

この点について、Kingsum Chow氏は、開発者の選択肢が増えたことは必ずしも悪いことではないと考えています。さらに、異なるバージョン同士は実際には非常に互換性が高く、移行コストもほぼゼロに近いため、ユーザーに余計な負担を強いることはないだろう。バージョンによって、パフォーマンスの最適化やプラットフォームのサポートに違いがあります。開発者は自分のニーズに合わせて選ぶことができる。しかし、アリババはこれらの技術を上流、つまりOpenJDKのエコシステム全体に押し上げようとしている。この問題は将来的に緩和されるはずです。

アリババは、2019年3月21日からAlibaba Dragonwellをオープンソース化すると発表しています。それを皮切りに、開発者は[Alibaba CloudのGitHubコミュニティ](https://github.com/alibaba/dragonwell8?spm=a2c65.11461447.0.0.f5367924wqzQPs)からダウンロードして利用できるようになります。

この記事は、[InfoQChina](https://www.infoq.cn/article/SK7fJE1ZT0ykjc0_gecs?spm=a2c65.11461447.0.0.f5367924H40YFV)の同トピック記事を転載・翻訳したものです。

*アリババクラウドは日本に２つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
[アリババクラウドジャパン公式ページ](https://www.alibabacloud.com/ja)*