「Web x Java - HTML5で進化したWeb標準を、Java技術でどう扱うのか? -」に参加してきました。

久しぶりにセミナに参加してきたのでメモ。

今のWeb標準Struts/Javaの問題(仮)

Strtusが対応していないもの。

Strutsが対応していない!
→ 独自flameworkの開発!
→ ベンダー(SIer)ロックイン&技術のガラパゴス化

# カスタムタグ作りすぎて、flameworkに沿ったJSPの書き方を
# 一から覚え直したりね...。


Web界はHTML5ガラパゴス化(ブラウザ間の差異)から脱出(標準化)を進めている。
→ サーバサイド(Java)側はどうする???

Java EE の概要と HTML 5 の取り組み

10年前はStruts+Spring+Hibernate(通称SSH)が流行りだったが今はどうか。


寺田さんがもうやめましょうと訴えたいのは以下の2つ。

  • Struts(1.x はEOL)
  • Tomcat(理由はよくわからんけどGlassFishがあるから?EEのWebプロファイルにしか対応していないから?)

TomcatはともかくStrutsは避けたいな。


2012年のEclipse ServeyでもStruts1.x, 2.xを使いたい人は殆どいなかった。


Struts+Spring+Hibernateはメンテナンスコストが大!
今後Strutsでバグが出たら、誰がその修正の影響範囲を調査・試験する??
→ その点、Java EE ならJSFCDIJPAをトータルで管理してますよー。
JBossの保守はサポートしてくれるらしい。
SAStrutsStrutsにバグ出たら治すって言ってた気がする。
# それなりに保守される上位flameworkを使っていれば平気?


Java EE 7ではWebSocketやJAX-RSが標準装備されているので、viewとmodelをサーバ側で結合せずに、別々に取得することができる(modelだけ取得可能)。


WebSocket vs JAX-RS
→WebSocketはHTTP Headerなどを送信するのがはじめの1度のみなので、パフォーマンス的にはWebSocketが有利か。


Java EE 7の良い所

  • JMSの実行が簡単になった。
  • JAX-RSがWebプロファイルに入った。
  • Java EE上でスレッドを作れるようになった。

# 作ろうと思ったことがなかった...。
# 今までは作るとAPサーバと別プロセスにスレッドができて管理しづらいらしい。

Strutsから移行する人のためのJSF基礎


なぜJSF


作れるUI

# 普通のJavaScriptからのAjaxは使えるのかな?
# その時はJAX-RSでも使えばよいのかしら。


拡張ライブラリ

拡張ライブラリ使用上の注意
「※ただし、ブラウザ最新版に限る。」

移行ポイントの詳細はスライドを参照。

  • managed-baenの定義はXMLでもアノテーションでも。
  • JSPと違ってServletに変換されない→エラー時はStackTraceにXHTMLの行数が表示。
  • 画面側でのvalidationを標準装備。

# サーバ側でのvalidationとエラー時の表示は共通化できるのかしら?

  • RequestProcessor の processXXX 系の処理は全てPhaseListenerで外から実装できる。


JSF利用時の注意

  • JSF 1.x はStrutsよりヤバイ。
  • XHTMLはタグライブラリも良いけど、そのままブラウザで見れるjsfc属性を使うのがオススメ。ただし、EE 6とEE 7で属性名が違う。
  • 独自セッション管理するな!(flameworkがセッションを使いまくります。)
  • メモリを大量に積んでおけ!Strutsより倍から10倍だ!(flameworkがセッションを使いまくります。)

JavaプログラマのためのScalaプログラミング

JavaからScalaへ ~ScalaでWeb開発はこう変わる~

Scala系は気が向いた時にでも。全く知らなかったので勉強になりました。