フレームワークから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 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テクノロジーの活用例、最新事例を紹介します。