はじめに
Javaでのプログラミング、特にJava EEを用いたコーディングとかをしていると、
僕は「あれこれってどういう仕様なんだろう」ってなることが結構あります。
僕「なんか良い本無いですか?」 某氏「JSR読め」
ほほーそっか。仕様そのもの読んじゃえば間違いはないよな、と。
だがしかし、読み方がよく分からない!っていうか仕様ってどうやって決まってるの?
Java公開されてるの?
…とかそういう僕はレベルだったので、これを期に、Javaの仕様である(定義間違ってたら教えて下さい)
JSRあるの読み方を調べてまとめてみようかなというお話です。
調べたっていうレベルですので、間違ってたり表現が適切で無い場合は、
どこかでご指摘ください。
基本的な用語
・JSR
Java Specification Request。Java仕様要求。つまりJavaの仕様です。
・JCP
Java標準化機関JCP(Java Community Process)
・RI
参照実装(Reference Implementation)。 JSRを満たしたお手本の実装といったところかな。?
・TCK
Technology Compatibility Kit。 TCKは、JSRの
特定の疑惑の実装をチェックするテストのスイートです。
JSRに関わるポジション
・Specification Leads
JSRを推進していく人
・Expert Group
専門グループ。JSRをどのチームが手がけていくか。
・Executive Committee(執行委員会)
JSRの投票権を持っている。JSRの決定機関という感じなのかなぁ。
・JCPメンバー
Java Community Processのメンバー。
※投票権を持っているのはExecutive Committee(執行委員会)の人のみのようです。
メンバーはコミュニティ内での発言権を持っているとのこと
JSRの成立条件
JSRで投票されて、草案が通ること。その後スペックリードが頑張って、
エキスパートグループでRIを作ってTCKでテストを通す。それをレビューして通過すればおっけー。
JSRのプラットフォーム
Java SEとJava MEとJava EE。
JSRのステージ
JSRが、コミュニティのメンバーによって開始され、Executive Committee(執行委員会)によって開発が承認されます。
JSRが承認されると、エキスパートグループは、ネットを介して誰でも確認し開発することが出来る仕様の初期草案を形成します。
JSRをネットを介して誰もが読んで、草案にコメントすることができる、パブリックなレビューです。
エキスパートグループは、フィードバックを受けて、さらに文書を改訂します。
RIおよびTCKの基礎として使用されるドラフト仕様のバージョンです。
エキスパートグループのリーダーは、リファレンス実装とそのTCK(関連技術の互換性キット)は、
最終的な承認のためにExecutive Committee(執行委員会)への仕様を送信する前に完了していることをチェックしている必要があります。
完成した仕様、リファレンス実装、およびTCK(テクノロジ互換性キット)は、
説明、解釈、拡張、および改訂に関する要求に応じて更新されます。
直近12ヶ月以内にJCPのマイルストーンの草案を掲載しているJSRのことです。
最終リリースをしておらず、直近12ヶ月でJCPマイルストーンのドラフトを投稿していないJSRです。
JSRは、以下の場合に休止状態になります。
・非アクティブの延長期間を持っていた
・JSRが非アクティブの延長期間の後にExecutive Committee(執行委員会)が休止として投票されたとき
・スペックリードと保守リードが、存在しない
スペックリードが最終リリースを行う前にJCPから取り下げられたJSRです。
JSRレビュー時のExecutive Committee(執行委員会)によって否決されたJSR、ドラフトの承認、または最終承認投票用紙。
https://www.jcp.org/en/procedures/overviewより引用
参考URL
JSRがJava標準になるまで--JCP Executive Committeeが来日
JSRs: Java Specification Requests List by JCP Stage
JSRs by Platform
まとめ
今回はJSRの整理としてそれにまつわる情報や用語、JCPのレビューとかそこらへんを
まとめてみました。
ぼんやりとスペックリードがどうのこうのとか、アーリードラフトだから…という話を
右から左に受け流していた僕ですが、なんとなく分かってきたかなぁと思います。
とりあえずこれでJSRを読む前提知識はついた(と思う)ぞ。
本題としては、Original Java Specification Request (JSR)が読めるようになることが
ゴールかなと思うので、そこはまた別のエントリで書きたいなと思ってます。
JSR330とか気になる年頃です。
追記
JJUG CCC 2014 fallでmakingさんとmiyakawa_takuさんのセッション資料にほぼ全て網羅されていた!
僕はこの時Java女子部の発表を見てた気がするな〜。今更ながら勉強になる。
skrbさんに教えていただいた。投票結果もみれるとのこと。
@yy_yank @mike_neck 各JSRの投票結果も見られますよ。たとえば、Java SE 8のJSR 337の最終投票結果はこちら。 https://t.co/e2UdKpaV9M 投票はJSRの作成時、PR時、FR時の3回行われます。
— Yuichi Sakuraba (@skrb) April 15, 2015
mike_neckさんに教えてもらいましたが、JEPなるものもあるようで。
どうやら、JSRほどJavaの仕様には直接関係しないようですね(全く関係しないとは思いませんが、、)。
そのあたりも上のスライドでは触れられていました。
Open JDKのJEP(JDK Enhancement Proposals)
0 件のコメント:
コメントを投稿