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攻撃対応