-パフォーマンス-使いやすさ-再利用可能なコンポーネントの作成のしやすさ-オープンソースのサードパーティの可用性-IDEサポート
速度の利点:
@Vartec:「ビジネスロジックからのビューの厳密な分離」は、jspに存在しない速度機能であるとは思わない。ビジネスロジックはjspで(多かれ少なかれ)実行できますが、お勧めしません。しかし、構文についてはあなたの意見に同意します。
パフォーマンス
JSPはJavaにコンパイルされているので、速度が速くなるとは思いません。 (自分でベンチマークを行っていません)
使いやすさ
デザイナー向け:速度プログラマ向け:(IMHO)jsp、コードに近いため
再利用可能なコンポーネントの作成が容易
JSPには多くのコンポーネントがありますVelocityにはコンポーネント自体がありません(コンポーネント指向ではありません)。
オープンソースのサードパーティの入手可能性
速度よりも、JSPまたはJSP関連のテクノロジーを使用するプロジェクトの方がはるかに多く見られます。たぶん、ベロシティが本当に低いレベルだから... :-)
IDEサポート
Jspにはたくさんのツールがあります。特に、Eclipse jbossプラグイン/ツールスイートには、優れたjspエディターがあります。
Velocityのプラグインはほとんど機能的または基本的ではありません(構文の強調表示があればラッキーになります)
更新現在テンプレートエンジンを探している場合は、thymeleafを確認することをお勧めします。それは速度に対して比較的軽量であり、数行のコードでいくつかのテキストベースのテンプレートをテンプレート化するために使用するか、またはWebアプリケーション内などのフル機能のテンプレートエンジンとして使用できます。
以下はFreemarkerに関するものですが、比較はおそらくまだ適切です。
これらの2つのテクノロジーの開発のこの時点で、どちらか一方を他方より選択する主な理由は次のようです。
それほど影響がないと思われる理由:
Freemarkerの例:
<#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/[email protected]/msg10786.html
テンプレートエンジンの使用に重点を置きます。これは、私が最も経験していることです。
それはあなたが本当にやりたいことに依存します。サーブレットとVelocity(またはその点ではFreeMarker)を組み合わせると、ロジックとプレゼンテーションを非常に適切に分離できます。テンプレートは、HTML(またはその他の出力形式)が正しいかどうかを判断できるようにテンプレートを評価する必要があるため、テストが困難です。 JSPの場合、これは、選択したIDE=で行うことができます。
テンプレートの大きな利点は、これらをアプリケーションの外部に完全に保存でき、アプリケーションの実行中にテンプレートを更新できることです。これは、JSPで行うのが少し難しいですが、ホットデプロイメントはかなり近くなっています。
テンプレートエンジンのインクルード機能を使用して、再利用可能なコンポーネントを作成できます。
上記のVelocityの利点は、エンジニアの観点からいくつかの非常に重要な点を逃しています。
最後の2つは、JSPと比較してVelocityを本当に便利にします。
Velocityがあらゆる面でJSPと競合できるかどうかはわかりませんが、Velocityの方が高速ではるかに簡単です。Velocityの効率は、複雑なWebページの場合は35〜45%増加しますが、削減される可能性がありますが、それでも5%増加しますJSPより。
Velocityは優れています多くのアプリケーション領域に適応しますテンプレートデザイナにシンプルで明確な構文を提供します開発者にシンプルなプログラミングモデルを提供しますテンプレートとコードは独立しているため、独立して開発および保守できますVelocityエンジンは任意のアプリケーションに簡単に統合できますJavaアプリケーション環境、特にサーブレットVelocityにより、テンプレートはコンテキスト内のデータオブジェクトのパブリックメソッドにアクセスできます