ひがやすを技術ブログ

電通国際情報サービスのプログラマ

Seam Hot deployment

Seam 1.2.1 with incremental hot deployment

SeamでもSeam component(JavaBeans?)限定だけど、Hot deploymentがサポートされたようですね。Session BeanとEntity Beanはまだのようです。TapestryもHot deploymentを開発中とのことなので、ある意味、DIに継ぐ、流行なのかもしれません。
Seamの実現方法は、Seasarとほぼ同じで、リクエストごとにClassLoaderを用意するというものです。簡単ジャンと思われるかもしれませんが、リクエストごとにClassLoaderが変わると、同じ.classオブジェクトも違うクラスになってしまうので、背後で動いているフレームワークはかなり対応が大変なのです。
HOT deployがあたりまえになると、Seasar2.4の優位点もある程度失われるので、また何か考えなければいけませんね。
追記:arumaniさんが言われているように、GuiceもHOT deployを開発中でしたね。大御所のSpringがどのような対応を取ってくるのかも興味深いところです。強い型付け言語としてのJavaのよさを活かしつつ、LLのさくさく感を取り入れるというのが、今後のJavaの方向性なのかもしれません。

CtMethod#setBody()

CtMethod#setBody(String body)では、bodyのコンパイルが行われるよう(Java的に正しくない文字列を渡したらエラーになりました)です。そのため、CtNewMethod.make()でbody付でCtMethodを作る場合、その後、CtMethod#setBody()を呼び出すのは、パフォーマンス的な影響があるかもしれません。
S2AOPで一部、上記のような処理を行っている部分があるので、setBody()を呼び出すのを止めるとパフォーマンスが向上する可能性があるかも。