Was sind die größten Nachteile bei der Verwendung des Google Web Toolkit (GWT)?

7

Nach einer langen Debatte zwischen vielen RIA / Ajax-Rahmen haben wir uns auf GWT festgelegt. Wenn man darüber liest, scheint dieser Rahmen alles gut und einfach zu machen. Aber wie bei jeder Technologie gibt es immer eine Schattenseite und wir lernen sie auf die harte Tour.

Was sind die größten Fehler oder Probleme bei der Verwendung von Google Web Toolkit (GWT)?

(zB: Back / Forward Button Unterstützung, langsame Antwortzeit, Layout Positionierung, JavaScrit Fehler, etc)

Bisher habe ich Folgendes aus der Antwort erhalten:

  • Viel Code für einfache UI
  • Langsame Zusammenstellung

Danke

    
Aerosteak 19.02.2011, 04:55
quelle

5 Antworten

13

Ich benutze GWT seit fast 2 Jahren. Obwohl ich als GWT-Fan bezeichnet werden könnte, gibt es einige Probleme, die man kennen sollte ...

  1. Wie andere schon gesagt haben, ist die JavaScript-Kompilierung langsam. Meine Anwendung benötigt fast 4 Minuten für Core i7 CPU, 8 GB Speicher. Die Gesamtgröße des generierten JavaScript beträgt ca. 5 MB. Aber dank des Entwicklungsmodus wird die Kompilierung in JavaScript nicht häufig benötigt.

  2. GWT RPC ist im Entwicklungsmodus extrem langsam. Es ist 100 mal langsamer als der gehostete Modus. Es war ein ziemlich großes Problem für uns. Aus diesem Grund haben wir erwogen, GWT aufzugeben. Der Grund für diese schleppende Performance von GWT RPC im Dev-Modus ist die Serialisierung. Die Serialisierung von anderen Typen als String ist im Entwicklungsmodus unglaublich langsam. Wir haben unsere benutzerdefinierte Serialisierung implementiert, sie ist fast 30-mal schneller als die in GWT integrierte Serialisierung.

  3. Behauptungen, dass das Schreiben von GWT-Anwendungen nur Java-Kenntnisse erfordert, ist nur eine Illusion. Sie sollten solide Informationen über CSS und DOM haben. Wenn Sie dies nicht tun, werden Sie zu viel Zeit damit verbringen, Ihre Benutzeroberfläche zu debuggen.

  4. Sie sollten beachten, dass Sie nur eine kleine Teilmenge des JDK verwenden können, um GWT-Anwendungen zu implementieren. Reflexion ist nicht verfügbar; Sie sollten Drittanbieterbibliotheken wie GWT ENT verwenden oder Ihre eigene generator zur Reflexion.

  5. Ein weiterer Nachteil, den man in Betracht ziehen sollte, ist die Größe des generierten JavaScript durch den GWT-Compiler. Die meisten GWT-Anwendungen bestehen aus einer einzigen Webseite, im Gegensatz zu mehrseitigen traditionellen Web-Anwendungen. Daher erfordert das Laden der Anwendung eine erhebliche Zeit. Obwohl es mit einem Multi-Modul-Ansatz und Code-Splitting gemildert werden könnte, ist die Verwendung dieser Techniken nicht immer einfach.

  6. Alle Aufrufe an den Server sind asynchron. Sie sollten sich an das Schreiben von asynchronem Code anpassen. Und der Nachteil von asynchronem Code ist, dass er komplexer und weniger lesbar ist als der äquivalente synchrone Code.

Gursel Koca 20.02.2011, 14:47
quelle
8

Hier sind meine Beobachtungen zu den Stürzen:

  • steile Lernkurve, wenn man GWT effektiv in großen Anwendungen einsetzen möchte, aufgrund enormer Anzahl der mit GWT verbundenen High-Level-Konventionen.
  • asynchrone Anfragen erfordern unterschiedliche Denkweisen, wenn es um die Gestaltung der gesamten Anwendung geht
  • lange Compilierungszeit, hat keine Auswirkungen auf den Entwicklungsmodus, sondern auf vollständige Builds (alle Permutationen für alle Browser und Sprachen werden kompiliert, was bei großen Projekten Stunden dauern kann). JRebel kann die Anforderungen für den Neustart des Entwicklungsmodus ein wenig reduzieren.
  • Probleme mit Komponententests - GWTTestCase startet so lange, dass es für Komponententests nicht mehr verwendet werden kann. Dank GWTTestSuite kann es jedoch gut für Integrationstests verwendet werden. Dank des sauberen MVP ist es auch möglich Unit Test Presenter Logik durch Mocking zu testen Zeigt an (siehe meine Antwort).
  • es erfordert einige Erfahrung, um zu entscheiden, ob eine bestimmte Logik clientseitig (kompiliert zu JS) oder serverseitig implementiert werden sollte.
  • und natürlich gibt es einige kleine Fehler, besonders in neuen Funktionen wie Editoren und RequestFactory. Sie werden in der Regel schnell mit neuen Releases gelöst, aber es könnte nervig sein, wenn Sie auf ein GWT-Problem stoßen. Jedenfalls gilt der letzte Fall für jedes Java-Framework, das ich bisher benutzt habe. ;)
  • Mangel an Reflektion auf der Client-Seite, die mit Deaktivierten Bindungen und Generatoren behoben werden könnte, aber es ist eine andere Konvention zu lernen.

Wenn ich ein neues GWT-Projekt starten würde, würde ich:

  • Fügen Sie eine Abhängigkeit von der Google GIN -Bibliothek hinzu (im Moment funktioniert es leider nicht mit GWT 2.2, aber sollte bald kompatibel sein).
  • Entwurf des allgemeinen Layouts mit LayoutPanels
  • Struktur Anwendung "flow" nach dem Konzept der Orte und Aktivitäten.
  • setze alle Orte in ein separates GWT-Modul (allgemeine Navigationsreferenzen)
  • fügen Sie jede Aktivität in das eigene GWT-Modul ein (dies könnte später beim Splitten von Anwendungscodes helfen) )
  • Behandle die Aktivität als "glue code", der den View- und Presenter-Providern GIN
  • injiziert hat
  • Design-Dateneinheiten, die mit RequestFactory
  • kompatibel sein sollen
  • Erstellen Sie alle Dateneditoren mit UiBinder, MVP und Editors Framework im Hinterkopf
  • Verwenden Sie RequestFactory in Presenters sowie in Activities (um die ersten Daten abzurufen, die angezeigt werden sollen).
  • injizieren mit GIN jede identifizierte gemeinsame Komponente wie Standard-Datumsformat, etc.

Das Tool spring roo kann viele GWT-basierten Code für Standard-Anwendungselemente generieren.

    
morisil 20.02.2011 23:13
quelle
2

Ich denke, der Hauptnachteil ist, dass GWT oft viel Code schreiben muss, um einfache Aufgaben zu erledigen (aber es wird mit jeder Version besser und besser). Auf der anderen Seite ist es brillant, wenn es darum geht, ein komplexes, benutzerdefiniertes Widget zu entwickeln, in dem es glänzt. Während einiger Projekte hat sich GWT als sehr leistungsfähig erwiesen und es gab nicht viele Bugs - es ist sehr gut in Bezug auf browserübergreifende Unterstützung imo.

    
jgrabowski 19.02.2011 15:38
quelle
2

Ich habe vor einiger Zeit eine Prototyp-App mit GWT gemacht, und ich fand, dass die Zeit, die es braucht, um das Java zu Javascript zu kompilieren, sehr lange gedauert hat. Mehr noch, die Zeit für das Kompilieren stieg mit jeder Codezeile, die wir geschrieben haben, bemerkenswert an.

Ich war einfach nicht glücklich mit dem Code, kompiliere Testphase immer langsamer durch die Zeit.

Eine weitere Frage zu SO bezüglich des Compilers: Wie beschleunige ich? der gwt-Compiler?

    
Nathan Feger 19.02.2011 15:35
quelle
0

als ein Fan von Krippe ... Ich bevorzuge JQuery statt GWT, weil es einfach ist, abgeschlossene Aufgaben zu animieren oder zu erledigen, ohne viele Klassen zu schreiben.

    
Bellash 02.05.2011 03:43
quelle

Tags und Links