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:
Danke
Ich benutze GWT seit fast 2 Jahren. Obwohl ich als GWT-Fan bezeichnet werden könnte, gibt es einige Probleme, die man kennen sollte ...
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.
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.
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.
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.
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.
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.
Hier sind meine Beobachtungen zu den Stürzen:
Wenn ich ein neues GWT-Projekt starten würde, würde ich:
Das Tool spring roo kann viele GWT-basierten Code für Standard-Anwendungselemente generieren.
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.
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?
Tags und Links gwt jquery silverlight extjs flex