JavaOneのプレゼンテーション資料

エキスパートグループのAlan BatemanとCarl QuinnがJavaOneでJSR-203・NIO.2に関して喋った時の資料が公開されている.
http://openjdk.java.net/projects/nio/presentations/TS-5686.pdf
なお,このセッションに関する次の記事も公開されているので,参考にして頂きたい.
徐々に明らかになる次期New I/Oの姿 - JavaOne 2008マイコミジャーナル
私は残念ながら行けなかった(泣)のだが,AlanのQ&Aに関する報告に基づいて,簡単にコメントしておく(他のエキスパートからの重要な補足があれば,後から追記する).

  • この資料ではMIMEタイプの扱いが書かれていないが,java.nio.filesystems.Files#probeContentType()メソッドが用意されている.
  • この資料には書かれていないが,例外はIOExceptionのサブクラスとして,より詳細に分類されている.
  • ZIPファイルプロバイダは用意される.ただし,サンプルorデモ程度の品質.
  • チャネルの多重化のためのAPIは有用だが,現時点の我々のスコープには入っていない.
  • Carl QuinnとKevin BourrillionはNIO.2の JDK6サポートに関するプロジェクトを立ち上げようとしているらしい.

なお,上記記事に「従来のNew I/O APIは、仕様を作ったエキスパートグループ自らが未完成のものだったと語っているようにあまり使い勝手のよいものとは言えず、それほど普及していないのが現状だ。」とあるが,JSR-51では最初に様々な事項について方針と優先度を検討して,それをいつ実現するかを決めた.つまり単なる「未完成」ではなく「計画的に段階的に策定していく」というアプローチをとったのである.
たとえば,我々がJSR-51で一番最初に話し合った問題に「Completion vs. readiness」という問題があり,これは,非同期I/Oをどのようなスタイルで実現するかということであった.結局,readinessスタイルのAPIを最初に設計したのだが,この理由はreadiness APIをベースにその上にcompletion APIを作るのは簡単だが,逆はできないからである.そこで,JSR-51ではまずreadinessスタイルのAPIとしてjava.nio.channels.Selectorクラスを用意して,JSR-203で新たにcompletionスタイルのAPIとしてFutureオブジェクトとCallbackを用意したのだ.