【コラム】

Java API、使ってますか?

1 JCPによって進められるJava関連技術の標準化

 
  • <<
  • <

1/60

はじめに

現在、Java関連の周辺技術の標準化はJCP(Java Community Process)によって行われている。JCPではJavaに関する新しい技術仕様や改訂仕様がJSR(Java Specification Request)として提案され、各JSRに対してそれぞれエキスパートグループを形成して標準化に関する作業を進める。

JCPでは現在300以上のJSRが公開されている。そこにはJavaが誕生した初期からある歴史の古いAPIから、これから標準化の議論が行われる予定の非常に新しいAPIまで、実に多様なAPIが含まれる。しがって簡単に言えばJCPの動きを追っていけば、現在Javaでどのような仕様が話題となっており、これからどんな仕様が生まれるのかがわかるというわけだ。

本連載ではそれらJSRとして公開されている仕様の中から、とくに重要性の高いものや注目を集めているものなどをピックアップし、その概要や使用方法、関連するプロダクトなどを紹介していこうと思う。

連載第1回目となる今回は、JCPが発足するに至った経緯や、JCPによる標準化手続きの概要などについて話しておきたい。

JCPの発足

JCPが正式に発足したのは1998年12月のことになる。当時、JFC(Java Fundation Classes)やEJB(Enterprise Java Beans)などといった主要なJava関連技術の標準化について、よりオープンな場で議論しようという動きがあった。そこでより多くの開発者が標準化に参加できるようにという目的で発足したのがJCPだ。

もともとSun自身はJava技術のオープン化については積極的な一面を持っていたと言える。JCPでは誰でもJSRを提案することができ、エキスパートグループやJCPメンバ、あるいは一般ユーザとして仕様策定の議論やレビューに参加することができる。この環境はオープンソースコミュニティのそれとよく似ている。

長い年月はかかったものの、最終的に大きな混乱もなくJavaをオープンソースにすることができたのは、JCPがオープンな標準化機構として非常にうまく機能してきたからだといえるだろう。

もっとも、1999年当時はまだJavaの中枢部分の仕様策定はSun Microsystemsがリードしていた。Sunは当初、Javaの標準化をISO(国際標準化機構)やECMA(ヨーロッパ電子計算機工業会)などの国際機関に委託する予定だったが、これらの機関による標準化プロセスは時間がかかりすぎるという懸念も生じていた。ちょうどそのころ、コミュニティ主導で進められていたEJBの標準化が成功しつつあり、JCPによる標準化ならばイノベーションの進化に対応できるという自信につながった。Sunが国際機関によるJavaの標準化を断念し、Javaの標準化プロセスとしてJCPを導入することを決定したのは、JCPの発足からちょうど1年後の1999年12月のことである。

JCPによる標準化の手順

続いて、実際にどのような手順で仕様が決まっていくのかを簡単に説明しよう。より詳細な内容はJCPのサイト内のドキュメントを参照してほしい。なお、JCP自身もJSRによって定められており、現在は「JSR 215: Java Community Process (JCP) 2.6」が使用されている。

JCPには大きく分けて「提案」「コミュニティドラフト」「パブリックドラフト」「保守」という4つの段階がある。各段階で行われる主な作業とその参加者を図1に示す。

図1 標準化プロセスの流れ

新しい仕様や既存仕様の改訂を提案したい場合、まずはJSRを作成してJCP運営担当であるPMO(Program Management Office)へ申請する。申請されたJSRにはPMOによって追跡番号(JSR-XXX)が付けられた上で適切なEC(Executive Committee)に割り当てられ、Webサイト上に公開される。そして2週間か4週間のレビュー期間を経てECによる承認投票が行われる。ここで承認されれば晴れて提案の段階を終了し、次の段階へと移る。なお、承認投票で却下された場合でも2週間以内に改定案を提出することで再審議投票を受けることができる。

ECというのはJCPにおいてJavaテクノロジの開発および発展を監督する立場にあるグループで、10の信任議席と5の選出議席、そしてSunが持つ常任議席から構成される。常任議席以外は全メンバによる選挙によって選出される。ECはJavaSE/JavaEE関連仕様のものと、JavaME関連仕様のものの2種類があり、JSRが提案された段階でどちらのECが担当するかが決定される。

ECによってJSRが承認されると、続いてエキスパートグループが編成され、仕様の第1次ドラフトが作成される。そしてドラフトがJCPのサイトに公開され、30日から90日間のコミュニティレビューが実施される。その結果、必要があればドラフトの問題点を訂正し、ECによってパブリックレビューに進めるかどうかの投票が行われる。

パブリックレビューでは30日から90日の期間で一般ユーザがドラフトをレビューし、意見を出すことができる。エキスパートグループではその結果をもとにして最終ドラフト案を作成する。また、この段階でRI(参照実装)やTCK(テクノロジ互換性キット)を完成させる。RIは仕様の適切な実装を提供し、TCKは仕様の適切なテスト範囲を提供する。そして最後に最終ドラフトがECに提出され、最終承認投票を通過すれば、晴れて最終リリースとなる。最終承認投票を通過できなかった場合、30日以内に最終ドラフトを改訂し、再審議投票の機会が与えられる。

一度リリースされた仕様は、常に最新の状態に保つために保守リードによる保守の段階に入る。保守段階では保守レビューを経て仕様の改訂が行われ、それに合わせてRIとTCKも変更される。

以上がJCPによる仕様策定の簡単な流れである。JSRは各段階ごとにドラフトが公開されるため、重要な仕様に関しては最終リリース前でも広く認知されていることが多い。また、どのような企業や団体がエキスパートグループに名を連ねているかも重要なポイントとなる。JSRを調べる際には上記のプロセスを念頭において、その仕様の策定作業が現在どのような状況にあるのかをよく注意して見るといいだろう。

提供:毎日就職ナビ

会員登録はこちら

学生のための就職情報サイト「毎日就職ナビ」。6,000社以上の新卒採用情報が常時掲載され、社内の雰囲気が伝わる情報画面、さまざまな項目での会社検索、エントリーや説明会検索など、機能も充実。無料適職診断、就活Q & A、エントリーシート添削講座など、就職活動に役立つ記事も満載です。研究者、エンジニアを目指す学生の方々も是非エントリーしてください。お待ちしています!

毎日コミュニケーションズはプライバシーマークを取得しています。

  • <<
  • <

1/60

インデックス

連載目次
第60回 どうなる? 今後のJavaプラットフォーム(Java SE編)
第59回 どうなる? 今後のJavaプラットフォーム(Java EE編)
第58回 Java SE 7の要注目機能"クロージャ"はどうなるのか その6
第57回 Java SE 7の要注目機能"クロージャ"はどうなるのか その5
第56回 Java SE 7の要注目機能"クロージャ"はどうなるのか その4
第55回 Java SE 7の要注目機能"クロージャ"はどうなるのか その3
第54回 Java SE 7の要注目機能"クロージャ"はどうなるのか その2
第53回 Java SE 7の要注目機能"クロージャ"はどうなるのか
第52回 Early Draftが公開されたJSF 2.0
第51回 EJBから独立したJava Persistence 2.0
第50回 モバイルJavaの新しい潮流となるか - MSA 2.0のドラフト公開
第49回 やっぱり基本はServlet - Servlet 3.0のEarly Draftを読む
第48回 JOGLで3Dプログラミング その4
第47回 JOGLで3Dプログラミング その3
第46回 JOGLで3Dプログラミング その2
第45回 JOGLで3Dプログラミング
第44回 JARファイルを効率的にネットワーク転送するためのPack200形式
第43回 Early Draftで把握するEJB 3.1の新機能
第42回 次世代の携帯端末向けJava仕様"MIDP 3.0"はどうなるか その2
第41回 次世代の携帯端末向けJava仕様"MIDP 3.0"はどうなるか その1
第40回 リソースアダプタによる接続の仕組み
第39回 JCAを利用したシステム間接続
第38回 Java EEと外部システムの接続性を支えるJCAがバージョンアップ
第37回 Javaのモジュラリティ強化を担う"スーパーパッケージ"とは
第36回 JSR 308対応のコンパイラを試す
第35回 公開されたJSR 308のEarly Draftを検証する
第34回 スクリプト言語とJavaを結びつけるJSR 223
第33回 Java EE環境に統一されたコンポーネントモデルを提供するJSR 299 その2
第32回 Java EE環境に統一されたコンポーネントモデルを提供するJSR 299 その1
第31回 Javaの文法がそのまま使えるスクリプト言語"BeanShell"
第30回 Javaアプリケーションにオブジェクトのキャッシュ機構を提供するJCache API
第29回 Javaアプリケーションからのリソース管理を可能にするJSR 284
第28回 XMLデータソースへの問い合わせはJSR 225で
第27回 Portlet Specification 2.0をもっと手軽に利用する
第26回 次期Javaポートレット仕様となるJSR 286
第25回 JSFとポートレットをつなげるJSR 301
第24回 Webサービス向けのポートレット仕様「WSRP」
第23回 高い相互運用性を実現するポートレットAPI - JSR 168
第22回 Java EE環境でタスクのスケジューリングを可能にするJSR 236
第21回 Java EE環境でのスレッドプログラミングを可能にするJSR 237
第20回 音声認識/合成のためのAPI - Java Speech APIとJSR 113
第19回 JSR 291でJavaプラットフォームにダイナミックコンポーネントモデルを導入
第18回 JAX-RSで簡単RESTful - JSR 311
第17回 待望のServlet 3.0がJSRに登場 - JSR 315
第16回 アノテーションを使ってバグ退治 - JSR 305
第15回 アノテーションをさらに広い範囲で利用可能にするJSR 308
第14回 Webアプリケーション開発の要となるか - JSF 2.0がJSRに登場
第13回 Webサービス経由でのJMX Agentへの接続を可能にするJSR 262
第12回 Javaアプリケーションのモジュール化をサポートするJava Module System
第11回 "NIO.2"がやってきた - JSR 203: More New I/O APIs for the Java Platform
第10回 JSR 295: Beans Bindingの参照実装を試す
第9回 けっこう便利! 単位を扱うAPI -- JSR 275: Units Specification
第8回 アノテーションでバリデーション - JSR 303: Bean Validator
第7回 Swing開発の救世主となるか - Swing Application Framework
第6回 JavaBeansのプロパティを同期させるバインディングAPI
第5回 誰よりも早く"Java SE 7"を睨む
第4回 日時情報の取り扱いを改善する JSR 310: Date and Time API
第3回 古いAPIも進化している!? - JSR 919: JavaMail 1.4
第2回 JSR 1 リアルタイムJava仕様
第1回 JCPによって進められるJava関連技術の標準化

もっと見る



IT製品 "比較/検討" 情報

転職ノウハウ

あなたが本領発揮できる仕事を診断
あなたの仕事適性診断

シゴト性格・弱点が20の質問でサクッと分かる!

「仕事辞めたい……」その理由は?
「仕事辞めたい……」その理由は?

71%の人が仕事を辞めたいと思った経験あり。その理由と対処法は?

3年後の年収どうなる? 年収予報
3年後の年収どうなる? 年収予報

今の年収は適正? 3年後は? あなたの年収をデータに基づき予報します。

激務な職場を辞めたいが、美女が邪魔して辞められない
激務な職場を辞めたいが、美女が邪魔して辞められない

美人上司と可愛い過ぎる後輩に挟まれるエンジニアの悩み

人気記事

一覧

イチオシ記事

新着記事

【コラム】JR西日本の車両・列車 第21回 阪和線用新型「225系5100番台」いよいよ7/1デビュー
[22:59 6/30] ホビー
結婚したくない理由、独身男性の2割が「経済的に不安」
[22:52 6/30] マネー
クレジットカード不正使用被害額、3カ月で37億円 - 前期比39.6%増
[22:31 6/30] マネー
[USJ]悟空とフリーザがフルCGアニメで対決! 「ドラゴンボールZ」4Dアトラクションお披露目
[22:22 6/30] エンタメ
国民年金納付率は63.4%に - 4年連続上昇
[22:19 6/30] マネー

求人情報