web-dev-qa-db-fra.com

Pourquoi devrais-je utiliser jQuery au lieu de GWT?

Je dois choisir entre jQuery et GWT pour mon nouveau projet.

Je n'ai pas programmé en JavaScript depuis un moment et je me suis penché sur GWT ces derniers jours. Il a l'air assez génial, générant tous les différents JS pour différents navigateurs et tous, cependant:

  • développer en Java prend plus de temps que la même chose en utilisant jQuery (au moins pour ce projet)
  • la documentation est médiocre (par exemple, comment savoir quels éléments dois-je utiliser lors de la conception de la page? - il n'y a pas assez de documentation pour cela)

J'utilise jQuery pour la plupart de mes projets et c'est plutôt bien.

Je veux convaincre le client que jQuery est mieux adapté à ce projet et j'ai besoin de plus d'arguments pour le supporter.

75
BobiYo

J'irais avec JQuery.

J'ai une fois maintenu un projet GWT qui m'a finalement forcé à le réécrire deux fois. D'abord en tant qu'application GWT refactorisée, en second lieu dans JQuery.

Je n'ai pas touché à Javascript sérieusement depuis très longtemps. La dernière fois, c'était vers 2002. Je suis un développeur Java donc ma première impression de GWT était géniale. Mais c'était juste l'impression.

Problèmes rencontrés avec GWT:

  1. Il vous oblige à suivre sa structure client/serveur. En fin de compte, tout ce que je veux, c'est AJAX et ces bons widgets. Les widgets de GWT en eux-mêmes ne semblent pas si beaux. Esthétiquement, je préfère Adobe Flex! Mais pour garder la comparaison plus proche, JQuery's L'interface utilisateur est meilleure que celle de GWT.

  2. J'ai essayé DWR. C'est bien. Il est beaucoup plus facile d'activer AJAX dans votre Java utilisant DWR que GWT.

  3. Si vous utilisez GWT, vous serez éventuellement obligé d'apprendre JavaScript. Arjen de SpringSource a dit un jour à propos de XML et SOAP (mais pas la citation exacte): "Comment pouvez-vous développer des WebServices sans connaître XML? SOAP est XML. Vous ne pouvez pas l'éviter ". Même chose avec GWT. C'est toujours Javascript à la fin.

  4. De manière réaliste, Javascript n'est pas si difficile à apprendre que Java. Plus de gens connaissent Javascript que Java. Même les concepteurs de sites Web le savent. Vous êtes programmeur et vous avez peur de Javascript?

  5. Revenons au projet que j'ai réécrit. Lorsque j'ai réécrit notre application GWT, il m'a fallu près de deux mois pour la réécrire. Avec JQuery, cela m'a pris deux semaines et j'étais rouillé avec JavaScript.

  6. Avec JQuery, vous n'écrivez pas vraiment du JavaScript hardcorde. C'est pourquoi vous utilisez JQuery en premier lieu. Le maintien du code avec GWT est horrible. Vous voulez voir les dernières modifications que vous avez apportées au code ... allez compiler ... attendez GWT ... 5 minutes ... rincez ... et répétez et j'espère que cela ne générera pas d'erreur. Si c'est le cas, vous recompilerez à nouveau et attendez encore 5 minutes. Rincez et répétez. Avec JQuery changer une ligne, actualisez votre navigateur. Terminé.

Je sais que je ne suis pas objectif ici, mais je partage juste mon expérience :) La morale est de ne pas avoir peur de Javascript. Google utilise quand même Javascript

63
chris

Je suggérerais d'utiliser GWT pour les équipes avec des gens qui ne comprennent pas JavaScript mais qui sont (peut-être) plus à l'aise avec Java. Avec GWT, vous vous épargnerez probablement des jours, voire des semaines, dans les tests de compatibilité, et vous éviterez beaucoup de pièges JavaScript courants dans lesquels les nouveaux utilisateurs de la langue écrasent. GWT possède également d'excellentes fonctionnalités de packaging pour sprites CSS , données intégrées et plus .

Cependant, si vous connaissez et comprenez JavaScript, j'utiliserais JavaScript , quelle que soit la bibliothèque de votre choix. Bien que je n'ai pas eu l'occasion d'inspecter de trop près le code généré par GWT, j'ai vu quelques exemples sur Google I/O, et bien qu'il ait l'air tout bonbon et scintille, vous créez probablement un code JavaScript plus élégant en le faisant à l'ancienne. façon.

56
Justin Johnson

Tout d'abord, comparer GWT avec jQuery n'a pas beaucoup de sens. Alors que jQuery a été construit pour faciliter le travail entre navigateurs avec le DOM, GWT est conçu pour créer de grandes applications Web.

Donc, si vous avez un tas de côtés statiques avec des widgets indépendants, comme le calendrier, le curseur, etc., jQuery suffit. Si vous souhaitez créer une application d'une seule page, peut-être avec une grande équipe, GWT est le meilleur moyen. GWT a une architecture bien conçue sous le capot, en particulier le modèle MVP intégré, le système de modèle UI-Binder, le support i18n, etc.

Donc, en tant que développeur JavaScript travaillant plus d'un an sur une grande application GWT, je recommanderais de ne jamais créer une application d'une seule page uniquement avec jquery car elle n'a pas été conçue pour. Si vous voulez utiliser JavaScript, jetez un œil à l'épine dorsale, à la colonne vertébrale, au knockout ou au dojo.

Btw, aussi bonne que soit l'architecture GWT, vous aurez beaucoup de frais généraux Java. Donc, si votre projet est en croissance, le temps de compiler vos propriétés css et i18n sera ennuyeux.

15
Andreas Köberle

"Chevaux de course"

Choisissez celui qui a le plus de sens pour le projet. Quelques points à considérer

  • Des délais serrés et plus familiers les uns avec les autres
  • Vitesse et maintenabilité pour que les autres développeurs utilisent l'outil choisi. La prévalence de l'un sur l'autre peut également avoir des implications ici
  • Avoir tout code qui pourrait déjà être utilisé dans le projet, par exemple plugins, fonctions utilitaires, etc.

Sans connaître les détails du projet, votre expérience et l'ouverture du client à l'utilisation de différentes technologies/structures, il n'y aura pas de réponse décisive ici.

Faites cette liste d'arguments convaincants pour l'un sur l'autre, comme j'ai commencé ici, puis discutez avec d'autres personnes impliquées dans le projet pour arriver à une conclusion.

10
Russ Cam

La réponse n'est pas simple. La réponse est "ça dépend":

GWT:

  • si vous connaissez et aimez Java
  • si votre code serveur est également écrit en Java, l'écriture du code client en Java permet d'utiliser le même code sur le client et le serveur
  • si vous aimez les choses fournies par les langages fortement typés: vérification de type à la compilation, refactoring automatisé, génération de code automatisée (Ctrl + 1 dans Eclipse), complétion de code (Ctrl + Espace)
  • si vous aimez la programmation orientée composants (par exemple MenuBar crée un menu)
  • si la complexité de GWT (par rapport à jQuery) n'est pas un problème pour vous
  • si le gros code généré n'est pas un problème pour vous

jQuery:

  • si vous connaissez et aimez JavaScript
  • vous n'avez pas besoin d'utiliser le même code sur le client et le serveur (par exemple, client - JS, serveur - Java ou PHP)
  • si vous n'avez pas besoin de vérification de type à la compilation, de refactorisation automatisée, etc.
  • si vous n'avez pas besoin de programmation orientée composant (pour créer un composant complexe dans jQuery, vous devez créer une série de divs et appeler $ ("ces divs"). makeXXXXControl ())
  • si vous aimez la simplicité (jQuery est plus simple que GWT)
  • si vous avez besoin d'un code très petit (par exemple pour accélérer le chargement du site Web)

Personnellement, je recommanderais GWT pour la plupart des projets, mais jQuery a également des avantages et certaines personnes peuvent préférer jQuery.

10
iirekm

Je pense que GWT est trop d'abstraction. Javascript est en fait un langage puissant. Vous pouvez écrire du code orienté objet et utiliser des espaces de noms. Avec une bibliothèque comme jQuery, vous n'aurez pas à vous soucier des problèmes de compatibilité du navigateur pour la plupart de vos activités. Avec tous les excellents outils de développement de navigateur disponibles (comme Firebug) dans tous les principaux navigateurs, de nos jours, il est très facile de travailler avec javascript. Lorsqu'une erreur javascript se produit, je peux facilement localiser où cela s'est produit dans mon code. Je peux regarder des variables et savoir tout ce qui se passe en détail parce que je travaille contre du code que j'ai écrit (contrairement à GWT).

3
David

Les principaux problèmes que je vois avec GWT par rapport à une solution Javascript native (jQuery ou autres) sont:

  • Il existe un processus supplémentaire qui vous sépare de votre produit final. Vous développez votre application en Java et vous déboguez le code Java, mais vous publiez une version traduite automatiquement de ce code. Pour une application de taille décente, je peux ' t imaginez que vous n'aurez pas besoin de déboguer le code réel en cours d'exécution sur le navigateur à certains moments, et cela va être un casse-tête, car ce n'est pas votre code.

  • Puisque vous écrivez votre code dans Java vous êtes limité à utiliser les bibliothèques Java. Si vous trouvez une bibliothèque JS que vous aimez, il serait extrêmement difficile de l'ajouter) à votre projet GWT, vous devrez peut-être écrire un wrapper Java pour celui-ci. Si vous développez JS natif, vous pouvez simplement l'ajouter à votre projet.

  • JS est un langage génial à part entière, avec un modèle d'objet solide différent de Java. J'ai développé quelques applications en JS natif pour HP webOS et j'ai été surpris de constater que bon nombre des idées préconçues que j'avais sur la langue n'étaient pas vraies. Vous pouvez écrire du code propre, efficace et maintenable dans JS autant que vous le pouvez en Java, et si vous prenez le temps de comprendre le modèle d'objet JS, vous n'aurez même pas besoin d'utiliser une bibliothèque de support pour imiter une classe/un objet plus typique modèle comme ceux de Java et C++ au-dessus de JS. Les prototypes de Javascript sont plutôt cool.

  • Si vous envisagez de publier votre application sur des plates-formes mobiles, une application JS native peut facilement être intégrée à PhoneGap et avoir accès à plusieurs plates-formes mobiles, sans effort supplémentaire. Il existe également un wrapper GWT pour PhoneGap, mais pour en revenir à mon premier élément, si vous avez le choix de travailler avec la vraie chose, alors pourquoi choisir une solution qui nécessite une traduction/émulation?

Bonne chance.

3
Miguel

Je suis d'accord avec Russ Cam que cela dépend de ce que votre équipe connaît. Lorsque je travaille pour mes applications professionnelles personnelles, je préfère de loin GWT. Je trouve que javascript, même avec jquery, a une syntaxe orientée objet ennuyeuse. Si vous avez une application avec 10 000 lignes de code d'interface utilisateur, jquery me semble être quelque chose qui conduirait à un gâchis de code difficile à maintenir avec une mauvaise réutilisation.

Quelqu'un connaît-il un projet à grande échelle réalisé en jquery?

Je pense que si vous essayez d'extraire chaque dernier octet de la taille de fichier résultante, n'utilisez pas de bibliothèque et écrivez le javascript à partir de zéro (c'est-à-dire: effet de fondu de la page d'accueil Google).

Quelque chose à penser concernant javascript/jquery par rapport à gwt. Si vous utilisez des principes et des modèles de conception orientés objet communs, vous obtiendrez probablement un code plus performant avec gwt. Pourquoi?

Prenons l'exemple du polymorphisme. Si vous écrivez une application qui utilise un polymorphisme lourd en javascript, vous bénéficierez de la maintenabilité et de la réutilisation du code que cela offre. Cependant, votre code bénéficiera également des performances de l'utilisation du polymorphisme.

Maintenant, si vous avez utilisé gwt, vous bénéficierez également de la maintenabilité et de la réutilisation du code que cela fournit, MAIS le compilateur gwt optimisera le polymorphisme pour une utilisation concrète des classes, augmentant ainsi les performances.

3
davidjnelson

jQuery = compréhension de bas nivea

Mis à part le javascript normal et l'autre est Java explication, Jquery a un mappage un à un plus proche avec javascript tandis que GWT est plus abstrait. Donc, si vous préférez avoir une compréhension plus approfondie de ce qui se passe avec votre code au bas niveau (javascript) alors jquery est la bonne façon.

GWT = compréhension de l'abstraction = garantie fonctionnelle

GWT offre l'avantage du code généré par le compilateur afin qu'il puisse offrir plus de garantie que votre site Web fonctionnera normalement. Cependant, comme toute API à grande échelle, vous devez prendre le temps de comprendre ce que fait cette classe et ce qu'elle fait et si elle est compatible avec cette API ou non.

ne compréhension de bas niveau peut être plus utile

Personnellement, je reçois beaucoup plus de satisfaction en codant moi-même le bas niveau. J'ai construit des applications Web au travail à partir de javascript pur qui fonctionnait parfaitement. Une fois, j'ai écrit du code javascript qui a pris les données d'une base de données et généré un rapport de recherche Microsoft Word complet. La complexité de ce projet exigeait une compréhension de niveau inférieur du javascript. Je ne suis pas sûr que cela aurait pu être fait facilement avec une solution basée sur Java.

GWT rassure les managers mais coûteux

Mais là encore Java et asp.net ont tendance à être préférés par les grandes entreprises b/c il y a un plus grand support technique (c'est-à-dire Oracle et Microsoft) et les gestionnaires sur le bord tendus ont tendance à mieux dormir) la nuit, quand ils savent qu'ils peuvent résoudre le problème A en payant simplement x montant de dollars pour le support. Donc, après avoir adopté le système, ils commencent rapidement à se rendre compte que le support technique coûte trop cher et qu'il est moins cher de payer plus cher pour de meilleurs développeurs. D'où un Java ou .net mettra généralement de la nourriture sur la table.

maintenabilité

Les API comme GWT sont également plus faciles à maintenir. Je ne pouvais qu'imaginer l'horreur que quelqu'un subirait s'il devait déboguer mon code javascript. Mais c'était avant que je ne devienne un programmeur meilleur et plus propre et comme je connaissais tous les aspects du code, il n'y avait rien à déboguer en b/c, il n'y avait jamais de problème.

Le codage de bas niveau vous donne presque 100% de compréhension de ce qui se passe, mais avec les API, vous passez du temps à jouer au détective de bogues sur Google et à publier des questions sur des sites comme StackOverflow. Mais les gestionnaires ne comprennent pas ce b/c la plupart ne sont pas des programmeurs.

2
user922475

Tous les bons conseils et personne n'a parlé de JSNI! Une fonctionnalité dans GWT qui vous permet d'utiliser javascript si vous le souhaitez.

https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsJSNI

2
Sib

GWT est un compilateur (Java vers JavaScript) et jQuery est un framework. Vous n'avez pas à choisir l'un plutôt que l'autre. Vous pouvez utiliser l'un d'eux, les deux ou aucun.

Par exemple, vous pouvez coder en Java si vous voulez ou avez du code source existant, puis utiliser jQuery pour d'autres choses. Il y a des wrappers disponibles, mais GWT peut appeler JavaScript (et vice versa) voir - http://svenbuschbeck.net/wordpress/2012/06/how-to-use-jquery-in-gwt/

1
liftarn

mon opinion personnelle serait pour jQuery mais c'est parce que je n'utilise jamais Java et j'aime vraiment utiliser les plugins jQuery.

0
AutomatedTester

Un groupe d'utilisateurs actifs et une popularité croissante récente indiquent clairement que jQuery est le gagnant.

0
rajakvk