今日はJSF(JavaServer Faces)に関する雑記です(^^;
自分が今までJSFを開発で触れてみて思ったことや海外でのJSFについて等、つらつらと書いてみた感じです。
JSFの利用状況って…
数日前にtwitter上の会話からJSFってどれくらい利用されているんだろう?、的な流れから、最終的に@aoetkさんがJSFが使われた一般向けWebサイトをリサーチされ、まとめられていました。
RichFacesなどが実際に使われているサイトをみて驚いたと同時に、そのサイトが結構色々なコンポーネントを利用していて、かつ、Ajaxも多々利用していたため、何か個人的に感動しました(^^;
というのも「ぶっちゃけJSFってどれくらい使われてるの!?」というもやもや感があったからです。一般向けサイトに限らず、現場の開発レベル含めてです。
去年(2012年)の8月頃、JavaでのWeb開発話が部内で提案され、その調査担当となったとき、昨今のJavaでのWeb開発フレームワークのスタンダードは何なのか?(J2EE,Struts,Spring…etc)、そんな初歩的な所を把握することから難しかった記憶があります(^^;色々ありすぎて
たまたまその頃、Oracleの無料セミナーがあって、日本Javaエバンジェリストである寺田さんの話があり「Java EE6の良さ」みたいな話を聞いて「なるほど!」と思って、速攻で金魚本を買いました。
買って読んでみると、決して使いやすいとは言えなかったJ2EEが、色々なフレームワークの良い所を取り入れ、Java EE6なるものが出来たと。ふむふむ。
こんな立派な書籍もあるし、新しく始めるならば本家を信じましょう、と取り組み始めました。
が、サンプルでWeb画面を作ろうとして、いきなり迷いが生じました。
その頃の自分はJava初心者でしたが(あ、今もです…)、「JSP」くらいはさすがに聞いたことがあったし、それがJavaでのWeb画面では主流だと思ってました。それを象徴するように、金魚本以外のJavaのWeb開発系書籍を立ち読みすると、ほとんどJSPです。
でも金魚本を読み進めると、JSF(Java Server Faces)なる技術がWeb画面系の中心になってきている様子。
うーむ、一体何がどう違って、今後どうなるんだ…。と。
で、また色々Oracleのセミナー行ったり、Javaコミュニティのイベント行ったりして話を聞くと寺田さんがJava EE6の画面開発の話になると「JSF」を中心に話をされていて、やっぱりJSF推しなんだなぁ、と。
そんなこんなで、Java EE6の開発、画面系はJSFを採用しました。
そして、色々調べたりしていた頃、Java EEのアドベントカレンダーへお誘いの声を頂き
PrimeFacesを使ったJSFリッチユーザインタフェース入門 〜ちょっと便利なコンポ達〜
なるものを書かせて頂きました。
その後、実際の開発が始まり、主にPrimeFacesを利用したJSF開発を進め、現在進行形となっています。
始めてみると、直観的というか何というか、とても使いやすく、JSFいいなぁ、と個人的には思っていました。
Ajaxも初めてでしたが、非常に簡単に扱えるし、jQueryを直接触ると少し難しそうな面もPrimeFacesにラップされることで簡単に扱えるようになっていて、(JSF自身のライフサイクルの複雑さはあるものの)、全体的には良いと思っています。
が、いかんせん日本語での情報が少な目なのと、なにぶんJava EEが初めてだし、JSPをほとんど知らないままJSFを触ったので、あちこちで聞く「JSFいまいちだよね」的な話に不安を感じたりもしました(^^;
それは未だに感じることがあるのですが、一方で実際に開発を進めてきた結果、海外の豊富な情報量をみたことで安心した面もあります。※
※ただ一点、よく言われる性能面(サーバサイドでの処理時間やメモリ)は実運用をまだしていないので不安が残っています。経験して不安が解消されたら追記します。
最近ではもっぱらJSF関連でわからないことがあると、英語で調べて(例えば複合コンポーネントとかは最初からcomposite componentでググる)いるのですが、大体Stack Overflowか、各コンポのコミュニティforumで解決されており、英語を頑張って読むことで解決しています。
それだけ海外には情報が豊富というか、なんというか。
ちなみにちょっと調べてみたのですが、Stack Overflowでは、JSP、JSFそれぞれタグ付けされているのですが、各々のタグ付けされた質問件数は2013/5/5現在以下になっています。
JSPでタグ付けされた質問件数
JSFでタグ付けされた質問件数
当然JSPのほうが多いのですが…でも後から出てきたJSFでもこれだけの件数があるって結構すごいんじゃ…と思ったり(^^;
逆に使いにくくて質問が多いだけなんじゃ、って意見もありそうですが(苦笑)
ちょっと前にPrimeFacesのリーダーであるMr.Cagatay Civiciさんが以下つぶやきされていて
リンク先はこんな図になっています(2013/5/5現在でみると)。
JSF向けのリッチコンポーネントを開発している主なFaces系のGoogle検索トレンドの結果です。(青がPrimeFaces、赤がRichFaces、黄色がIceFaces)
おそらくPrimeFacesが独走、ということを遠まわしに表現したかったっぽいですが(^^;
ただ、これに近い比較は海外だと色々あって、それだけよく使われてるんだなぁ、と思ったり。
ちなみに、Stack Overflowで各々の名称を検索してみると
PrimeFacesで検索
RichFacesで検索
あれ、そんなに多くないじゃん!と思うかもしれませんが、コミュニティのForumをみると
なんとPrimeFacesだけで約9万件もの数が。実際、良い情報がかなりあって、自分達が開発で行き詰ったときも、(英語での検索さえ上手くいけば…)解決率が高いです。
RichFacesではPrimeFaces比べれば少ないですが、それでも万単位。そして、今気づいたのですが、サイトが日本語!!!(^^;(投稿は英語ですけどね…)
まとめ
あまりまとまりのない文章になりましたが、JSFの開発はPrimeFacesなどを上手く利用すれば、リッチな画面を割と手軽に構築できるし、情報は海外に豊富にあるので(確かに調べて時間かかったりはしますが)何とか解決できるケースが多いと思います(^^)実際に自分も試金石ですが;
ただ心の中では、ちゃんと他の技術と比べてみたい思いもあるので、今の開発がひと段落したら、色々トライしてみたいと思っています。