Javaはなぜプログラミング言語のトップシェアに返り咲いたか
――伊藤さんは、この数年でJavaへの注目が特に高まっていると感じていらっしゃるとのことですが、これにはどういった背景があるのでしょうか。
Javaは、日本だけでなく世界的にも注目されています。特に、2014年にJava SE 8がリリースされた後、関心度がさらに増しています。
例えば米国のTIOBE社は、検索エンジンでの検索回数をもとにプログラミング言語のシェアを示す指標を、毎月「TIOBE Programming Community Index」として公開しています。これを見るとJavaは2014年以降急激にシェアを伸ばし、現在も1位を継続中です。
2004年にJava SE 5がリリースされたときもJavaの数値が上昇しましたが、その後は徐々に落ちてしまいました。これは、バージョンアップの間隔の拡大などが影響したものと思われます。
Java SE 7以降は、コンスタントにバージョンアップが行われるようにリリースが厳密にコントロールされているため、以前のようにシェアが減少することはなく、Javaの活用が今以上に進んでいくだろうと考えています。
言語として大きな進化を遂げたJava SE 8
――現行バージョンである「Java SE 8」にはどのような特徴がありますか。
Java SE 8は、言語として大きく進化しています。関数型インターフェイスの実装・インスタンス化を簡易に記述するためのラムダ式、効率的な並列処理を可能にするStream APIなど多くの機能が追加されました。
特に注目したいのは新しいDate and Time APIです。これまで日付・時刻についてはOSの機能を直接利用する形でしたが、Java SE 8では日本語表記やうるう年といった高水準の操作ができるようになりました。より書きやすく、人間の思考に合わせたプログラミングが可能になっており、Javaの利用価値を高めています。
――Java SE 8によってJavaのシステム開発はどのように変わるのでしょうか。
Java SE 8の新機能は今まさに活用が拡大している最中と言ってよいと思います。完全に普及したと言えるのはもう少し先になるでしょう。現在、今なおJava SE 1.4/5など古いバージョンで開発されたシステムが数多く稼働しています。まずは旧バージョンのシステムの更改にJava SE 8を使ってもらいながら、新機能を理解し、新しい分野への活用を模索するというのが現実的な形かなと思います。
Java SE 9では待望のProject Jigsawをはじめ、HTTP 2.0対応、シェルなどを導入予定
――次期バージョン、「Java SE 9」ではどのような機能が追加されるのでしょうか。
Java SE 9のリリース予定日ですが、2017年3月23日とされています。
一番の目玉は、モジュール化を可能にする「Project Jigsaw」です。Javaはバージョンアップを重ねるたびにさまざまな機能が追加され、ライブラリが巨大化する傾向にあります。Project Jigsawが実装されれば、Javaのライブラリ全体が整理されるとともに、実行時に必要なライブラリのみを選択的に利用することが可能となり、より少ないメモリ容量でプログラムを実行・運用できます。たとえば、IoTシステムのエッジデバイス上でユーザインターフェイスを持たないプログラムを実行する場合に、表示関連機能のライブラリをロードさせないといったことが可能です。また、プログラム上でも必要なものだけをimportする書き方ができます。
その他にも、HTTP 2.0への対応、シェル機能、標準のガベージコレクションをG1GCにするといった機能追加が行われる予定です。
――小型デバイス向けのJavaである「Java ME 9」も同時期にリリースされるようですね。
はい、Java ME 9も2017年にリリースを予定しています。Java MEは、Java ME 7まではJava SEの進化と乖離があり、Java MEを利用するにはJava SEとは別に学習を必要とする、という状況がありました。Java ME 8でだいぶJava SE 8に追いつき、さらにJava ME 9でJava SE 9とほぼ同等の機能が提供される予定です。これが実現すると、Java SEでの開発経験があれば、同じ知識・スキルで組込み系の開発にも携わることができます。Project Jigsawにより利用可能なデバイスの範囲がさらに広がり、今後IoTでの利用場面が爆発的に増えていくでしょう。
1日でJavaの現在がわかる!「Java Day Tokyo 2016」5/24開催
Java SE 9、Java EE 8をはじめ、Javaに関する最新動向を概観する基調講演のほか、次期バージョンの重要機能、Javaテクノロジーの活用例、最新事例を紹介します。