地味Java
Javaの基本機能は一応JDK1.2で完成されており、一般的に利用されている機能範囲は大体この範囲ではないかと思われる。というのは、Javaの文法や基本ライブラリという意味ではJDK1.2で大体のことはできるし、Java技術の焦点がStrutsのようなフレームワークに移っているため、改めて新しいJavaを細かくフォローする必要性は薄い。また実務的には運用を念頭に置いた過去バージョンとの互換性を求められることもあり、新しいバージョンをフォローしてもすぐには使えないという事情もある。
もちろん、Java SE 5(JDK1.5)などで新規に追加されたメジャー機能は雑誌などでフォローできるのであるけれど、細かな機能拡張は見過ごされがちである。しかし、塵も積もれば、ということでJava SE 6(JDK1.6)までになると、細かな機能拡張の累積が設計に影響を与えるレベルのインパクトを持つまでになっている。
ということで、個人的に気付いたメモです。
String
JDK1.4/1.5ではString関係で大きな機能変更が行われている。
- StringBuilderの導入(1.5)
- CharSequenceの導入(1.4)
- 正規表現エンジン(java.util.regex)の提供(1.4) [はっしーーさんの指摘により訂正(6/15)]
文字列処理は、これらの機能追加によって、作法が大幅に変わってくる。
また、文字列入出力ではjava.nioのCharBufferなどとの関係も意識が必要。
DOM Level3
JDK1.5でDOMのサポートレベルがDOM Level3になった。DOM Level2よりもかなり高機能になっている。
特にorg.w3c.dom.htmlはなかなか面白い存在である。NekoHTMLと組み合わせれば非XMLのブロウクンなHTMLも扱えるはずなので、"Web 2.0"的にも色々使えそう。
XPath
JDK1.5からDOM Level3の一環でorg.w3c.dom.xpathが、別口でjavax.xml.xpathがサポートされている。
XML処理でXPathはとても便利なので、XML処理に欠かせない機能となるはず。
XMLデータ型
JDK1.5からXMLデータ型が標準機能としてサポートされている。
ファクトリjavax.xml.datatype.DatatypeFactoryに加えて、既存のJavaクラスで表現できなかったデータ型としてjavax.xml.datatype.Duration, javax.xml.datatype.XMLGregorianCalendar, javax.xml.namespace.QNameが追加されているのも大きい。
URI
JDK1.4よりURIを表現するためのクラスjava.net.URIが導入されている。
パス名の操作、相対URIの処理など、高速に動作する便利機能満載であり、java.net.URLと違ってI/O処理が前提となっていない点も使い勝手がよい。Java5以降の開発ではmustアイテムである。
UUID
JDK1.5よりUUIDを表現するためのクラスjava.net.UUIDが追加されている。
分散環境でも使えるスケーラブルなID生成器として利用範囲は大きい。