あるまに

 | 

2007-03-11 Google Guice

[] Google Guice(その1) 概要

以前同僚のM君より存在を教えてもらったGoogleDIコンテナGuiceですが、めでたく1.0になったようなのでちょっと見てました。

一言で言うと、「アノテーションとジェネリクスを使い、パフォーマンスを重視し、DIに特化したDIコンテナ」のようです。

とりあえず、「何で新しくDIコンテナ作ったの?」「Springとの違いは?」というのが万人共通の疑問だと思うので、まさにそれに答えているページをまず見てみました。

http://code.google.com/p/google-guice/wiki/SpringComparison

より。記述順序や訳はかなりいい加減なので、ちゃんと読みたい方は上記URLを参照下さい。

  • 発音:「ジュース」*1
  • Springについて
    • SpringによってDIがメジャーになった。Springが無かったらGuiceは無かったかも(少なくとももっと遅かった)
    • Springと直接競合しない。Springは幅広いが、GuiceはDIに特化している
    • GuiceチームはSpringの開発者やコミュニティにかなり世話になった。もっと一緒にやりたいね
    • GuiceはSpringとの統合手段もあり、既存のSpringのBeanをバインドできる。また、AOP Allianceのインターセプタに対応しているから、Springのトランザクションインターセプタも使える
  • Guice全般
    • GuiceはGoogle最大のアプリAdWordsで使う為に生まれた
    • Guiceはアノテーションとジェネリクスを取り入れている。おかげで手軽な上、間違いやすくてリファクタリングし辛い文字列による識別をしなくて済む
    • Guiceはパフォーマンスを最重要視しており、他のやつよりかなり遅くなる事はまず無いだろう。Java5の同期ライブラリを使いbuilderで処理するGuiceは超速い。DIではよりSpringより数百倍約100倍速い*2
  • アノテーションについて
  • AOPについて
    • Guiceは簡単に使えてメモリ消費も少ないメソッドインターセプトだけを用意している。更に重要な事は、これによってインターセプタ無しでメソッドを呼び出す可能性を下げている事だ*5
    • Guiceはメソッドごとに別のハンドラを用意しているので、パフォーマンスのオーバーヘッドは最小になっている

*1:これは http://code.google.com/p/google-guice/ に記載

*2ベンチマークコード⇒http://google-guice.googlecode.com/svn/trunk/test/com/google/inject/PerformanceComparison.java

*3:これはサンプル見ないと何を言ってるのかよく分かりませんね。少なくとも私は…

*4:型で一致したりする例のやつ

*5:ここ自信なし…

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

 |