平山さん
原です
追加情報ありがとうございます。
> ・1系で作ったものを後で2系で作り変える計画をしているわけではないです。
はい、確かに2.0から2.4とかならまだしも、1系からはかなりアップデートが
しんどそうという気がします。フォーム周りなどまったく考え方が違う気がするので。
ただ、1系は派生フレームワークが作られるほど根強い人気があるので、
やみつきになる感は高いです。
個人的な印象
・1系 :
Javaで書いていく割にはいろいろとよしなにやってくれる。
・2系 Java :
Viewに至るまでとにかく型で整合性をつけていく。整ってしまえば、固くて安心感ある。
JsonベースとかのAPIサーバを作る場合はすごく向いている気がする
> Javaでstrutsに代わる受け皿
ここ、実はちょっと気になってたポイントでして、今までJavaが担ってきたような部分を
置き換える場合、用途によってはもっとゆっくりとバージョンアップしていく
フレームワークのほうが向いているのかもという気もしたりします。
作るもの、そしてそれを何年つかうのかとかによるのだと思いますが。。
> 今なら2系でもJavaで全然いけるよーというのであれば2系でもいいのかな
Java版も実際コードの中をさぐっていくと結局ScalaでできたPlayの土台部分に
たどりつくので、あとは載っているJava用のAPIの部分の出来ということに
なると思います。以前はPlayの中に一枚岩のようにORMも組み込まれていましたが
外部プラグイン化なども進み、自由に組み合わせて使えています。
ベンチマーク結果などを見ると、Java版のほうが若干遅いのですが、これは
Scalaの上にAPI層が薄くいるので、そのオーバーヘッドもあると思っています。
ちなみに、Scalaのコードを混ぜることができるので、コレクションの操作のとこだけは
Scalaのコードで楽をしてたこととかあります。
> 2.4が出たからといって2.3で作ったものを何とかしないといけないわけではないとは思っていますが
実際、Play 2.0系や2.1系などをバグフィックスなどを当てつつ運用しているものも
ありますし、必要になり次第きちんと移行時間をつくって移行していけば
大丈夫なのではないでしょうか。
2.4系までは、コントローラのメソッドをstaticメソッドとして書いていく方式だったの
ですが、2.4系からDIが本格的に組み込まれ、インスタンスメソッドとして書いていく形
が使えるようになっています(従来のも使えるが、おそらくDIベースが主流になりそう感ある)
なので、やるならこの境界の違いがあるかなあと。
ちなみに1系でもコントローラはstaticメソッドベースです。