Javaを久々に触った。
何と言うか、やっぱりJavaって堅いよな~。
そして、環境構築がやたら難しい。。。
と言う事をつらつら書いて行くので、多分つまらない記事です。はい。


分からなくてEclipseを結局3つ入れてしまった。
一つはスタンダード、一つはオールインワン。もう一つは会社内で配布しているパッケージ。ってか、社内で使ってる物があるなら初めから教えて欲しい。。。おかげで環境構築に手間取った。

まぁ、そう。ぼやくくらいJavaの環境構築って面倒。
Rubyで言うGemみたいなのないのかな?Mavenでも良いんだけど、、、あれって流行ってるのかな?


とりあえず久々に触ったのはSAStrutsを社内で拡張しているフレームワーク。
この思想自体は良いと思うし、ホットデプロイでサクサクコーディング出来るのは良い。しかもEclipseは快適。Rubyとは違って型があるので、簡易リファクタリングは自動的に行ってくれるしジャンプも正確!(インターフェースを使ってる奴は微妙だけど、SAStrutsは不要なインターフェースを作る必要が無さそうなのであんまり問題にならなかった。)

当時よりもインジェクションが進化してて、ちょっと感動した物もあった。(メソッド・アノテーションからインターセプターを呼べる機能が付けられてて、アノテーションを使ってActionにデータを設定するのがとても楽になってた。)

でもJDBCの部分は、正直微妙だったなぁ。。。
Javaと言う言語を使っている以上仕方ないんだろう。。。(Playもこの辺りは微妙だった。railsの仕様に慣れ過ぎ?)
あとEntityはHasManyとかの方が分かりやすい気がするなー、、、と個人的にはDB周りは正直使い難いと感じた。トランザクションを張るのも直感的ではないし。。。

でも、サービスって概念はJavaらしくて良いね。Railsだとビジネスロジックとか複数のモデルを操作するコードをどこに書けば良いか迷うけどSAStrutsではそんな心配要らないしね。

ちょっと分からないのが本番と開発環境の設定をどうやって変えるかが分からない。設定ファイルは有るけど、、、。
そう言う時にちょっと困るのがコミュニティの少なさ。
Railsだと海外も含めると大量の情報が手に入る(体系的に学べる本やページも多い)けど、SAStrutsの情報量は少ない。。。
それともJavaのフレームワークって独自のモノばかりなのかな?Struts以降でこれと言ったフレームワークは出てないのかな?

でも、JavaってPHPに並んで案件が多いんだよなぁ。。。不思議だ。Playなら分かる気がするけど、、、(JavaよりScalaやってみたいなぁ。。。)

色々書いたけど、Javaは何よりも良いところがある。

それは動作が軽快

なのだ。
まだ作り始めのせいからかも知れないが、やはりRailsよりは遥かに軽い。開発中もRailsはブレークポイント止めてる時に落ちる事があったけど、Javaではそんな事は皆無。ブレークポイント中にコードを返るとホットデプロイが走って再度実行してくれるし。
この点は本当に良い!


最後に残念だと感じたリスト。
・Get/Postを制御する仕組みがフレームワークで提供されていない。(@Executeの中でメソッドを指定出来ても良さそうなのに。)
・JSON等をサポートしていない。(もちろんjsonicとかを使えば良いんだけど、、、上記もそうだけど一部でAPIを使いたいとか思っても作れないし、AJAXやPJAXとかでサイトを作ろうと思うと自前で作り込む必要がある。)
・RESTがサポートされてない。(リソース管理とかする時にはRESTをサポートしてくれると楽なんだけどなぁ。)
・diconがあちこちにあってincludeされているので、読み難い。。。探し難い。。。(これは慣れの問題かも知れないが。。。ext.txtとかいまいち分からないし。。。多分これが環境毎の実行とかに関係あると思うけど。)
・インジェクションされているとコードが追い難い。。。(POJOなのは良いけど、、、Actionの前後の処理なんて@before/@Afterとかのアノテーションで実行出来るようにすれば良いのにいちいちインターセプターとかを作らないと行けないのは面倒だし読み難い。事前データをActionクラスに渡すのも一苦労。)

あと、全然関係ないけど、、、Eclipseの参照JarとTomcatの参照するJarの設定が違うのでEclipseでは動くけどTomcatでは動かない系で結構ハマった。(特にJDBCのインジェクションは本当にやられた。SAStrutsはjdbc.diconを参照するからEclipseではエラーが出なくても、Tomcatが参照するLib配下にJarを置く必要があるし。でもテストをする為には結局参照を通さないと落ちるし、、、このJarとTomcatの関係は知らないとハマりますね。

ってことで。気が向いたら比較表でも書くかな。
おやすみ~