web-dev-qa-db-fra.com

JSP vs Velocity, quoi de mieux?

Quoi de mieux entre JSP et vélocité dans - Performance - Facilité d’utilisation - Facilité de création de composants réutilisables - Disponibilité de tiers open source - Support de IDE

33
flybywire

Avantages de Velocity:

  • séparation stricte de la vue de la logique métier
  • syntaxe simple compréhensible par les graphistes
19
vartec

@Vartec: Je ne pense pas que la "séparation stricte de la vue de la logique métier" soit une fonction de vitesse qui n'est pas présente dans jsp. Vous pouvez créer une logique métier dans jsp (plus ou moins), mais ce n’est pas recommandé du tout. Mais je suis d'accord dans votre point concernant la syntaxe. 

Performance

JSP est compilé en Java, je ne pense donc pas que la vélocité soit plus rapide. (je n'ai pas fait de repères moi-même)

Facilité d'utilisation

Pour les concepteurs: vélocité Pour les programmeurs: (IMHO) jsp, car il est plus proche du code

Facilité de création de composants réutilisables

JSP a beaucoup de composants Velocity n’a pas de composant lui-même (pas orienté composant)

Disponibilité de tiers open source

J'ai vu beaucoup plus de projets utilisant les technologies JSP ou liées à JSP que Velocity. Peut-être parce que la vélocité est vraiment très basse ... :-)

IDE support

Il existe de nombreux outils pour jsp. En particulier, la suite de plug-in/tool Eclipse jboss a un bon éditeur jsp.

Les plugins pour Velocity ne sont généralement ni fonctionnels ni assez basiques (vous aurez de la chance si vous avez la coloration syntaxique)

Mise à jour Si vous recherchez un moteur de gabarit maintenant, je vous conseillerais de jeter un coup d'œil à Thymeleaf. Il est comparativement léger à la vélocité et peut être utilisé uniquement pour modéliser des modèles de texte avec quelques lignes de code ou utilisé comme moteur de création de modèles complet, par exemple dans une application Web. 

42

Ce qui suit concerne Freemarker, mais les comparaisons sont probablement toujours pertinentes.

À ce stade du développement de ces deux technologies, il semble que les principales raisons de choisir l'une plutôt que l'autre sont les suivantes:

  1. Il y a quelque chose de spécifique dont vous avez besoin qui est dans l'un et pas l'autre
  2. Vous souhaitez empêcher les développeurs de vues de placer des scriptlets Java dans des pages JSP
  3. Vos développeurs sont plus à l'aise dans l'un que dans l'autre

Raisons qui ne semblent pas avoir autant d'impact:

  1. La vitesse. Dans une application Java EE typique, de nombreuses couches ont un impact beaucoup plus important que quelques millisecondes. En fait, c'est probablement la dernière couche à laquelle je m'attaquerais si mon application affichait des performances médiocres.
  2. Support IDE. JBoss Tools fournit un éditeur Freemarker et les outils JSP sont bien connus.
  3. Syntaxe. JSP 2 et Freemarker ont une syntaxe pratiquement identique pour de nombreuses opérations de base, en raison de EL et JSTL.

Exemple de 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>

Exemple 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>
10
atrain

Velocity ou même mieux FreeMarker . Dans JSP, vous ne pouvez pas avoir la répartition à l'exécution pour les hiérarchies pojo et tout est statiquement typé, ce qui est pénible. De plus, si vous créez de nombreuses balises personnalisées JSP2.0 (disons plus de 100 à 150), votre cycle de développement-déploiement ralentira considérablement en raison de l’inefficacité de Jasper pour résoudre efficacement les dépendances.

D'autre part, JSP dispose d'un excellent support d'outils.

références de compilation JSP lentes:

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

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

8
cherouvim

Je vais me concentrer sur l'utilisation d'un moteur de modèle, car c'est ce que j'ai le plus d'expérience. 

Cela dépend de ce que vous voulez vraiment faire. Les servlets associés à Velocity (ou à FreeMarker en l'occurrence) offrent une très bonne séparation entre logique et présentation. Les modèles sont plus difficiles à tester, car vous devez évaluer le modèle pour pouvoir déterminer si le code HTML (ou le format de sortie) est correct. Pour JSP, cela peut être fait dans votre IDE de votre choix.

Le grand avantage des modèles est que vous pouvez les stocker complètement en dehors de votre application et même les mettre à jour lorsque votre application est en cours d'exécution. C'est quelque chose qui est un peu plus difficile à faire avec JSP, bien que le déploiement à chaud soit très proche.

Les composants réutilisables peuvent être créés à l'aide de la fonctionnalité d'inclusion du moteur de modèle.

3

Les avantages de Velocity, décrits ci-dessus, échappent à deux choses très importantes du point de vue des ingénieurs:

  • séparation stricte de la vue de la logique métier (comme ci-dessus)
  • syntaxe simple pouvant être comprise par les graphistes (comme ci-dessus)
  • code compact qui est moins un cauchemar à revisiter plus tard, voir exemple link
  • le déploiement de conteneur non-servlet signifie un déploiement facile n'importe où

Ces deux dernières rendent vraiment Velocity utile par rapport à JSP.

1
s.k

Je ne sais pas si Velocity peut rivaliser avec JSP à tous égards, mais Velocity est plus rapide et plus facile. Son efficacité est de 35 à 45% supérieure. Si les pages Web complexes sont compliquées, elles peuvent être réduites mais 5% supplémentaires. que JSP.

0
Rajesh Chowdary

La vélocité est meilleure Elle s’adapte à de nombreux domaines d’application Elle offre une syntaxe simple et claire pour le concepteur de modèles Elle offre un modèle de programmation simple pour le développeur les modèles et le code étant séparés, vous pouvez les développer et les gérer de manière indépendante Le moteur Velocity s'intègre facilement à tout environnement d'application Java, en particulier les servlets . Velocity permet aux modèles d'accéder à toute méthode publique d'objets de données dans le contexte.

0
amit prasad