Ich muss mich für mein neues Projekt zwischen jQuery und GWT entscheiden.
Ich habe eine Weile nicht mehr in JavaScript programmiert und mich in den letzten Tagen mit GWT befasst. Es sieht ziemlich fantastisch aus und generiert all die verschiedenen JS für verschiedene Browser und alle:
- Das Entwickeln in Java dauert länger als das Gleiche mit jQuery (zumindest für dieses Projekt).
- Die Dokumentation ist schlecht (z. B. woher soll ich wissen, welche Elemente ich beim Entwerfen der Seite verwenden soll? - Dafür gibt es nicht genügend Dokumentation.)
Ich habe jQuery für die meisten meiner Projekte verwendet und es ist ziemlich gut.
Ich möchte den Kunden davon überzeugen, dass jQuery für dieses Projekt besser geeignet ist, und ich brauche mehr Argumente, um dies zu unterstützen.
javascript
jquery
gwt
BobiYo
quelle
quelle
Antworten:
Ich würde mit JQuery gehen.
Ich habe einmal ein GWT-Projekt unterhalten, das mich schließlich gezwungen hat, es zweimal neu zu schreiben. Erstens als überarbeitete GWT-App, zweitens in JQuery.
Ich habe Javascript schon sehr lange nicht mehr ernsthaft berührt. Das letzte Mal war ungefähr 2002. Ich bin ein Java-Entwickler, daher war mein erster Eindruck von GWT großartig. Aber das war nur der Eindruck.
Probleme, die ich mit GWT gefunden habe:
Es zwingt Sie, seiner Client / Server-Struktur zu folgen. Am Ende möchte ich nur AJAX und diese guten Widgets. Die Widgets von GWT an sich scheinen nicht so gut auszusehen. Ästhetisch bevorzuge ich Adobe Flex! Um den Vergleich näher zu halten, sieht die Benutzeroberfläche von JQuery besser aus als die von GWT. Darüber hinaus haben Sie diese wunderbare Theme Roller-Unterstützung von JQuery.
Ich habe DWR ausprobiert. Es ist toll. Es ist viel einfacher, AJAX in Ihrem Java-Code mit DWR zu aktivieren als mit GWT.
Wenn Sie GWT verwenden, werden Sie möglicherweise gezwungen sein, JavaScript zu lernen. Arjen von SpringSource sagte einmal über XML und SOAP (obwohl nicht das genaue Zitat): "Wie können Sie WebServices entwickeln und XML nicht kennen? SOAP ist XML. Sie können es nicht vermeiden." Gleiches gilt für GWT. Am Ende ist es immer noch Javascript.
Realistisch gesehen ist Javascript im Vergleich zu Java nicht so schwer zu lernen. Mehr Menschen kennen Javascript als Java. Sogar Webdesigner wissen es. Sie sind Programmierer und haben Angst vor Javascript?
Zurück zum Projekt habe ich umgeschrieben. Als ich unsere GWT-Anwendung umschrieb, brauchte ich fast zwei Monate, um sie umzuschreiben. Mit JQuery habe ich zwei Wochen gebraucht und mit JavaScript war ich verrostet.
Mit JQuery schreiben Sie nicht wirklich Hardcorde-JavaScript. Deshalb verwenden Sie JQuery an erster Stelle. Das Verwalten von Code mit GWT ist schrecklich. Sie möchten die letzten Änderungen sehen, die Sie im Code vorgenommen haben ... kompilieren gehen ... auf GWT warten ... 5 Minuten ... spülen ... und wiederholen und hoffen, dass es keinen Fehler gibt. In diesem Fall werden Sie erneut kompilieren und weitere 5 Minuten warten. Spülen und wiederholen. Wenn JQuery eine Zeile ändert, aktualisieren Sie Ihren Browser. Getan.
Ich weiß, dass ich hier nicht objektiv bin, aber ich teile nur meine Erfahrungen :) Die Moral ist, keine Angst vor Javascript zu haben. Google verwendet sowieso Javascript
quelle
Ich würde vorschlagen, GWT für Teams mit Leuten zu verwenden, die JavaScript nicht verstehen, aber (vielleicht) besser mit Java vertraut sind. Mit GWT sparen Sie sich wahrscheinlich Tage, wenn nicht Wochen beim Kompatibilitätstest und vermeiden viele häufige JavaScript-Fallstricke , in die sich neue Sprachanfänger stürzen. GWT bietet außerdem hervorragende Verpackungsfunktionen für CSS-Sprites , eingebettete Daten und mehr .
Allerdings , wenn Sie wissen und verstehen , JavaScript, würde ich verwenden JavaScript , was auch immer Ihre Bibliothek der Wahl sein kann. Obwohl ich keine Gelegenheit hatte, den von GWT generierten Code zu genau zu untersuchen, habe ich einige Beispiele bei Google I / O gesehen, und obwohl alles süß und funkelnd aussah, erstellen Sie wahrscheinlich eleganteren JavaScript-Code, indem Sie es auf die altmodische Weise tun Weg.
quelle
Wenn Ihre Gruppe mit Java am besten vertraut ist und Sie erhebliche Mengen clientseitiger Funktionen ausführen möchten, sollten Sie zumindest GWT evaluieren. Die Typensicherheit, das Eclipse-Debugging und der gemeinsam genutzte Code zwischen Server- und Client-Seite werden Ihrem Java-Entwicklungsteam angenehm sein.
Wenn Ihr Team jedoch an die JavaScript-Programmierung mit jQuery oder einer anderen JavaScript-Bibliothek gewöhnt ist, ist es möglicherweise einfacher, sich an eine Technologie zu halten, die reines JavaScript ist. GWT hat die Möglichkeit, große Teile der Seite zu übernehmen, was den meisten JavaScript-Entwicklern nicht vertraut ist. Mit der Übernahme der Seite meine ich, dass typischer GWT-Code gerne eigene DOM-Elemente erstellt, anstatt vorhandenen Elementen auf der Seite Funktionen hinzuzufügen. Aus diesem Grund haben viele GWT-Apps beim ersten Laden der Seite einen Bildschirm "Laden ...". Dies ist nicht erforderlich, aber der häufigste Stil der GWT-Entwicklung.
Die Tatsache, dass generierter Code aus GWT stammt, ist für die meisten GWT-Entwickler weniger relevant. Mit GWT können Sie Java in eine normale Java * .class-Datei kompilieren, jedoch in einer JavaScript-Syntax, die der Webbrowser zu interpretieren versteht. GWT verhält sich viel mehr wie ein Compiler als wie ein vorlagengesteuerter Codegenerator. Es gibt Zeiten, in denen Sie den generierten Code überprüfen müssen, aber zum größten Teil erfolgt Ihr Debugging über Ihren Java-Debugger in Java.
Eine andere Sache, über die Sie nachdenken sollten, ist, dass Ihr Entwicklungsteam unabhängig von der von Ihnen gewählten clientseitigen Technologie mit HTML, JavaScript, CSS und der Browserprogrammierung im Allgemeinen vertraut sein muss. Mit GWT können Sie clientseitigen Code in einer vertrauten Java-Umgebung schreiben, ohne die Tatsache zu verbergen, dass Sie in einem Browser arbeiten.
quelle
Zunächst einmal macht der Vergleich von GWT mit jQuery wenig Sinn. Während jQuery entwickelt wurde, um die browserübergreifende Arbeit mit dem DOM zu vereinfachen, wurde GWT erstellt, um große Webanwendungen zu erstellen.
Wenn Sie also eine Reihe statischer Seiten mit einigen unabhängigen Widgets wie Kalender, Schieberegler usw. haben, reicht jQuery aus. Wenn Sie eine einseitige App erstellen möchten, vielleicht mit einem großen Team, ist GWT der bessere Weg. GWT hat eine sehr gute Designarchitektur unter der Haube, insbesondere das eingebaute MVP-Muster, das UI-Binder-Template-System, die i18n-Unterstützung usw.
Als JavaScript-Entwickler, der mehr als ein Jahr an einer großen GWT-App arbeitet, würde ich empfehlen, niemals eine einzelne Seiten-App nur mit jquery zu erstellen, da diese nicht für sie erstellt wurde. Wenn Sie JavaScript verwenden möchten, werfen Sie einen Blick auf Backbone, Spine, Knockout oder Dojo.
Übrigens, so gut die GWT-Architektur aufgebaut ist, werden Sie viel JAVA-Overhead haben. Wenn Ihr Projekt also wächst, wird die Zeit zum Kompilieren Ihrer CSS- und i18n-Eigenschaften ärgerlich.
quelle
Wählen Sie diejenige aus, die für das Projekt am sinnvollsten ist. Einige Dinge zu beachten
Ohne genaue Angaben darüber, worum es in dem Projekt geht, welche Erfahrungen Sie machen und wie offen der Kunde für die Verwendung verschiedener Technologien / Frameworks ist, gibt es hier keine entscheidende Antwort.
Machen Sie diese Liste überzeugender Argumente übereinander, wie ich hier begonnen habe, und diskutieren Sie dann mit anderen Projektbeteiligten, um zu einem Ergebnis zu kommen.
quelle
Die Antwort ist nicht einfach. Die Antwort lautet "es kommt darauf an":
GWT:
jQuery:
Persönlich würde ich GWT für die meisten Projekte empfehlen, aber jQuery hat auch Profis und einige Leute bevorzugen jQuery.
quelle
Ich stimme Russ Cam zu, dass es davon abhängt, mit was Ihr Team vertraut ist. Wenn ich für meine persönlichen Geschäftsanwendungen arbeite, bevorzuge ich GWT. Ich finde, dass Javascript selbst mit jquery eine nervige objektorientierte Syntax hat. Wenn Sie eine App mit 10.000 Zeilen UI-Code haben, scheint mir jquery etwas zu sein, das zu einem Durcheinander von schwer zu wartendem Code mit schlechter Wiederverwendung führen würde.
Kennt jemand ein Großprojekt in jquery?
Ich denke, wenn Sie versuchen, jedes letzte Byte aus der resultierenden Dateigröße herauszuholen, verwenden Sie keine Bibliothek und schreiben Sie das Javascript von Grund auf neu (dh: Google Homepage Fade-Effekt).
Etwas zum Nachdenken über Javascript / JQuery versus GWT. Wenn Sie gemeinsame objektorientierte Prinzipien und Entwurfsmuster verwenden, erhalten Sie mit gwt wahrscheinlich Code mit besserer Leistung. Warum?
Nehmen wir das Beispiel des Polymorphismus. Wenn Sie eine App schreiben, die starken Polymorphismus in Javascript verwendet, profitieren Sie von der Wartbarkeit und der Wiederverwendung von Code. Ihr Code erhält jedoch auch den Leistungseinbruch durch die Verwendung von Polymorphismus.
Wenn Sie jetzt gwt verwenden, profitieren Sie auch von der Wartbarkeit und der Wiederverwendung von Code, ABER der gwt-Compiler optimiert den Polymorphismus in die Verwendung konkreter Klassen und erhöht so die Leistung.
quelle
Ich denke, GWT ist zu viel Abstraktion. Javascript ist in der Tat eine mächtige Sprache. Sie können objektorientierten Code schreiben und Namespaces verwenden. Mit einer Bibliothek wie jQuery müssen Sie sich bei den meisten Aufgaben nicht um Probleme mit der Browserkompatibilität kümmern. Mit all den großartigen Browser-Entwicklertools (wie Firebug), die heutzutage in allen gängigen Browsern verfügbar sind, ist es sehr einfach, mit Javascript zu arbeiten. Wenn ein Javascript-Fehler auftritt, kann ich leicht feststellen, wo er in meinem Code aufgetreten ist. Ich kann Variablen beobachten und alles im Detail wissen, weil ich gegen Code arbeite, den ich geschrieben habe (im Gegensatz zu GWT).
quelle
Die Hauptprobleme, die ich mit GWT im Vergleich zu einer nativen Javascript-Lösung (jQuery oder andere) sehe, sind:
Es gibt einen zusätzlichen Prozess, der Sie von Ihrem Endprodukt trennt. Sie entwickeln Ihre App in Java und debuggen den Java-Code. Sie veröffentlichen jedoch eine maschinell übersetzte Version dieses Codes. Für eine App mit angemessener Größe kann ich mir nicht vorstellen, dass Sie den tatsächlichen Code, der im Browser ausgeführt wird, manchmal nicht debuggen müssen, und dies wird Kopfschmerzen bereiten, da es nicht Ihr Code ist.
Da Sie Ihren Code in Java schreiben, dürfen Sie nur Java-Bibliotheken verwenden. Wenn Sie eine JS-Bibliothek finden, die Ihnen gefällt, ist es furchtbar schwierig, sie Ihrem GWT-Projekt hinzuzufügen, müssen Sie möglicherweise einen Java-Wrapper dafür schreiben. Wenn Sie natives JS entwickeln, können Sie es einfach Ihrem Projekt hinzufügen.
JS ist eine großartige Sprache für sich, mit einem soliden Objektmodell, das sich von dem von Java unterscheidet. Ich habe einige Apps in nativem JS für HP webOS entwickelt und war überrascht, dass viele der Vorurteile, die ich bezüglich der Sprache hatte, nicht wahr waren. Sie können in JS so viel sauberen, effizienten und wartbaren Code schreiben wie in Java. Wenn Sie sich die Zeit nehmen, das JS-Objektmodell zu verstehen, müssen Sie nicht einmal eine Unterstützungsbibliothek verwenden, um eine typischere Klasse / ein typischeres Objekt nachzuahmen Modell wie das von Java und C ++ auf JS. Die Prototypen von Javascript sind ziemlich cool.
Wenn Sie jemals in Betracht ziehen, Ihre App auf mobilen Plattformen zu veröffentlichen, kann eine native JS-App ohne zusätzlichen Aufwand problemlos in Phonegap eingebunden werden und Zugriff auf mehrere mobile Plattformen haben. Es gibt auch einen GWT-Wrapper für Phonegap, aber wenn Sie die Wahl haben, mit der Realität zu arbeiten, warum sollten Sie dann eine Lösung wählen, die Übersetzung / Emulation erfordert?
Viel Glück.
quelle
All die tollen Tipps und niemand sprach über JSNI! Eine Funktion in GWT, mit der Sie auf Wunsch Javascript verwenden können.
https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsJSNI
quelle
jQuery = Verständnis auf niedriger Ebene
Abgesehen von dem normalen JavaScript und der Java-Erklärung hat Jquery eine engere Eins-zu-Eins-Zuordnung mit JavaScript, während GWT stärker abstrahiert ist. Wenn Sie also lieber ein tieferes Verständnis dafür haben möchten, was mit Ihrem Code auf niedriger Ebene (Javascript) passiert, ist jquery der richtige Weg.
GWT = Abstraktionsverständnis = Funktionsgarantie
GWT bietet den Vorteil des vom Compiler generierten Codes, sodass möglicherweise mehr Garantie dafür besteht, dass Ihre Website normal funktioniert. Wie bei jeder großen API müssen Sie sich jedoch die Zeit nehmen, um zu verstehen, was diese Klasse tut und was diese Klasse tut und ob sie mit dieser API kompatibel ist oder nicht.
Verständnis auf niedriger Ebene kann nützlicher sein
Persönlich bin ich viel zufriedener, wenn ich das Low-Level selbst codiere. Ich habe einige Webanwendungen bei der Arbeit aus reinem Javascript erstellt, die einwandfrei funktionierten. Einmal schrieb Javascript-Code, der Daten aus einer Datenbank nahm und einen vollständigen Microsoft Word-Forschungsbericht generierte. Die Komplexität dieses Projekts erforderte ein geringeres Verständnis von Javascript. Ich bin mir nicht sicher, ob dies mit einer Java-basierten Lösung einfach möglich gewesen wäre.
GWT beruhigt Manager, ist aber teuer
Andererseits werden Java und asp.net von größeren Unternehmen bevorzugt, da es einen besseren technischen Support gibt (z. B. Oracle und Microsoft) und straffe Manager nachts besser schlafen, wenn sie wissen, dass sie Probleme lösen können A indem Sie einfach x Dollar für die Unterstützung bezahlen. Nach der Einführung des Systems stellen sie schnell fest, dass der technische Support zu viel kostet und es billiger ist, mehr für bessere Entwickler zu bezahlen. Daher wird eine Java- oder .net-Karriere normalerweise Essen auf den Tisch legen.
Wartbarkeit
Auch APIs wie GWT sind einfacher zu warten. Ich konnte mir nur vorstellen, welchen Schrecken jemand durchmachen würde, wenn er meinen Javascript-Code debuggen müsste. Aber das war, bevor ich ein besserer und sauberer Programmierer wurde und da ich jeden Aspekt des Codes kannte, gibt es nichts zu debuggen, da es nie ein Problem damit gab.
Low-Level-Codierung gibt Ihnen fast 100% Verständnis dafür, was passiert. Mit APIs verbringen Sie jedoch Zeit damit, Bug Detective bei Google zu spielen und Fragen auf Websites wie StackOverflow zu stellen. Aber Manager verstehen das nicht. Die meisten sind keine Programmierer.
quelle
GWT ist ein Compiler (Java zu JavaScript) und jQuery ist ein Framework. Sie müssen nicht eins über das andere wählen. Sie können einen von beiden verwenden, beide oder keinen.
Zum Beispiel können Sie in Java codieren, wenn Sie vorhandenen Quellcode möchten oder haben, und dann jQuery für andere Dinge verwenden. Es gibt verfügbare Wrapper, aber GWT kann JavaScript aufrufen (und umgekehrt), siehe http://svenbuschbeck.net/wordpress/2012/06/how-to-use-jquery-in-gwt/
quelle
Meine persönliche Meinung wäre für jQuery, aber das liegt daran, dass ich nie Java benutze und die jQuery-Plugins wirklich gerne benutze.
quelle
Die aktive Benutzergruppe und die in letzter Zeit zunehmende Beliebtheit zeigen deutlich, dass jQuery der Gewinner ist.
quelle