web-dev-qa-db-ja.com

JSPとVelocityのどちらが良いですか?

-パフォーマンス-使いやすさ-再利用可能なコンポーネントの作成のしやすさ-オープンソースのサードパーティの可用性-IDEサポート

34
flybywire

速度の利点:

  • ビジネスロジックからのビューの厳密な分離
  • グラフィックデザイナーが理解できる簡単な構文
19
vartec

@Vartec:「ビジネスロジックからのビューの厳密な分離」は、jspに存在しない速度機能であるとは思わない。ビジネスロジックはjspで(多かれ少なかれ)実行できますが、お勧めしません。しかし、構文についてはあなたの意見に同意します。

パフォーマンス

JSPはJavaにコンパイルされているので、速度が速くなるとは思いません。 (自分でベンチマークを行っていません)

使いやすさ

デザイナー向け:速度プログラマ向け:(IMHO)jsp、コードに近いため

再利用可能なコンポーネントの作成が容易

JSPには多くのコンポーネントがありますVelocityにはコンポーネント自体がありません(コンポーネント指向ではありません)。

オープンソースのサードパーティの入手可能性

速度よりも、JSPまたはJSP関連のテクノロジーを使用するプロジェクトの方がはるかに多く見られます。たぶん、ベロシティが本当に低いレベルだから... :-)

IDEサポート

Jspにはたくさんのツールがあります。特に、Eclipse jbossプラグイン/ツールスイートには、優れたjspエディターがあります。

Velocityのプラグインはほとんど機能的または基本的ではありません(構文の強調表示があればラッキーになります)

更新現在テンプレートエンジンを探している場合は、thymeleafを確認することをお勧めします。それは速度に対して比較的軽量であり、数行のコードでいくつかのテキストベースのテンプレートをテンプレート化するために使用するか、またはWebアプリケーション内などのフル機能のテンプレートエンジンとして使用できます。

43

以下はFreemarkerに関するものですが、比較はおそらくまだ適切です。

これらの2つのテクノロジーの開発のこの時点で、どちらか一方を他方より選択する主な理由は次のようです。

  1. あなたが必要とする特定のものは一方にあり、もう一方にはありません
  2. ビューの開発者がJavaスクリプトレットをJSPページに入れることを禁止します。
  3. 開発者はどちらか一方がより快適です

それほど影響がないと思われる理由:

  1. 速度。典型的なJava EEアプリには、ビューレンダラーがかかる数ミリ秒よりもはるかに大きな影響を与える非常に多くのレイヤーがあります。実際、これはおそらく最後のレイヤーです。私のアプリが十分に機能していない場合に取り組みます。
  2. IDEサポート。 JBoss ToolsはFreemarkerエディターを提供し、JSPツールはよく知られています。
  3. 構文。 EL 2とJSTLのため、JSP 2とFreemarkerは多くの基本的な操作に対して実質的に同じ構文を持っています。

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>
11
atrain

速度以上 FreeMarker 。 JSPでは pojo階層のランタイムディスパッチ を使用できず、すべてが静的に型指定されているので面倒です。さらに、多くのJSP2.0カスタムタグ(たとえば100〜150以上)を作成すると、依存関係を効率的に解決するためのJasperの非効率性により、開発とデプロイメントのサイクルが大幅に遅くなります。

一方、JSPは優れたツールをサポートしています。

遅いJSPコンパイル参照:

http://www.mailinglistarchive.com/[email protected]/msg10786.html

http://marc.info/?l=Tomcat-dev&m=119377083422720&w=2

8
cherouvim

テンプレートエンジンの使用に重点を置きます。これは、私が最も経験していることです。

それはあなたが本当にやりたいことに依存します。サーブレットとVelocity(またはその点ではFreeMarker)を組み合わせると、ロジックとプレゼンテーションを非常に適切に分離できます。テンプレートは、HTML(またはその他の出力形式)が正しいかどうかを判断できるようにテンプレートを評価する必要があるため、テストが困難です。 JSPの場合、これは、選択したIDE=で行うことができます。

テンプレートの大きな利点は、これらをアプリケーションの外部に完全に保存でき、アプリケーションの実行中にテンプレートを更新できることです。これは、JSPで行うのが少し難しいですが、ホットデプロイメントはかなり近くなっています。

テンプレートエンジンのインクルード機能を使用して、再利用可能なコンポーネントを作成できます。

3

上記のVelocityの利点は、エンジニアの観点からいくつかの非常に重要な点を逃しています。

  • ビジネスロジックからのビューの厳密な分離(上記)
  • グラフィックデザイナーが理解できる単純な構文(上記)
  • 後で再訪するのはそれほど悪夢ではないコンパクトなコード、 例のリンク を参照してください
  • 非サーブレットコンテナのデプロイは、どこにでも簡単にデプロイできることを意味します

最後の2つは、JSPと比較してVelocityを本当に便利にします。

1
s.k

Velocityがあらゆる面でJSPと競合できるかどうかはわかりませんが、Velocityの方が高速ではるかに簡単です。Velocityの効率は、複雑なWebページの場合は35〜45%増加しますが、削減される可能性がありますが、それでも5%増加しますJSPより。

0
Rajesh Chowdary

Velocityは優れています多くのアプリケーション領域に適応しますテンプレートデザイナにシンプルで明確な構文を提供します開発者にシンプルなプログラミングモデルを提供しますテンプレートとコードは独立しているため、独立して開発および保守できますVelocityエンジンは任意のアプリケーションに簡単に統合できますJavaアプリケーション環境、特にサーブレットVelocityにより、テンプレートはコンテキスト内のデータオブジェクトのパブリックメソッドにアクセスできます

0
amit prasad