Ich bin am Anfang / in der Mitte eines Projekts, das wir mit GWT implementieren wollten. Hat jemand größere Fallstricke bei der Verwendung von GWT (und GWT-EXT) festgestellt, die nicht überwunden werden konnten? Wie wäre es aus Sicht der Leistung?
Einige Dinge, die wir bereits gesehen / gehört haben, sind:
- Google kann keine Inhalte indizieren
- CSS und Styling scheinen im Allgemeinen etwas schuppig zu sein
Suchen Sie auch nach zusätzlichen Rückmeldungen zu diesen Artikeln. Vielen Dank!
Antworten:
Ich beginne damit, dass ich ein großer GWT-Fan bin, aber ja, es gibt viele Fallstricke, aber die meisten, wenn nicht alle, die wir überwinden konnten:
Problem: Lange Kompilierungszeiten, wenn Ihr Projekt wächst, nimmt auch die Zeit zu, die zum Kompilieren benötigt wird. Ich habe von Berichten über 20-minütige Kompilierungen gehört, aber meine sind durchschnittlich etwa 1 Minute lang.
Lösung: Teilen Sie Ihren Code in separate Module auf und weisen Sie ant an, ihn nur zu erstellen, wenn er geändert wird. Während der Entwicklung können Sie die Kompilierungszeiten erheblich beschleunigen, indem Sie nur für einen Browser erstellen. Sie können dies tun, indem Sie dies in Ihre .gwt.xml-Datei einfügen:
Wobei gecko1_8 Firefox 2+ ist, dh6 IE ist usw.
Problem: Der gehostete Modus ist sehr langsam (zumindest unter OS X) und entspricht nicht annähernd den "Live" -Änderungen, die Sie erhalten, wenn Sie Dinge wie JSPs oder Rails-Seiten bearbeiten und in Ihrem Browser auf "Aktualisieren" klicken.
Lösung: Sie können dem gehosteten Modus mehr Speicher geben (ich habe normalerweise 512 MB), aber es ist immer noch langsam. Ich habe festgestellt, dass Sie dies nicht mehr verwenden, wenn Sie mit GWT gut genug sind. Sie nehmen einen großen Teil der Änderungen vor, kompilieren dann für nur einen Browser (in der Regel im Wert von 20 Jahren) und klicken dann in Ihrem Browser auf Aktualisieren.
Update: Mit GWT 2.0+ ist dies kein Problem mehr, da Sie den neuen 'Entwicklungsmodus' verwenden. Dies bedeutet im Grunde, dass Sie Code direkt in dem Browser Ihrer Wahl ausführen können, sodass keine Geschwindigkeitsverluste auftreten. Außerdem können Sie ihn feuern / inspizieren usw.
http://code.google.com/p/google-web-toolkit/wiki/UsingOOPHM
Problem: GWT-Code ist Java und hat eine andere Mentalität als das Layout einer HTML-Seite, wodurch es schwieriger wird, ein HTML-Design in GWT umzuwandeln
Lösung: Sie gewöhnen sich wieder daran, aber leider ist das Konvertieren eines HTML-Designs in ein GWT-Design immer langsamer als das Konvertieren eines HTML-Designs in eine JSP-Seite.
Problem: GWT braucht ein wenig Zeit, um sich zurechtzufinden, und ist noch nicht Mainstream. Das bedeutet, dass die meisten Entwickler, die Ihrem Team beitreten oder Ihren Code pflegen, ihn von Grund auf neu lernen müssen
Lösung: Es bleibt abzuwarten, ob GWT startet, aber wenn Sie ein Unternehmen sind, das die Kontrolle darüber hat, wen Sie einstellen, können Sie immer Leute auswählen, die GWT entweder kennen oder lernen möchten.
Problem: GWT ist ein Vorschlaghammer im Vergleich zu etwas wie jquery oder einfach nur Javascript. Es erfordert viel mehr Setup, um dies zu erreichen, als nur eine JS-Datei einzuschließen.
Lösung: Verwenden Sie Bibliotheken wie jquery für kleinere, einfache Aufgaben, die für diese geeignet sind. Verwenden Sie GWT, wenn Sie in AJAX etwas wirklich Komplexes erstellen möchten oder wenn Sie Ihre Daten über den RPC-Mechanismus hin und her übertragen müssen.
Problem: Manchmal müssen Sie beim ersten Laden der Seite einen Serveraufruf durchführen, um Ihre GWT-Seite zu füllen. Es kann für den Benutzer ärgerlich sein, dort zu sitzen und ein Ladesymbol zu beobachten, während Sie die benötigten Daten abrufen.
Lösung: Im Fall einer JSP-Seite wurde Ihre Seite bereits vom Server gerendert, bevor sie zu HTML wurde, sodass Sie dann tatsächlich alle Ihre GWT-Aufrufe ausführen und sie für ein sofortiges Laden auf die Seite vorladen können. Siehe hier für Details:
Beschleunigen Sie das Laden von Seiten, indem Sie Ihre GWT-Anrufe vorserialisieren
Ich hatte noch nie Probleme mit dem CSS-Stil meiner Widgets, sofort einsatzbereit, benutzerdefiniert oder auf andere Weise. Ich weiß also nicht, was Sie damit meinen, dass dies eine Gefahr ist.
Was die Leistung angeht, habe ich immer festgestellt, dass einmal kompilierter GWT-Code schnell ist und AJAX-Aufrufe fast immer kleiner sind als eine ganze Seitenaktualisierung, aber das ist nicht wirklich nur bei GWT der Fall, obwohl die nativen RPC-Pakete, die Sie erhalten, wenn Sie sie verwenden Ein JAVA-Backend ist ziemlich kompakt.
quelle
Wir arbeiten seit fast 2 Jahren mit gwt zusammen. Wir haben viele Lektionen gelernt. Folgendes denken wir:
Verwenden Sie keine Widget-Bibliotheken von Drittanbietern, insbesondere gwt-ext. Es wird Ihre Debugging-, Entwicklungs- und Laufzeitleistung beeinträchtigen. Wenn Sie Fragen dazu haben, wenden Sie sich direkt an mich.
Verwenden Sie gwt, um nur die dynamischen Teile Ihrer Apps auszufüllen. Wenn Sie also komplexe Benutzerinteraktionen mit vielen Feldern haben. Verwenden Sie jedoch nicht die mitgelieferten Panels. Nehmen Sie die von Ihrem vorhandenen Stock Designer bereitgestellten Seiten. Schneiden Sie die Bereiche aus, die die Steuerelemente für Ihre App enthalten. Fügen Sie diese Steuerelemente der Seite in onModuleLoad () hinzu. Auf diese Weise können Sie die Standardseiten Ihres Designers verwenden und das gesamte Styling auch außerhalb des GWT ausführen.
Erstellen Sie nicht die gesamte App als eine Standardseite, die dann alle Teile dynamisch erstellt. Wenn Sie das tun, was ich in Punkt 2 vorschlage, wird dies sowieso nicht passieren. Wenn Sie alles dynamisch erstellen, wird die Leistung beeinträchtigt und große Mengen an Speicher für mittlere bis große Apps verbraucht. Wenn Sie das tun, was ich vorschlage, funktioniert die Schaltfläche "Zurück" hervorragend, ebenso wie die Indizierung von Suchmaschinen usw.
Die anderen Kommentatoren hatten auch einige gute Vorschläge. Die Faustregel, die ich verwende, ist, Seiten zu erstellen, als ob Sie eine Standardwebseite erstellt hätten. Dann schnitzen Sie die Teile heraus, die dynamisch sein müssen. Ersetzen Sie sie durch Elemente mit IDs und
RootPanel.get( id ).add( widget )
füllen Sie diese Bereiche aus.quelle
Fallstricke, auf die wir gestoßen sind:
Wenn Sie so etwas wie GWT EXT verwenden, können Sie zwar eine Menge Kilometer sammeln, aber jedes Mal, wenn Sie diese Art von dünnem Furnier über einer JavaScript-Bibliothek verwenden, verlieren Sie die Fähigkeit zum Debuggen. Mehr als einmal habe ich meinen Kopf auf den Schreibtisch geschlagen, weil ich (in meinem IntelliJ-Debugger) nicht überprüfen kann, was in der GWT EXT-Tabellenklasse passiert ... Sie können nur sehen, dass es sich um ein JavaScriptObject handelt. Dies macht es ziemlich schwierig herauszufinden, was schief gelaufen ist ...
Sie haben niemanden in Ihrem Team, der sich mit CSS auskennt. Aus meiner Erfahrung war es egal, dass die Person kein Experte war ... es reicht aus, dass sie über gute Kenntnisse verfügt und die richtigen Begriffe kennt, um bei Bedarf zu googeln.
Browserübergreifendes Debuggen. Behalten Sie den gehosteten Out-of-Process-Modus [ 1 ] [ 2 ] [ 3 ] im Auge , der hoffentlich in GWT 1.6 verfügbar ist ... Im Moment müssen Sie nur den gehosteten Modus verbessern und dann die Schaltfläche "Kompilieren / Durchsuchen" verwenden , wo Sie mit anderen Browsern spielen können. Wenn ich unter Windows arbeite, bedeutet dies, dass ich meine Arbeit in FireFox anzeigen und FireBug verwenden kann, um die Dinge zu optimieren und zu verbessern.
IE6. Es ist erstaunlich, wie unterschiedlich IE 6 die Dinge rendert. Ich habe den Ansatz gewählt, einen Stil gemäß dem Browser auf das äußerste "Ansichtsfenster" anzuwenden, damit ich CSS-Regeln haben kann wie:
Stellen Sie schließlich sicher, dass Sie einen Editor verwenden, der Ihnen hilft. Ich benutze IntelliJ - es hat viele GWT-Smarts. Wenn ich beispielsweise versuche, eine Klasse zu verwenden, die nicht von der JRE-Emulation verarbeitet wird, werden Sie darüber informiert. Wenn ich einen Stil für ein Widget angegeben habe und diesen Stil noch nicht definiert habe, wird der Code ein wenig rot ... Wenn ich mir das CSS anschaue, wird mir mitgeteilt, wann ich widersprüchliche Attribute in a angegeben habe einzelne Regel. (Ich habe es noch nicht ausprobiert, aber ich verstehe, dass Version 8 eine noch bessere GWT-Unterstützung bietet, z. B. die Synchronisierung der "lokalen" und "asynchronen" RPC-Schnittstellen und -Implementierungen.)
quelle
GWT 2.0, das in den nächsten Monaten erscheinen soll, löst viele der diskutierten Probleme.
GWT 2.0-Vorschau-Video bei Google I / O.
quelle
Nicht "unfähig, überwunden zu werden", sondern ein bisschen Schmerz für etwas Grundlegendes.
Datumsbehandlung:
GWT verwendet das Veraltete,
java.util.Date
was zu unerwartetem Verhalten beim Umgang mit Daten auf der Clientseite führen kann.java.util.Calendar
wird von GWT nicht unterstützt. Mehr Infos hier .Verwandte Problembeispiele:
quelle
java.util.Calendar
nach JavaScript. Sie können sich auch die KlasseCalendarUtil
des GWT ansehen : Wie verwende ich java.util.Calendar in GWT und wie führe ich Kalenderoperationen in Java GWT aus? Wie füge ich einem Datum Tage hinzu? . Prost;)Ich werde einige Punkte zu den bereits erwähnten hinzufügen:
Meiner Meinung nach fehlt GWT ein Framework, das alle in diesem 'Thread' genannten Probleme sofort unterstützt.
quelle
Ich arbeite gerade an einem Projekt, das EXT GWT (GXT) verwendet, um nicht mit GWT EXT zu verwechseln. Es gibt einen Unterschied, EXT GWT ist derjenige, der tatsächlich von der Firma produziert wird, die ExtJS die Javascript-Bibliothek geschrieben hat. GWT EXT ist ein GWT-Wrapper um die ExtJS-Bibliothek. GXT ist native GWT.
Wie auch immer, GXT ist noch etwas unreif und es fehlt eine solide Community, die GWT EXT meiner Meinung nach hat. Die Zukunft liegt jedoch bei GXT, da es sich um ein natives GWT handelt, das tatsächlich von der Firma entwickelt wurde, die ExtJS hergestellt hat. GWT EXT ist etwas verkrüppelt, da sich die Lizenz für die ExtJS-Bibliothek geändert hat, wodurch die Entwicklung von GWT EXT verlangsamt wird.
Insgesamt denke ich, dass GWT / GXT eine gute Lösung für die Entwicklung einer Webanwendung ist. Eigentlich mag ich den gehosteten Entwicklungsmodus sehr, er macht die Dinge schnell und einfach. Sie haben auch den Vorteil, dass Sie Ihren Code auch debuggen können. Unit-Tests mit JUnit sind ebenfalls ziemlich solide. Ich habe noch kein großartiges JavaScript-Framework für Komponententests gesehen, das meiner Meinung nach ausgereift genug ist, um eine Unternehmensanwendung zu testen.
Weitere Informationen zu GWT EXT finden Sie unter: http://gwt-ext.com/
Weitere Informationen zu EXT GWT (GXT): http://extjs.com/products/gxt/
quelle
Keine großen Fallstricke, die ich nicht so einfach überwinden konnte. Verwenden Sie den gehosteten Modus stark. Da Sie GWT-ext verwenden, müssen Sie CSS fast nie selbst berühren, es sei denn, Sie möchten den Out-of-the-Box-Look optimieren.
Meine Empfehlung ist, ein "natives" GWT-Widget über einer Bibliothek zu verwenden, in der die Funktionen nahe beieinander liegen.
Indizierung von Suchmaschinen: Ja, die Website verfügt normalerweise nicht über navigierbare URLs (es sei denn, Sie fügen nur Elemente einer regulären Website Widgets hinzu). Sie können jedoch die Vorwärts- / Rückwärtsfunktion des Verlaufs ausführen.
quelle
Ich habe GWT und GWT-ext vor einiger Zeit zusammen für ein Projekt verwendet. Ich fand die Erfahrung im Verlauf der Webentwicklung recht reibungslos, aber mein Rat wäre folgender:
Mischen Sie keine nativen GWT-Widgets mit EXT-Widgets. Es ist verdammt verwirrend, da die Namen normalerweise gleich sind (GWT.Button oder GWText.Button?)
Eine Sache, die mir passiert ist und die den Code wirklich komplexer gemacht hat, als ich es gerne hätte, war, dass ich ein Panel wollte, das a) dynamisch aktualisierbar b) kaskadierbar ist
Native GWT-Panels sind dynamisch, Ext-Panels sind kaskadierbar. Lösung? Ein GWT.VerticalPanel, das ein GWTExt-Panel umhüllt ... Chaos. :) :)
Aber hey, es funktioniert. ;)
quelle
Ich stimme dem Kommentar von ykagano zu, der größte Nachteil ist der Verlust des V in MVC. Obwohl Sie die wahre UI-Klasse vom Rest Ihres clientseitigen Codes trennen können, können Sie eine von einem Grafik- / Webdesigner generierte HTML-Seite nicht einfach verwenden. Dies bedeutet, dass Sie einen Entwickler benötigen, um HTML in Java zu übersetzen.
Holen Sie sich einen wysiwyg ui-Editor, der Ihnen viel Zeit spart. Ich benutze GWTDesigner.
Der größte Vorteil von GWT besteht darin, dass Sie browserübergreifende Probleme vergessen können. Es ist nicht 100%, nimmt aber fast den ganzen Schmerz weg. In Kombination mit dem Vorteil des Debuggens im gehosteten Modus (im Gegensatz zu Firebug, das ausgezeichnet ist, aber nicht mit einem Java-Debugger identisch ist) bietet es dem Entwickler einen großen Vorteil bei der Generierung komplexer Ajax-Apps.
Oh, und es ist schnell zur Laufzeit, besonders wenn Sie einen GZIP-Filter verwenden.
quelle
Etwas abseits des Themas, aber der # gwt-Kanal auf irc ist sehr hilfreich, falls Sie ein anhaltendes Problem haben.
quelle
GWT ist ziemlich einfach und intuitiv.
Insbesondere mit der Veröffentlichung von UIBinder, mit dem GWT-Widgets in XML angelegt und anschließend in Java codiert werden können.
Wenn Sie also andere Ajax- oder Flash-Designtools oder Silverlight usw. verwendet haben, ist GWT sehr einfach zu erlernen.
Die größte Hürde, wenn nicht sogar die Gefahr, ist GWT RPC. Der Grund, warum Sie GWT verwenden möchten, ist der asynchrone GWT-RPC. Andernfalls können Sie sich beim Formatieren Ihrer Seite einfach auf CSS verlassen.
GWT RPC ist das Element, mit dem Ihr Server Daten auf Ihrem Server aktualisieren kann, ohne die Seite aktualisieren zu müssen. Dies ist eine unabdingbare Voraussetzung für Seiten wie die Überwachung der Aktienperformance (oder die aktuelle Staats- und Staatsverschuldung der USA oder die Anzahl der ungeborenen Babys, die weltweit sekundenweise abgebrochen werden).
GWT RPC braucht einige Mühe, um es zu verstehen, aber nach ein paar Stunden sollte alles klar sein.
Darüber hinaus stellen Sie nach einigen Anstrengungen zum Erlernen von GWT RPC schließlich fest, dass Sie JSPs nicht als Servicekomponente für RPC verwenden können, es sei denn ... Ich habe eine 8-teilige (glaube ich) Serie in meinem Blog über die Verwendung von JSP als GWT RPC-Servicer. Da Sie jedoch nicht um Antworten, sondern nur um Probleme gebeten haben, werde ich auf die Werbung für meinen Blog verzichten.
So. Ich bin der festen Überzeugung, dass die schlimmsten Hindernisse / Fallstricke bei der Verwendung von GWT darin bestehen, herauszufinden, wie GWT async RPC ordnungsgemäß bereitgestellt und JSP-Servicer verwendet werden können.
quelle
Es fiel uns sehr schwer, unsere GWT-Codebasis mit HTML-Webvorlagen zu verbinden, die wir von einem Webdesigner erhalten haben (statische HTML-Seiten mit bestimmten Div-IDs, die GWT verwalten soll). Zumindest als wir es verwendeten, konnten wir GWT nicht dazu bringen, sich in Teile unserer Website zu integrieren, die nicht in GWT codiert waren. Wir hatten es irgendwann zum Laufen gebracht, aber es war ein großer Hack.
quelle
Aber für ein großes Javascript-Projekt ist es die beste Wahl
quelle
GWT 2.4 hat viele der oben genannten Probleme behoben und eine großartige Widget-Bibliothek kommt gerade aus der Beta (Ext GWT 3.0.4 aka GXT) heraus, die vollständig in GWT geschrieben ist und kein Wrapper einer JS-Bibliothek ist.
Verbleibender Schmerz:
quelle
In Bezug auf GWT 2.4 verwenden Sie Firefox beim Debuggen von GWT, es ist viel schneller als die Verwendung von Chrome. Wenn Sie nur Firefox verwenden, sollten Sie diese Zeile in Ihre Datei project.gwt.xml einfügen
Wenn Sie Eclipse verwenden, fügen Sie unter Argumente -> VM-Argumente Folgendes hinzu:
-Xmx512m -XX: MaxPermSize = 1024m -XX: PermSize = 1024m
Sie können Ihren Server und Client teilen und unter Argumente -> Programmargumente Folgendes verwenden: -codeServerPort 9997 -startupUrl http: // yourserver / project -noserver
Verwenden Sie JRebel http://zeroturnaround.com/blog/how-to-rock-out-with-jrebel-and-google-web-toolkit-gwt/ , um zu verhindern, dass Ihr Server bei jeder Änderung aktualisiert wird. Und hier ist eine Live-Demo http://www.youtube.com/watch?feature=player_embedded&v=4JGGFCzspaY
quelle
Eine große Gefahr besteht darin, dass Sie manchmal explizit eine ID dem HTML-Element zuweisen müssen, um bestimmte CSS-Stile verwenden zu können. Beispiel: Ein GWT-TabPanel führt nur Folgendes aus: Bewegen Sie den Mauszeiger über tabBarItems, wenn der tabBar des tabPanel eine ID zugewiesen wurde und Sie einen: Hover auf dieser Element-ID angeben.
Ich habe an anderer Stelle über einige andere Nachteile von GWT geschrieben , aber sie werden bereits durch die Antwort von rustyshelfs abgedeckt :).
quelle
Ich habe in letzter Zeit viel an GWT gearbeitet, und das muss ich sagen:
Ich weiß nicht viel über GWT-EXT, aber auch ich bin der Überzeugung, dass es nicht notwendig ist, Bibliotheken von Drittanbietern einzuschließen.
Viel Glück bei Ihrer Entscheidung :)
quelle
GWT führt Browser-Sniffing anstelle der Funktionserkennung durch und Ihre Anwendung funktioniert auf einigen Browsern (insbesondere neuen) nicht.
Hier sind einige Hinweise auf das Problem:
Hier einige Hinweise zur Funktionserkennung:
Auszug aus dem Vergleich von JavaScript-Frameworks - Wikipedia
quelle
Das GWT-Team hat im Vergleich zur Veröffentlichung von GWT 2.7 im letzten Jahr viele großartige Verbesserungen vorgenommen. Eine große Schwäche von GWT war, dass die Kompilierung in GWT 2.6 und darunter zu lange dauert. Dies ist jetzt weg GWT hat keine inkrementelle Kompilierung, die superschnell ist und nur die Änderungen kompiliert.
GWT 2.7 hat jetzt ( Quelle ):
quelle
Der beste Weg, um verlässliche Fakten zu erhalten, ist das Denken Sie daran, dass Sie js in GWT jederzeit verwenden können. Wenn Sie also mit GWT zu kämpfen haben, sollten Sie js verwenden. Am Ende des Tages ist GWT js, so dass Sie in GWT alles tun können, was Sie in js können. Tatsächlich verwenden die meisten GWT-Projekte js. Das Problem ist, dass GWT drastisch komplizierter ist. Trotzdem ist es manchmal die zusätzliche Komplexität wert. GWT-Umfrage . Eines der größten Probleme mit GWT war immer eine lange Kompilierungszeit. Glücklicherweise verbessert es sich sehr schnell, so dass es in naher Zukunft kein bedeutendes Problem sein wird. Eine weitere Gefahr besteht darin, dass GWT dramatisch komplizierter ist, da Java eine kompliziertere Sprache ist, die schlechten Codierern bei jedem Schritt des Weges widersteht. Darüber hinaus wird beim Kompilieren eine Ebene hinzugefügt. Zum Beispiel benötigt js interop eine kleine Boilerplate. Das grundlegende Problem ist, dass GWT nicht einfach gestaltet wurde. Es wurde von Grund auf für extrem komplizierte Web-Apps entwickelt und die gesamte Community priorisiert konsequent Leistung, Codequalität, Architektur usw. gegenüber einfacher Codierung.
Es ist erwähnenswert, dass GWT 3.0 massive Verbesserungen bringen wird.
quelle
Wiederverwendung von RPC-Dienstobjekten.
Es verursacht Rennbedingungen mit Symptomen, die aussehen, als würde die App hängen.
quelle
Fallstricke, auf die ich gestoßen bin 1. Unterschiedliches Verhalten im Superdev-Modus. Zum Beispiel funktioniert Someclass.class.getName () im Superdev-Modus einwandfrei und gibt den vollständig qualifizierten Namen der Klasse zurück. Im produktiven Modus funktioniert dies nicht.
quelle
GWT ist ein technologisches Meisterwerk. Es vereint Client- und Server-Programmierung und macht es zu einer zusammenhängenden Anwendung - der Art und Weise, wie Software vor dem "Layering" geschrieben wurde und wie sie geschrieben werden sollte. Es eliminiert unterschiedliche Fähigkeiten, Missverständnisse zwischen Teammitgliedern und im Allgemeinen die gesamte Webdesign-Phase: sowohl die künstlerische als auch die Programmierphase. Und es ist am nächsten an der mobilen Entwicklung, z. B. der Android-Entwicklung. Tatsächlich wurde GWT entwickelt, um verschiedene native Benutzeroberflächen zu generieren, nicht nur HTML. Es erfordert jedoch enorme Disziplin, um eine solche Entkopplung sicherzustellen - um Ihre inneren Schichten präsentationsunabhängig zu halten.
Der erste Fehler, den Sie vermeiden sollten, für dessen Realisierung ich vier Jahre gebraucht habe, ist die Verwendung von Erweiterungen von Drittanbietern wie EXT-GWT, auch bekannt als GXT und SmartGWT. Es ist sehr verlockend, ihre hübschen Desktop-Widgets zu verwenden, anstatt in Ihr eigenes Styling zu investieren, aber ich kann nicht sagen, wie viele Probleme ich mit SmartGWT hatte, bis ich endlich die Nase voll hatte. Kurz gesagt, es friert die GWT-Kernfunktionen auf der bestimmten (ziemlich veralteten) Ebene ein und baut darauf auf. Denken Sie auch daran, dass das gemeißelte Desktop-Erscheinungsbild heutzutage albern aussieht, ganz zu schweigen von der schleppenden Leistung, den unzähligen Fehlern und den Kompatibilitätsfunktionen - insbesondere auf Mobilgeräten. Sie möchten so nah wie möglich an den nativen Browser-Steuerelementen bleiben, dh Dropdowns, die als native <select> -Elemente gerendert werden, nicht als benutzerdefinierte Steuerelemente.
Dank mobiler Trends wird die gesamte UX einfacher und flacher, sodass Sie nicht viel tun müssen, um eine scharf aussehende Anwendung zu gestalten. Wenn Sie einen "3D" -Look wünschen, gibt es auch Farbverläufe. CSS3 hat alles einfach gemacht, und GWT verpackt es im Gegensatz zum rohen CSS elegant und objektorientiert. Lassen Sie sich also nicht entmutigen, wenn Sie sich die hässlichen Barebone-Steuerelemente im GWT Showcase ansehen. Das GWT-Team hat absichtlich kein Styling angeboten, weil es die Aufgabe des Entwicklers ist.
Der Rest ist so ziemlich die konventionelle Browserprogrammierung in stark typisiertem Java mit schönen, prägnanten APIs. Aber natürlich vergessen Sie nie, dass Ihr Code im Browser ausgeführt wird. Daher sind alle Aufrufe asynchron, z. B. können Sie GWT-RPC-Methoden nicht in einer Schleife aufrufen (um eine Liste zu füllen), sondern müssen sie rekursiv verketten, wenn Sie jemals dazu kommen Lage.
Es gibt einige selbsternannte "Anti-Patterns", die GWT-RPC nicht verwenden. Bisher war es gut für mich: seit 10 Jahren. Einfachheit ist der Schlüssel. Ich würde nicht einmal eine Sekunde denken, um eine marginale Leistung für Code-Eleganz und Wartbarkeit zu opfern. Außerdem wären hier nicht Ihre Engpässe - in der Datenbank. Beachten Sie natürlich, wie viele Daten Sie an den Client senden.
Und wenn Sie das vorhandene Gadget nicht finden oder formatieren können - lesen Sie den umfangreichen HTML5-Elementsatz -, können Sie jederzeit einen von Drittanbietern umschließen. Ich habe es mit einem beliebten jQuery FullCalendar gemacht. Überhaupt keine Raketenwissenschaft. Alles andere wie Google Maps und Google Charts verfügt über halboffizielle GWT-Wrapper.
GWT ist perfekt. Der einzige Grund, warum es nicht genug Liebe bekommt, ist, dass frühe Internet-Anwender, die immer noch Einfluss auf die Branche haben, nicht aus der Informatik und objektorientierten Sprachen kamen, um sie zu schätzen. Sie haben entweder künstlerischen (Photoshop / WordPress) oder Netzwerk-Hintergrund (Perl / Python).
quelle