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:
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.
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:
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.
J'ai essayé DWR. C'est bien. Il est beaucoup plus facile d'activer AJAX dans votre Java utilisant DWR que GWT.
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.
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?
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.
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
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.
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.
"Chevaux de course"
Choisissez celui qui a le plus de sens pour le projet. Quelques points à considérer
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.
La réponse n'est pas simple. La réponse est "ça dépend":
GWT:
jQuery:
Personnellement, je recommanderais GWT pour la plupart des projets, mais jQuery a également des avantages et certaines personnes peuvent préférer jQuery.
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).
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.
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.
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.
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
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/
mon opinion personnelle serait pour jQuery mais c'est parce que je n'utilise jamais Java et j'aime vraiment utiliser les plugins jQuery.
Un groupe d'utilisateurs actifs et une popularité croissante récente indiquent clairement que jQuery est le gagnant.