質問
JSPとVelocityのより良い点 -パフォーマンス - 使いやすさ -再利用可能なコンポーネントの作成のしやすさ -オープンソースのサードパーティの可用性 -IDEサポート
解決
速度の利点:
- ビジネスロジックからのビューの厳密な分離
- グラフィックデザイナーが理解できるシンプルな構文
他のヒント
@Vartec: 「ビジネスロジックからのビューの厳密な分離」とは思わない。 jspには存在しない速度機能です。 jspでビジネスロジックを(多かれ少なかれ)実行できますが、まったくお勧めできません。しかし、構文に関するあなたの意見には同意します。
パフォーマンス
JSPはJavaにコンパイルされているため、速度が速くなるとは思いません。 (自分でベンチマークを行っていない)
使いやすさ
設計者向け:速度 プログラマー向け:(IMHO)jsp、コードに近いため
再利用可能なコンポーネントの作成の容易さ
JSPには多くのコンポーネントがあります Velocityにはコンポーネント自体はありません(コンポーネント指向ではありません)
オープンソースのサードパーティの可用性
私は、速度よりもはるかに多くのプロジェクトをJSPまたはJSP関連技術を使用して見ました。たぶん速度が本当に低いレベルだから...:-)
IDEサポート
jspには多くのツールがあります。特に、Eclipse jbossプラグイン/ツールスイートには優れたjspエディターがあります。
Velocityのプラグインは、ほとんど機能的または非常に基本的ではありません(構文の強調表示がある場合は幸運になります)
更新 テンプレートエンジンを探している場合は、thymeleafをご覧になることをお勧めします。速度に匹敵するほど軽量であり、テキストベースのテンプレートを数行のコードでテンプレート化するためだけに使用したり、たとえばwebapp内でフル機能のテンプレートエンジンとして使用したりできます。
以下はFreemarkerに関するものですが、おそらく比較はおそらく関連しています。
これら2つの技術の開発のこの時点で、どちらか一方を選択する主な理由は次のとおりです:
- あなたが必要とする特定のものがあり、それは一方にあり、他方にはない
- ビュー開発者がJavaスクリプトレットをJSPページに配置できないようにする
- 開発者は、他の開発者よりも一方の開発者の方が快適です
それほど大きな影響がないと思われる理由:
- スピード。一般的なJava EEアプリには非常に多くのレイヤーがあり、ビューレンダラーがかかる数ミリ秒よりもはるかに大きな影響を与えます。実際、これはおそらく、私のアプリがサブパーを実行している場合に取り組む最後のレイヤーです。
- IDEのサポート。 JBoss ToolsはFreemarkerエディターを提供し、JSPツールはよく知られています。
- 構文。 JSP 2とFreemarkerは、ELとJSTLのために、多くの基本的な操作に対して実質的に同一の構文を持っています。
フリーマーカーの例:
<#list foos as foo>
<tr>
<td>${foo.field1}</td>
<td>${foo.field2}</td>
<td>
<#list foo.childObjects as child>
<#if child.name == 'bar'>
${child.value}
</#if>
</#list>
</td>
</tr>
</#list>
JSP-EL-JSTLの例:
<c:forEach items="${foos}" var="foo">
<tr>
<td>${foo.field1}</td>
<td>${foo.field2}</td>
<td>
<c:forEach items="${foo.childObjects}" var="child">
<c:if test="${child.name == 'bar'}">
${child.value}
</c:if>
</c:if>
</td>
</tr>
</c:forEach>
速度以上の FreeMarker 。 JSPでは、 pojo階層のランタイムディスパッチを使用できません。そして、すべてが静的に入力されるため、苦痛です。さらに、JSP2.0カスタムタグ(100〜150以上など)を多数作成すると、依存関係を効率的に解決するためのJasperの非効率性により、開発と展開のサイクルが大幅に遅くなります。
一方、JSPは優れたツールをサポートしています。
JSPコンパイルの参照が遅い:
http://www.mailinglistarchive.com/users@tomcat.apache.org/msg10786.html
テンプレートエンジンの使用に焦点を当てます。これが私が最も経験していることだからです。
それは、あなたが本当にやりたいことによって異なります。サーブレットとVelocity(またはFreeMarker)を組み合わせることで、ロジックとプレゼンテーションを非常に適切に分離できます。テンプレートをテストするのは困難です。HTML(またはその他の出力形式)が正しいかどうかを判断するには、テンプレートを評価する必要があるからです。 JSPの場合、これは選択したIDEで実行できます。
テンプレートの大きな利点は、これらをアプリケーションの外部に完全に保存し、アプリケーションの実行中に更新することさえできることです。これは、JSPで行うのが少し難しいことですが、ホットデプロイメントはかなり近づいています。
再利用可能なコンポーネントは、テンプレートエンジンのインクルード機能を使用して作成できます。
上記のVelocityの利点は、エンジニアの観点からいくつかの非常に重要なことを見逃しています:
- ビジネスロジックからのビューの厳密な分離(上記)
- グラフィックデザイナーが理解できるシンプルな構文(上記)
- 後で再訪する悪夢の少ないコンパクトなコード、参照 例 リンク
- 非サーブレットコンテナの展開は、どこにでも簡単に展開できることを意味します
最後の2つは、JSPと比較してVelocityを本当に便利にします。
Velocityがすべての面でJSPと競合できるかどうかはわかりませんが、Velocityの方が高速ではるかに簡単です。 JSPより5%多い。
速度が優れている 多くのアプリケーション分野に適応します テンプレートデザイナーにシンプルで明確な構文を提供します 開発者向けのシンプルなプログラミングモデルを提供します テンプレートとコードは分離されているため、それらを独立して開発および保守できます Velocityエンジンは、Javaアプリケーション環境、特にサーブレットに簡単に統合できます。 Velocityは、テンプレートがコンテキスト内のデータオブジェクトのパブリックメソッドにアクセスできるようにします