1.Java 15と本番環境への適用
各メジャーバージョンで導入する機能を決定し、それがすべて揃ってからリリースしていた従来のJavaは、技術的難易度の高い変更があるとリリースが遅れがちになっていました。それに引きずられて、実装が完了した便利な新機能がプログラマの手に届くまで時間を要することがありました。この問題を解決し、継続的なJavaの進化を実現するため、2017年9月にリリースされたJava 9以降は半年ごとにメジャーバージョンがリリースされるようになりました。それらのライフサイクルは基本的に半年間ですが、その中から3年に1度は長期サポート(LTS)版に設定されるのがJavaサポートの基本的な考え方になりました。
Java 15自体はLTSではありませんが、2021年9月に次期LTSとしてリリース予定のJava 17に向けて多くの機能を変更しました。最近のJavaの大きな機能変更はJEP(JDK Enhancement Proposal)と呼ばれる、Javaのオープンソース実装であるOpenJDKの主要開発者(コミッタ)を中心とした議論で導入が決定されます。2020年9月現在のLTSであるJava 11から数えると延べ43件ものJEPが盛り込まれており、それらはすべて次期LTSのJava 17にも含まれます。近い将来にJavaでの開発を円滑に進めるためにも、Java 15で加わった14件の機能変更を把握しておくことは重要です。
図1:Javaメジャーバージョンごとの導入済みJEP数
2.“正統進化”を遂げたJava
Java 15で導入された14件のJEPから、代表的なものをいくつかご紹介します。
まずは他言語ではヒアドキュメントでおなじみのText Blocks(※1)と呼ばれる機能です。これは改行や空白などの文字を「書いたまま」文字列として認識されるものです。ヘルプ文などの文章をより直感的に表現できることから、コードのメンテナンス性向上に寄与します。この機能はJava 13から試験的に導入されており、開発コミュニティへ寄せられるユーザーフィードバックも取り入れられました。Javaがオープンソースとして継続的に改善されている好例と言えるでしょう。
Javaプログラムを駆動するエンジンとなるJava仮想マシン(JVM)も進化しています。アプリケーションの動作に大きな影響を与えるガベージコレクタ(GC:不要メモリの回収機構)に、新たにZGCとShenandoah(シェナンドーと読みます)の2つが正式機能として加わりました。これらもJava 14以前から試験的機能として組み込まれ熟成を重ねてきたものです。どちらのGCも広大なJavaヒープメモリ空間に対して低レイテンシでの動作を目標に開発されてきたもので、ビッグデータ処理基盤など、より多くのJavaヒープメモリを要するミドルウェアでの活用が期待できます。
3.NTTデータの取り組み
2020年9月現在、NTTデータにはOpenJDK開発コミュニティで開発権限を有する社員が2名在籍しています。うち1名はJava技術ならびにコミュニティのリーダーに与えられるJavaチャンピオンにも選出されています。これらのメンバによってNTTデータは2019年からOpenJDKの開発に関与し始め、数多くの修正提案を行っています。Javaを用いた開発や運用、保守を行う立場から発見した問題や改善点などを中心に、Java 15においては計20件のバグ報告・パッチ投稿を行い、世界で7番目の貢献数となりました。
図2:組織別Java 15貢献数(出典:Java Platform Group, Product Management Blog(※2))
NTTデータはOpenJDK開発やコミュニティイベントへの参画などを通じて、引き続きJavaの進化へ貢献してまいります。
イベントのお知らせ
コロナ禍の状況で世の中が大きく変化する中、いち早く新たな未来を創っていくために、先進的な知見と確かな技術力の重要性がより高まっています。
本イベントでは、AIをエンタープライズで活用するための取り組みや、組織改革とクラウド活用の事例、COVID-19に立ち向かうNTTデータの最先端技術、OSSを中心とした最新技術動向など、NTTデータならではの先鋭的な技術トピックを、一緒に取り組んだお客様と共にNTTデータの高度な技術者がご紹介いたします。
本稿でご紹介しているOpenJDKの最新情報に関する講演も予定しております。皆様のご参加をお待ちしております。
イベント詳細、お申込みはこちら
https://oss.nttdata.com/techconf2020/(お申込みページへ)