デファクトアーキテクトから考える今のJavaに足りないところ

なんとなくWebサイトを構築する際の各層の現在のJavaデファクトアーキテクチャってなんだろうと考えてみた。


・ビュー
 JSFJSP


・コントロール
 JSFJAX-RS


ビジネスロジック
 EJB


・データベース
 JPA


・テスト
 JUnit


・ロギング
 Logging API


こうやって考えてみるとビューのJSP、テスト、ロギングあたりが弱い印象。


JSPについて
JSFについてはFaceletsが導入されてかなり良くなったけどJSPはやや置き去りにされている感がある。Javaは記載が多い分テンプレートとあまり相性が良くないのでタグリブとかELとかで頑張るしか無いんだよね。せめてTilesっぽい機能がデフォルトでほしいところ。GWTっぽい方向性もありだけど標準としてはやり過ぎな感はしなくもない。


○ロギングについて
Logging APIが標準で導入されたものの使っているのはほとんど見た事無いなぁ。Log4jLogbackデファクトになっているのが現状。Java8のラムダ対応とかでAPI見直しついでに機能アップしてくれないだろうか。


○テストについて
テスト周りは標準化としてはほとんど放置に近い気がしている。JUnitとか既にJavaSEに取り込まれていてもおかしくないレベルだと思うし、組み込み可能コンテナの提供でJUnitEJBが呼び出せるようになったけど起動に時間かかるし微妙な印象。JavaEEではEAR内にテスト専用のJARファイルを組み込んでおくとデプロイ時に自動テスト実施してコンテナがレポート表示してくれるくらいやってほしいところ。コンテナ上であればリソースも本物が使えるはずだしそういう方向性(コンテナにCI内包)はありじゃないかな。


とか考えるとまだJavaが解決しなければいけない課題は少なくないな。