Guava

ぱっと見、型推論とか面白い機能があったGoogle Code Archive - Long-term storage for Google Code Project Hosting.とくらべるとちょっとインパクトに欠けるかなという印象。ただFiles.readLinesのコールバックなんかは面白いと思った。

まだ洗練されてないよって本家でも言っているが、Twitterでもイマイチという反応が多かったように思う。どの辺がイマイチなのか追いきれてない(理解できてない)けどざっと以下のような部分がマイナスだった模様。とりあえずメモっとく。

1.テストが無い
ちなみにGoogle Collections Libraryにはある。

2.java.util.concurrentのラッパーぽいcom.google.common.util.concurrentのドキュメントが無い。
中身もイマイチらしい。

3.generate.sh
http://guava-libraries.googlecode.com/svn/trunk/src/com/google/common/primitives/generate.sh
なのがポツンとあってこれでprimitivesパッケージのなかのクラスを自動生成してるっぽい。これシェルスクリプトでしかもなかでperl呼んでいるんだけどWindows環境だったらそのままでは動かないよね。

またこのシェルスクリプトは http://guava-libraries.googlecode.com/svn/trunk/build.xml で呼ばれているわけでもない。

4.ラベル
2重にネストしたループからラベルでジャンプして脱出している箇所がある(例:Booleans.java)。

5.InputSupplier.java
http://guava-libraries.googlecode.com/svn/trunk/src/com/google/common/io/InputSupplier.java がイマイチらしい。

比べる対象として適切かどうかはわからんが、たしかに
http://t-2.googlecode.com/svn/trunk/commons/src/org/t2framework/commons/util/using.java
と比べると例外の型が抽象化されてないし、エラーハンドリングの仕組みが無い。ま、この辺はJava7待ちかも。

参考:
java.io.Closeable の事も忘れないであげて。 - 設計と実装の狭間で。

jakartaのcommons系はジェネリクス対応してなかったりするので、ええ感じのユーティリティがあるとうれしいんだけどね。