![日本オラクル株式会社 Fusion Middleware事業統括本部 ビジネス推進本部 担当シニアマネージャー 伊藤敬氏](http://cz-cdn.shoeisha.jp/static/images/article/9424/9424_p1.jpg)
Javaはなぜプログラミング言語のトップシェアに返り咲いたか
――伊藤さんは、この数年でJavaへの注目が特に高まっていると感じていらっしゃるとのことですが、これにはどういった背景があるのでしょうか。
Javaは、日本だけでなく世界的にも注目されています。特に、2014年にJava SE 8がリリースされた後、関心度がさらに増しています。
例えば米国のTIOBE社は、検索エンジンでの検索回数をもとにプログラミング言語のシェアを示す指標を、毎月「TIOBE Programming Community Index」として公開しています。これを見るとJavaは2014年以降急激にシェアを伸ばし、現在も1位を継続中です。
![TIOBE Programming Community Index(2016年5月現在)](http://cz-cdn.shoeisha.jp/static/images/article/9424/9424_001_s.gif)
TIOBE Programming Community Index(2016年5月現在)
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テクノロジーの活用例、最新事例を紹介します。
フレームワークからJava EE標準への回帰
――エンタープライズ向けJavaである「Java EE」の現在の状況について教えてください。
Java EEは、2009年12月にバージョン6、2013年5月にバージョン7がリリースされました。現状ではJava EE 6準拠のアプリケーションサーバが最も多く使われていますが、Java EE 7に準拠した製品も出始めており、今後は徐々にJava EE 7に切り替わっていくと思われます。
――なぜ、「Java EE 6」ベースでのシステム開発が広く行われるようになったのですか。
Java EEは以前、多機能だけど重厚長大で、プロトタイプなどを簡易的にすばやく開発したい場合には選択されない傾向があると言われていました。当時盛んに利用されていたのがStrutsやSpringのようなフレームワークです。Java EE 6では、アプリケーションサーバだけでWebアプリでもミッションクリティカルなシステムでも開発できるように、開発者がフレームワークで補完していた機能を標準に取り入れました。たとえば、Strutsの画面機能はJSF(JavaServer Faces)、SpringのDI(Dependency Injection)の仕組みはCDI(Contexts and Dependency Injection)またはEJB(Enterprise JavaBeans)、Hibernateのデータベース連携機能はJPA(Java Persistence API)で対応できるように仕様が追加されたのです。
また、Java EE 6では、ソースコードや設定ファイルの量が大幅に削減されています。それまでは、プログラムでは使わないにもかかわらず仕様上用意しなければならないコードや設定ファイルが数多くありました。こうしたコードや設定ファイルは開発ツールが自動生成してくれますが、量が増えると管理が大変です。そこで、不要なものは用意しなくても済むように仕様が改められています。
こうした改善の結果、ワンストップで柔軟な開発が可能なプラットフォームとして高く評価され、Java EE 6が広く利用されるようになったのです。
Java EE 7/8では最新Web技術への適合が大きなテーマの一つ
――現在の最新バージョンである「Java EE 7」ではどのような機能が追加されていますか。
Java EE 7ではバッチアプリケーションの実装が可能になりました。これまではフレームワークを使うかスクラッチでプログラミングする必要がありましたが、バッチ機能が標準として組み込まれました。今後Java EE 7準拠のアプリケーションサーバ製品では、この仕様に合わせたバッチ管理機能が提供されるようになるでしょう。
その他にも、並列処理を実現するConcurrency Utilities、JSON形式のデータを読み込むためのAPI、WebSocket対応などの新機能が追加されています。
![Java EE 7に含まれる技術](http://cz-cdn.shoeisha.jp/static/images/article/9424/9424_002_s.gif)
――次期バージョン、「Java EE 8」の概要を教えてください。
Java EE 8は、2017年のリリースに向けて仕様を策定中です。JSONデータ処理機能のJSON Binding、HTTP 2.0への対応、クラウドでの利用を意識したセキュリティや管理の機能強化などが検討されています。
その中でも注目はMVC 1.0です。文字どおりMVC(Model View Controller)モデルの仕様ですが、新たな機能を追加するのではなく、REST対応のJAX-RS、CDI、JSFといったJava EEの既存機能を使ってMVCモデルを実現します。MVCには、コンポーネント間でイベントをやりとりするコンポーネントベースと、HTTPリクエストに応じたアクションをコントローラが振り分けるアクションベースがありますが、今後はコンポーネントベースの場合はJSF、アクションベースの場合にはMVC 1.0を選択できるようになります。
――Java EE 7/8を使ったシステム開発は今後どのように変わっていくでしょうか。
これまでJava EEでのシステム開発は、その多くがサーバサイドにフォーカスする傾向が強かったかと思います。今後は、たとえばJavaScriptと併用したり、JAX-RX経由でJava以外のクライアントに対応したりなど、Java EEとJava以外の技術を連携させ、さまざまなクライアント環境でリッチなインターフェース技術と連携するなどのような活用がこれまで以上に増加していくと思います。同様にオンプレミスだけでなく、クラウドを前提とした開発も増えていくでしょう。
今後Java EEでは、Java以外の技術とどのように連携するかが考えられていくと思います。特に、Java EE 7/8では最新のWeb技術にどのように適合していくかがテーマの一つになっています。
1日でJavaの現在がわかる!「Java Day Tokyo 2016」5/24開催
Java SE 9、Java EE 8をはじめ、Javaに関する最新動向を概観する基調講演のほか、次期バージョンの重要機能、Javaテクノロジーの活用例、最新事例を紹介します。
エンタープライズJavaにおけるマイクロサービスとDevOps
――Java開発において、今話題のマイクロサービスやDevOpsはどのように取り入れられるのでしょうか。
マイクロサービスでは、複数のサービスを連携させて一つの機能を提供します。ひとつひとつのサービスの粒度は小さく、自由な発想で簡単に開発・デプロイでき、必要に応じてすぐに別のものと差し替えられるといった特徴があります。一方、Java EEは企業システムをいかに安定して運用するか、システムに必要な品質を確保するかを重視したプラットフォームであると言えます。
しかし、Java EEを含むエンタープライズJavaの中で、このような新しい潮流であるマイクロサービスに対し、オラクルはどのような取り組みを行うか、検討をしています。5月24日に開催される「Java Day Tokyo 2016」の基調講演では、Java開発におけるマイクロサービスの実現についても話される予定で、他にもJavaでマイクロサービスを開発・運用した事例についてのセッションもあります。
また、DevOpsには多くのJavaエンジニアが関心を寄せています。2015年にサンフランシスコで開催されたJavaOneでも、DevOpsに関するセッションが数多く見られました。DevOpsを実践する場合、CI(継続的インテグレーション)/CD(継続的デリバリー)により、開発、テスト、デプロイを細かい機能単位で繰り返し実現していきます。たとえば、UI/UXの強化、サービスのバージョンアップ、バグの修正など、規模が小さく短期間でのリリースが求められる場合に適した手法と言えるでしょう。
ただし、DevOpsを適用できるかどうかはシステムによります。Java EEベースの大規模システムですべてにCI/CDを適用すると、かえって負荷が大きくなることも考えられます。Webの画面やサービスなど比較的軽量な部分にCI/CDを適用したイテレーティブな手法で開発するなど、適材適所でDevOpsを実践していくことをお勧めします。
最新動向、ロードマップ、活用事例やヒントなどJavaに関するあらゆる情報が集約―「Java Day Tokyo 2016」開催
――今までお話いただいたようなJavaの最新トピックや事例が「Java Day Tokyo 2016」で聞けるそうですね。今回の見どころについて教えていただけますか。
日本オラクルは、Javaの最新動向やロードマップをはじめ、Javaに関するあらゆる情報を共有する場として毎年「Java Day Tokyo」を開催しています。
![Java Day Tokyo 2016](http://cz-cdn.shoeisha.jp/static/images/article/9424/9424_003.gif)
4回目となる「Java Day Tokyo 2016」のテーマは「Innovate, Collaborate, with Java―創り出す力、Javaとともに」。Innovateには「JavaとJava以外のテクノロジーを組み合わせて何ができるかを考えよう」、Collaborateには「そこから生まれたメリットを、ひとりではなくJavaコミュニティのみんなで享受しよう」というメッセージが込められています。
「Java Day Tokyo 2016」では、Java SE 9、Java EE 8をはじめ、Javaに関する最新動向を概観する基調講演のほか、次期バージョンの重要機能、Javaテクノロジーの活用例、最新事例、そしてIoT、マイクロサービス、DevOpsなど、Java Day Tokyoならではの話題のセッションを数多く展開します。
デベロッパー、アーキテクトなどJavaに関わるすべての方、これからJavaを始めたい方に、Javaの今、そしてこれからを知り、体験できる濃密な1日をご提供します。ぜひとも会場にお運びください。ご来場をお待ちしております。
日本オラクルでは、Javaに関する情報をWebサイトで積極的に発信しています。また、FacebookおよびTwitterではJava Day Tokyoに関する情報発信を行っています。ぜひ、ご参照ください。
Java Day Tokyo 2016
- 開催日時:2016年5月24日(火)9:30~20:00
- 主催:日本オラクル株式会社
- 会場:東京マリオットホテル
- 詳細・申し込み
- お問い合わせ:Java Day Tokyo事務局(info-javaday_jp@oracle.com)