This is a cache of http://dbflute.seasar.org/ja/lastaflute/howto/migration/s2tola.html. It is a snapshot of the page at 2024-11-13T00:56:36.117+0000.
La<strong>s</strong>taFluteと<strong>s</strong>ea<strong>s</strong>arとの違い | La<strong>s</strong>taFlute

LastaFluteとseasarとの違い

seasar を Java8 でフォーク

徹底したスリム化
使わない機能削減、依存ライブラリ削減(依存jarを少なくシンプルに)
デバッグしやすいように
コンテナ内で発生したエラーのメッセージをDBFlute風に
OGNL改めJs
OGNLの代わりにJava同梱のNashornのJavascriptエンジンを利用
Java8 でコンパイル
少し速くなるかなぁ...
ホットデプロイはそのまま
欠かせないホットデプロイは変わらず利用できるように

sAstruts を Java8 でフォーク

struts1外し
一番のネックだった struts1 への依存のない sAstruts
commonsへの依存最小限
古いcommonsへの依存を外し、アプリで最新版使えるように
内部フォワードしない
フォワードせずとも綺麗なURLを実現
設定ファイル削減
定型化された設定を組み込んで、アプリで管理する設定をシンプルに
シンプルなコード
RequestからActionが呼ばれるまでの道のりできるだけシンプルに
Hibernate Validator
バリデーションに Hibernate Validator を使う
Java8 でコンパイル
少し速くなるかなぁ...
規約ベースはそのまま
欠かせない規約ベースURLマッピングは変わらず利用できるように

Lasta Diなら、の箇条書き

Lasta Di なら...

ポリシー

  • とにかく起動を速く
  • エラーメッセージ改善

アーキテクチャ

  • コンパイルスコープの依存ライブラリが、Javassist, slf4j, JTA のみ
  • servlet には依存していない (一部web系のものは、LastaFluteへ)
  • seasar の Logger は削除し、slf4j に移行 (まだ移行中 at 2015/10/01)
  • s2JDBC は完全削除
  • Dxo や Beans.copy() は完全削除
  • s2ClassBuilderを内包、redefinerという名前に
  • dicon じゃなくて Di xml, 拡張子は .xml, DTD宣言も変わっている
  • 組み込みの Di xml をリファクタリング、拡張しやすいように
  • ☆フィールドインジェクションのみサポート (回避策あり)

Di xml の Expression

  • Nashorn の Javascript で Di xml の expression を表現 (若干自由度下がる)
  • いざとなれば、パースエンジンを差し替えられる (OGNL や Groovy にすることもできる)
  • 三項演算子で new をしても、@ResourceのprivateフィールドでDIできる
  • include の condition で #exists('#path') で "もしあればinclude" ができる

事務的な話

  • ガンガンリファクタリング (s2という言葉はLaに変更, 一部内部的なものはLdiというprefixを付けたり)
  • 日本語のJavaDocは削除
  • Genericは頑張って付けた
  • Java8で増えたインターフェースのメソッドを実装 (一部空実装だが、特に問題ないと想定)
  • エラーメッセージは英語
  • エラーメッセージをDBFlute風に (ド派手エラー)
  • 起動時のログで、Di xml の階層がわかるように

LastaFluteなら、の箇条書き

LastaFlute なら...

ポリシー

  • 基本、トップページに書いてある通り (ですが、sAstrutsとの違いに焦点を当てるなら...)
  • Interceptorをあまり使わない (ActionHookを使う)
  • INとOUTは引数/戻り値で
  • できるだけネイティヴ型がつかえるように (FormでIntegerやLocalDateなど)

アーキテクチャ

  • デフォルトでは、Action は enhance されていない (起動スピードの向上)
  • Form は DI コンポーネントではない、フレームワークが new するが、単なる new
  • struts1 は外している (一部クラスはfork)
  • commons には依存していない
  • Validator は Hibernate Validator
  • JsPの機能は、lasta-taglib へ外だし
  • ConnectionPoolのログ機能を大強化
  • ログは、slf4j
  • Formでネイティヴ型を使えるように
  • 配列プロパティでOutOfMemory攻撃対応