GoogleのJavaユーティリティライブラリであるGuavaは、今年9月28日にリリース10.0.0を迎えました。新たなAPIも追加され、更なる進化を遂げています。(執筆時点での最新リリースは10.0.1) 今回は、まだベータ版ながら新しく追加された興味深いAPIを4つ紹介します。 他のAPIについても、JavaDocなどで@Betaアノテーションがついているものはベータ版ですので、今後のリリースで変更される可能性があります。 Stopwatch プログラムの実行時間を計測したいとき、よく使われるコードがあります。 long t1 = System.currentTimeMillis(); someExpensiveCompute(); long t2 = System.currentTimeMillis(); System.out.printf("time: %sms%n", t2 -
イヤホンを新調したら雨夢楼と光のストライドがきれいに聴こえて嬉しいeller86です。洗濯機でイヤホンを洗濯してしまったときは絶望の淵に立たされていた気がしますが、あの絶望がこの喜びにつながるとは一体誰が想像したでしょうか。 さて前回のGuava紹介記事がそこそこ人気?だったようなので、I/Oにもう少し突っ込んだ内容も書いてみたいと思います。 イディオムを隠蔽化するFilesクラス 前回イディオムを排除できるクラスとしてCloseablesを紹介しましたが、Filesクラスもまた役立ちます。少なくとも以下のメソッドはおさえておくと役立つはずです。 ファイルから読むためのBufferedReaderを作ってくれるnewReader(File, Charset) ファイルに書くためのBufferedWriterを作ってくれるnewWriter(File, Charset) Sun Java5以
Guava librariesをご存知でしょうか?Googleが開発・使用しているコアライブラリです。OSSであり簡単に入手できます。 http://code.google.com/p/guava-libraries/ このライブラリは結構多機能で、海外の著名プロダクトでもよく見かけるのですが、日本のネットでの知名度はいまいち高くない気がします。もともとの名前(Google Collections)はそこそこ知名度があったと思うのですが、この差はなぜでしょうか?私の観測範囲が狭いだけかもしれませんけども……。 自分が使ってみて思った「へーこんなことができるんだー」をまとめてみますので、共感するところがあればぜひ検証してみてはいかがでしょうか。 何が嬉しいの? Guavaはできることを増やすライブラリではなく、普段やっていることを短く書くためのライブラリです。Apache commonsなど
Guava 10にOptionalというのが追加されたらしいので試してみました。 Optionalクラスは名前の通り、ScalaのOptionクラスやHaskellのMaybeモナドのようなもので、値をラップすることでnullを使わずに値が存在しないことを表現するというものです。これによって意図しないNullポインタアクセスを防止することができます。 使い勝手はともかく機能的にはScalaのOptionと同じですね。 Guava 10にはこの他にもキャッシュやイベントバスをはじめ、多くの新機能が追加されています。 http://code.google.com/p/guava-libraries/wiki/Release10
Guavaとは GuavaはGoogle製のクラスライブラリです。 このへんによるとAPI Level9のNFCDemoというクラスで使われています。 AndroidでGuavaとProGuardを使ってみる Guavaを使ったプロジェクトのビルドでProGuardを使う場合には、 Guavaプロジェクトのドキュメント(UsingProGuardWithGuava)だけではうまく行きません。 ビルドを実行すると以下のようなエラーメッセージが出力されます。 このメッセージは、sun.misc.Unsafeが解決できないため処理が続行できない旨を報告するものです。 Proguard returned with error code 1. See console Warning: com.google.common.primitives.UnsignedBytes$Lexicographical
Guava: Google Core Libraries for Java 1.5+ GoogleのJavaユーティリティライブラリで、Apache Commons の Lang、Collectionsなどに替わる機能を提供してくれるものです。コンパクトながら、かゆいところに手が届く良質なAPIになっていると思います。 いくつかの機能を紹介します。 コレクションの全ての要素を変換したい List<A>を基にしてList<B>を作るとします。 ライブラリを使わない場合はこんな感じになるでしょう。 List<B> blist = new ArrayList<B>(alist.size()); for (A a : alist) { blist.add(new B(a)); } Guavaを使う場合は次のように書きます。 List<B> blist = Lists.transform(alist
Javaしか知らなかった時はまぁ多少冗長だなー位にしか思っていなかったんですが、rubyを知ってからはJavaプログラミング中に「rubyならもっと簡潔にかけるのに・・・」なんて思ったりすることが増えてきました。 例えば、 List<String> animals = new ArrayLists<String>(); animals.add("cat"); animals.add("dog"); animals.add("pig"); っていうJavaのコードは、rubyだと animals = %w[cat dog pig]というように一行で書けます。 一行で書けるrubyがすごいと言うよりは、可読性を考えたときに、これは単に動物のリストを宣言したいだけなので、むしろ一行で書けるべきで、3行になってしまうJavaがちょっといただけないのだと思います。 少し細かいですが、他によく言われる
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く