絞り込み検索
キーワードで探す
カテゴリで探す
サービスで探す
業種で探す
トレンドで探す
キーワードで探す
カテゴリで探す
サービスで探す
業種で探す
トレンドで探す
2020.10.15技術ブログ

オープンソースとしてのJava
~OpenJDK開発の現場から~

2020年はJavaが登場してから25周年にあたる。オープンソース化という大きな変革を経た今、Javaは様々なメンバによって進化を続けている。本稿ではOpenJDK開発コミュニティから見えるJavaの今とこれからを紹介する。

~「NTT DATA Technology Week 2020」連動企画~

※本記事は、「NTTデータ テクノロジーカンファレンス 2020」の講演内容に関連する記事です。
講演聴講については本記事の最下部をご覧ください。

1.Javaのオープンソース化

ご存じの方も多いかと思いますが、JavaはSun Microsystemsで開発された言語とその実行環境です。それが2006年にOpenJDKとしてオープンソース化され、現在ではSun Microsystemsを買収したOracleを中心に開発コミュニティが運営されています。
このオープンソース化がJavaにとっては大きなターニングポイントになりました。Red Hatのようなオープンソースを扱う企業からIntelのようなハードウェアベンダ、さらには私たちNTTデータのようにJavaを利用する側といった様々なバックグラウンドをもつ企業や個人がバグ修正や機能改善のためにOpenJDKの開発に参画しはじめました。さらに、OpenJDKのソースコードをコンパイルし、サポートとセットで提供する企業も登場しました。Oracleの他、AmazonやAzul Systemsなどが有名ですが、クラウドサービスやミドルウェアなどと一括のサービスとすることで付加価値を提供しているところもあります。OpenJDKの登場はJavaに多様性をもたらし、利用する側はシステムの性格やライフサイクルと照らし合わせて様々な選択肢をとることが可能になりました。

図1:GitHub上のOpenJDK開発者数(2020/09現在274名:非公開ユーザー含む)

図1:GitHub上のOpenJDK開発者数(2020/09現在274名:非公開ユーザー含む)

2.コミュニティによる進化

OpenJDKの登場により、開発コミュニティ発の機能提案が積極的に行われるようになりました。
例えばコンテナ対応です。最近ではアプリケーションをコンテナ化して運用するケースをよく目にするようになりました。Javaを駆動するエンジンとなるJava仮想マシン(JVM)は、自身が動作するハードウェアやOSの状況を見ながら割り当てるリソースを動的に決定する仕組みを持っていますが、これがコンテナ環境には対応しきれていませんでした。コンテナ環境でもJVMが最適に動作できるよう、OracleやRed Hatをはじめ、様々なところから改善が施されました。筆者もOpenJDKに付属するトラブルシュート・モニタリングツールのコンテナ対応などでパッチをいくつか提供しています。
JDK Flight Recorder(JFR)のOpenJDK 8へのバックポートもオープンソースコミュニティならではのものでした。JFRは低オーバーヘッドで様々なメトリクスを取得するもので、元々はOracle JDKの商用機能でした。これがJava 11からOpenJDKにも導入されたのですが、JVMのつくりと密接だったため容易に他バージョンへバックポートできるものではありませんでした。しかしRed HatやAzul Systemsをはじめ様々なメンバの努力により、2020年10月リリースのOpenJDK 8 Update 272からデフォルトでJFRが使えるようになりました。(※1)

3.新たな環境への対応

コンピューティング環境も日々進化を続けていますが、Javaはコミュニティベースでその対応を続けています。
大容量、かつ高速なストレージとして不揮発性メモリが登場し、ビッグデータ処理やデータベースの領域でその活用が模索されています。JavaにおいてはJVM側ではJavaヒープの配置先としての活用が(※2)、Java APIでも不揮発性メモリ上に配置されたファイルの効率的なアクセスが(※3)実現しました。
最近では64bit Armプロセッサ(AArch64)を搭載したWindows PCも登場していますが、ここでJavaを動作させるためのバックポート作業がJava 16に向けて行われています。(※4)

イベントのお知らせ
NTTデータ主催 オンラインイベント

コロナ禍の状況で世の中が大きく変化する中、いち早く新たな未来を創っていくために、先進的な知見と確かな技術力の重要性がより高まっています。
本イベントでは、AIをエンタープライズで活用するための取り組みや、組織改革とクラウド活用の事例、COVID-19に立ち向かうNTTデータの最先端技術、OSSを中心とした最新技術動向など、NTTデータならではの先鋭的な技術トピックを、一緒に取り組んだお客様と共にNTTデータの高度な技術者がご紹介いたします。

本記事に関する講演情報

※講演開始時間は変更になる可能性がございます。
2020年10月16日 15:23 ~
「OpenJDK開発者直送!Java最前線」
NTTデータ 技術開発本部 テクニカルリード 末永 恭正 / 阪田 浩一

2020年10月16日 15:43 ~
「JITWatchで確認する JITコンパイラの挙動」
NTTデータ 技術開発本部 阪田 浩一

2020年10月16日 15:48 ~
「GraalVMでJNIレスなネイティブ呼び出しをしよう!」
NTTデータ 技術開発本部 テクニカルリード 末永 恭正

イベント詳細、お申込みはこちら
https://oss.nttdata.com/techconf2020/

NTT DATA Technology Week 2020

NTTデータ テクノロジーカンファレンス 2020と並行して、2020/10/12(月)~23(金)に「NTT DATA Technology Week 2020」を開催します。
日経BP社主催「日経xTECH EXPO 2020」と当社主催「NTTデータ テクノロジ―カンファレンス 2020」の2つのオンラインイベントを中心に、よりよい社会の創造に向けてNTTデータが注目する技術情報を多数発信していきます。
また、このDATA INSIGHTでも、「#TechnologyWeek2020」とタグをつけ、関連する記事の紹介や新規記事の発信を行っていきます。
With/Afterコロナで新しい社会の姿が求められる中、今後の社会変化をリードするデジタルテクノロジーについて皆様と一緒に考える2週間にできればと思います。
ぜひご参加ください。

イベント詳細はこちら
https://www.nttdata.com/jp/ja/event/2020/technologyweek/

お問い合わせ
- NTTデータは、「これから」を描き、その実現に向け進み続けます -