JSP と速度のどちらが優れているか - パフォーマンス - 使いやすさ - 再利用可能なコンポーネントの作成の容易さ - オープン ソースのサード パーティの可用性 - IDE サポート
8 に答える
速度の利点:
- ビューとビジネス ロジックの厳密な分離
- グラフィックデザイナーが理解できるシンプルな構文
以下は 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>
Velocity またはそれ以上の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 がすべての面で JSP と競合できるかどうかはわかりませんが、Velocity の方が高速で、はるかに簡単です。Velocity の効率は、複雑な Web ページの場合は 35 ~ 45% 向上します。削減される可能性がありますが、それでも 5% 向上します。 JSPより。