エンタープライズ向けJava標準化の歴史
企業情報システムを支えるJava
JavaでWebアプリケーションを開発する際にフレームワークを利用することは、すでに当たり前になっています。JavaのWeb開発フレームワークは、細かい技術領域ごとに商用/オープンソースを問わず多数のプロダクトが入り乱れており、それらの特徴/メリットもさまざまです。そこで、プロジェクトの特性に応じたフレームワークをその都度選択して組み合わせて使うことが一般的になっています。
一方で、基幹系アプリケーションを含む大規模なシステムの構築をミッションとするユーザー企業の情報システム部などでは、限られた人材で品質と生産性を安定的に維持するために、「自社のすべてのアプリケーション開発を支える『共通基盤』を整備したい」というニーズが根強くあります。この場合は、JavaのWebアプリケーション開発のための基盤についてもその都度選択するのではなく、何らかの汎用的な標準を定めて体制や共通ライブラリなどの整備を行うことが求められます。
Javaの場合、汎用的な利用を想定した標準技術としては、企業情報システムの構築に必要なAPI仕様を公式の標準化プロセスによって定めた「Java EE」(Java Platform, Enterprise Edition)があります。しかし、これまでこのJava EEの標準機能だけでは開発に必要な機能がそろわず、上記のような『共通基盤』を検討するケースにおいても標準以外のフレームワークを別途ユーザー自身が選定することが一般的になっていました。とはいえ、Javaのフレームワークが非常に多様であるために、汎用性を維持しつつ全体最適な標準を定めることに課題を抱えているケースが多く見られました。
ところが、上記のようなJavaの技術環境は、ここ5年ほどで大きく変わってきています。公式の標準であるJava EEが、オープンソースの世界で発展してきた(非公式な)デファクト標準のフレームワーク技術を取り込んで標準規格化する、という構図が顕著になり、少なくとも従来のフレームワークが提供してきた主要な機能はJava EE標準のみで十分にカバーできる環境がすでに整っています。
こうした流れから、今後のJavaのフレームワークは、標準規格化されたフレームワーク技術の仕様に準拠して、汎用的な機能や設計ノウハウを提供することが一層求められていくと考えられます。前述のような『共通基盤』構築のケースでは、できる限りこうした公的な標準に準拠した技術を選択することで、「汎用的に長い間使える標準基盤」を整えることができるようになります。
本連載では、「企業情報システム開発の共通基盤」としての存在感を再び増してきているJava EEの動向と、その上で実際に企業向け情報システムを構築する際のノウハウを集約した野村総合研究所(NRI)の開発フレームワーク「ObjectWorks+」について解説します。第1回の今回は、Java EEとその周辺のフレームワークの変遷について、技術仕様の標準化の観点から簡単に振り返ります(図1)。
Javaの仕様標準化プロセスの変遷
技術的な変遷を追う前に、まずJavaの標準化プロセスについて簡単に確認しておきましょう。
現在のJavaでは、APIの「仕様」と「実装」が明確に区別されています。仕様は実装とは独立して文書化されており、例えば、「Servlet」(サーブレット)の仕様に従ってアプリケーションを作れば、Java EE仕様に準拠して実装されたどのサーブレット・コンテナの上でも正しく動作することが期待できます。そして、Java EE仕様の対応製品を作ることが、ベンダーだけでなくオープンソース・コミュニティによっても認められており、米IBM、米Oracle、米Red Hat(JBoss)など複数のベンダーやコミュニティが、Java EE対応アプリケーション・サーバー製品をリリースしています。こうした「仕様と実装の分離」とそのオープン性はJavaの大きな特徴であり、現在のエンタープライズ分野での繁栄の一因ともなっていると考えられます。
こうしたJavaの標準化プロセスは、どのように発展してきたのでしょうか。
まず、1999年に標準化プロセスとして「JCP」(Java Community Process)が導入され、「JSR」(Java Specification Request)の提案をもとに、仕様の文書化と、そのお手本であるリファレンス実装(参照実装)を分けて開発する現在の仕組みが形作られました。またこの年、参照実装をオープンソース化する初の試みが行われ、サーブレット・コンテナの「Tomcat」が誕生します。その後、2002年に発表された「JCP 2.5」によってすべてのJSRのオープンソースによる実装が可能となりました。その後、2005年にはJava EEアプリケーション・サーバー全体をオープンソースで開発する「Project GlassFish」が始まり、仕様がリリースされるとともに、利用可能な参照実装がオープンソースで提供される流れが定着しました。
このように、Javaは当初から仕様策定と参照実装のオープン性を意識しており、コミュニティの知見を標準仕様へと反映させる体制を意識的に作り上げてきました。そして後で述べるように、オープンソース・コミュニティから生まれた多くの開発技術が標準仕様へ還元されつつあります。
それでは次ページから、Java EEとその周辺の開発フレームワークの技術的な変遷を見ていきましょう。