Java EE6を使用してWebアプリケーションの開発を開始しています。
JSFで生成されたHTMLの複雑さに驚きました。つまり、単純なリンクにもjavascript処理コードが含まれています。私の意見では、これは使いやすさの問題です。ブラウザのジェスチャ(リンク上での「ctrl +クリック」など)が単に機能しないためです。また、そのコードを維持したり、jQueryなどのjavascriptフレームワークでUIデザインを微調整したりする必要がある場合は、これがさらに悪化する可能性があると思います。それは私を再構築します:Webforms vs ASP.NetMVC。単純さに対する複雑さ。
とにかく、これはJSFでの私の初めてです。だから私は本当にそれであなたの経験を読みたいと思います。
「よりシンプルなレンダリングエンジン」について尋ねるとき、「シンプル」が何を意味するのかを定義するのは難しいです。 JSFは非常にユニークな動物であり、Javaの世界でも同様の単純なものは他にありません。
JSFでの私の経験は非常に前向きであり、これはASP.NETでの開発に長年の経験を持つ人からのものです。学習曲線はまだ急であり、何らかの形式のカスタムJavascriptや、場合によってはカスタムコンポーネントがなければ、複雑なエンタープライズシステムが可能になるとは想像できませんが、私の意見では、ASP.NETよりも単純です。 はるかに軽い同様に。彼らは、ASP.NETの操作を非常に困難にする多くの問題に対処しました(たとえば、DOMの単純なクライアントID、XHTMLコンプライアンス)。
私は最近、Primefacesコンポーネント、標準のMojarraフェイスレット、1つのカスタムコンポーネント、およびコンポーネントフレームワークのバグに対するいくつかのJavascript /非表示の入力フィールドの回避策のみを使用してまもなく本番環境に移行するアプリケーションを開発しました。実装する必要のあるいくつかの回避策を除けば、驚くほど簡単でした。私は結果に非常に満足しています。利害関係者はそれを愛しており、次のプロジェクトで絶対に再び使用します。
チームを編成する際に、私の実際の経験から、経験豊富なWebアプリケーション開発者をプロジェクトのリーダーとして配置するのが最善であることがわかります。Javascript、CSS、およびJava Webテクノロジー。残りのチームは、わずかなガイダンスを持つエントリーレベルの開発者である可能性があります。
私は大規模なプロジェクトでJSFと協力してきました。 JQuery、通常のHTML/css/javascript、GWT、Gxtを使用した経験があります。そして、JSFは最悪だと言えます。バックエンドコードをフロントエンドコードから分離して独立させたい場合は、JSPを使用することはできません。それは、関心の分離を明確にすることなく、フロントエンドをバックエンドに結び付けます。 JSFのもう1つの問題は、頭を動かすのが非常に難しいことです。フロントエンドテクノロジー(javascript、html、cssなど)を使用して優れたAJAXページ)を作成するのは非常に簡単です。14歳の息子は学校でそれを行う方法を教えられます。JSFを使用して同じ効果を得るには非常に複雑です。リンクとして定義する方法を見てください:<h:commandLink value="New" immediate="true" action="#{projectUiService.showProjectCreate}" />
。そして、フォームアクションURLを指定する方法はありません。JSFマネージドBeanとナビゲーションセマンティクスを使用する必要があります。これは完全に新しいフロントエンドです。したがって、フロントエンドをスタイルアップしたり、JQueryを追加したりする場合でも、詰め込まれます。
ビルド環境とランタイム環境の構成も面倒です。 jarファイル間には非常に多くの相互依存関係があるため、JSF、Richfaces、およびSpring Jarsの適切な組み合わせがない場合、ビルドビルド環境からでもアプリケーションを取得することはできません。これに関するヒントが必要な場合は、Maven検索サイトにアクセスしてクラスjavax.faces.component.UIViewRoot
を探してください。みんなと彼らの犬はそれを持っています。また、javax.facesとcom.Sun.facesにも注意してください-違いは何ですか?誰が知っていますが、彼らは一緒に働きません。また、一部のバージョンは、RichFacesの特定のバージョンでのみ機能します。
私のアドバイス-よく明確にしてください。アプリにスプリングバックエンドと通常のHTMLフロントエンドを提供します。 JSFでまともな大規模なエンタープライズ規模のアプリケーションを作成する方法はありません。複雑すぎます。最終的には、維持するのがほぼ不可能な巨大なモノリシックコードベースになります。
JSFのようなコンポーネントベースのフレームワークが実際に必要ですか、それともより伝統的なWebリクエストベースのMVCフレームワークを探していますか?もしそうなら、 Apache Struts2 または Spring MVC を調べてみてください。 Spring MVCでは、コアSpringライブラリを使用する必要があります。
私はJSFを3年間使用していますが、JSFの最も強力な点は、ブラウザー(フォーム入力またはアクション)のhttp要求とJavaの間の通信を抽象化することです。
JSFには、ICEfaces、RichFaces、ADF Faces、PrimeFacesなどの豊富なライブラリがあり、十分な量の豊富なコンポーネントを提供します。
JSFは、Webアプリケーションの開発をデスクトップアプリケーションに近づけようとしています。これは、Webアプリケーションの最も一般的なタスク(テクノロジーに関係なく)に対処し、ライフサイクルを使用してそれらを自動化します。
ただし、コンポーネントの動作とは異なる特定の動作が必要な場合は、いくつかの回避策を作成するか、独自のコンポーネントを作成する必要があります(複合コンポーネントを除いて難しい場合があります)。
JSを正常に統合しましたJavaでアクションをトリガーする必要がなかったタスクすべてのチェックボックスを選択したり、ページの一部を非表示/表示したりします。
JSFは非常に簡単ですが、非常に強力であり、一部のタスクには特定の専門知識が必要です。
JSFの最後のバージョンである2.0は、そのPOSTの性質のために、JSFが抱えていた一般的な問題に対処しているので、今では非常に満足しています。
ctrl + clickなどのユーザージェスチャに関して、JSFのWebアプリケーションの動作は通常のジェスチャとは少し異なり、[戻る]、[進む]、[更新]ボタンが期待どおりに機能しない場合があります。しかしねえ、素晴らしいWebアプリケーションは同じ振る舞いをします:Ctrl +クリックで Paypal ..または戻るボタンを Vodafone.ro で試してください
HTMLを完全に制御したい場合は、プレーンJSPを使用してください。しかし、巨大なWebアプリケーションがある場合、JSFはRapid Application Development(RAD)に適したオプションです。
Java EE?のより単純なレンダリングエンジンを知っていますか?
JSF IS主流のプレゼンテーション層のための最も強力なテクノロジーJava EE。これは、「複合コンポーネント」の導入後にのみ実現しました。ただし、あまり知られていません- HybridJavaソリューションはそれほど強力ではありませんが、JSFよりも単純です。