Web✕Java - HTML5で進化したWeb標準を、Java技術でどう扱うのか?でStruts使ってる人へJSFの説明をしてきた #jjug #html5biz

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

使用したスライドは以下に

html5jえんぷら部の方々から共催しませんか?という形で頂いた勉強会にて登壇してきました。
周りの方々がすごい有名所の中、私が発表してよかったのかしら?と思いつつ、皆様の役に立てれば幸いです。

最後のお願いに関してはJSFにかぎらず、少なくともJavaでリッチなウェブアプリケーションを作るときにぜひお願いしたいことです。
特にメモリの量、必要量だけでなく、余っていると性能問題が出た時にJPAのL2キャッシュを有効にしたり、その他色々な所でキャッシュとかキャッシュとかキャッシュとかを有効にすることで速度を担保することもできるのでもしものときのためにぜひ十分な量の確保をおねがいします。
メモリなんて安いですよ?

Scala VS Java

HTML5の勉強会のはずが、いつの間にかJavaScalaかみたいな勉強会になっていました。*1

私は、JavaScalaを比べてJavaを選ぶことにした人なのですが、Javaを選んだ人としてなぜ選んだのかについてお話させていただきたいと思います。

Scalaのバージョン間の互換性はJavaに比べると格段に低い

Javaのバージョン間の互換性の低さのため、未だにJava5とかそれ未満とか使っている方々お疲れ様です。
Scalaに関してはJavaよりも互換性が格段に低いです。
バージョンあげることによりコンパイルエラーになってしまうことも多々ございます。

例えば、sbt*2 scala エラー バージョンで検索してみて下さい。
scalaのバージョンは、sbtのバージョンは〜という形でのエラー報告がたくさんあります。
Javaのバージョン間互換性は数ある言語の中ではトップレベルに高いのですが、それですら互換性が低いと敬遠されている方々が多い昨今、これは無理だなーと思いました。

Scalaを書ける人が少ない

こちらは当日に関西でScalaを使って開発している方と空リプを飛ばし合いました。

本当にScalaを書ける人は数が少ない。
どうやって人を探してくるのか。

一人だけで開発するのであれば全然良いのだけれども、仕事でするのは辛い。
そもそも開発まではいいけれども、誰が保守をしていくのか。
Scalaを書ける人間をどうやって一定数確保する?

システム開発は5年後に保守できることを想定してするべきでは?

開発"だけ"をしている人間は忘れがちだけれども、システムは開発期間よりも運用期間のほうがずっと長いです。
システムが減価償却されるのは自社利用だと5年間の定額法が多いのかな?
一度作ると5年間は使用しなければならない。
5年間保守ができますか?

先日JINS PCでStruts2の不具合により不正に侵入されるという事件がありました。

昨今のシステムは複雑化しています。
作った時には安全でも数年後に安全でないことが判ることもあります。
Scalaについてもきちんとバージョンアップをして最新版に追従する必要があると思っています。
Javaですらできていないのに厳しい。

実は業務システム特有の要件によりScalaが使われにくい?

業務システムは一度使うと5年使わなければならないです。
しかし、業務システム以外は?
例えば、ゲーム。
MMOとかでまれに数年以上遊び続けられるほど人気を博すゲームも有りますが、大抵のゲームは1年から2年もたないのではないかと思っています。
そういった用途であればScalaは良いのかもしれません。
Javaよりも早く開発ができて、ただし、寿命は短い。

Scalaを使うターゲット層はJavaを使ってる人間ではないのではないか

ゲームを作ってる人間とか、例えばphprubyを使っている人間へScalaをアピールしていくべきではないか。
型がないことによりphprubyとかでも最新のバージョンにアップデートが出来ないという話を伺います。
コンパイルエラーにより最低限の非互換を検知できるScalaは実は救世主となれるのでは?

まとめ

Groovyのこと、忘れないで下さい。

*1:明らかに自分が悪い

*2:scalaのビルドツール。Javaの人向けに説明するならmavenだと思っていただければ