{"id":343,"date":"2009-06-06T17:39:00","date_gmt":"2009-06-06T17:39:00","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=343"},"modified":"2009-06-06T17:39:00","modified_gmt":"2009-06-06T17:39:00","slug":"will-ich-eigentlich-ria-mit-ext-gwt","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2009\/06\/will-ich-eigentlich-ria-mit-ext-gwt\/","title":{"rendered":"Will ich eigentlich RIA mit Ext GWT?"},"content":{"rendered":"<p>Nach dem ich nun eine Woche eine Anwendung mit Ext GWT (GXT) zusammengebaut habe, kommen mir Zweifel, ob Ext GWT \u00fcberhaupt das richtige f\u00fcr meinen Anwendungsfall ist. Einige Fragen in dem Zusammenhang:<\/p>\n<p><strong>Ist Ext GWT 2.0 M2 gut gew\u00e4hlt?<\/strong><\/p>\n<p>Ext GWT 2 gibt es noch gar nicht lange (<a title=\"http:\/\/extjs.com\/blog\/2009\/05\/20\/ext-gwt-20-milestone-2-released\/\" href=\"http:\/\/extjs.com\/blog\/2009\/05\/20\/ext-gwt-20-milestone-2-released\/\">http:\/\/extjs.com\/blog\/2009\/05\/20\/ext-gwt-20-milestone-2-released\/<\/a>), neues M2 Release also vor 2 Wochen, und die Komponenten sind grunds\u00e4tzlich toll. Auf der Demo Seite <a title=\"http:\/\/extjs.com\/examples-dev\/explorer.html#overview\" href=\"http:\/\/extjs.com\/examples-dev\/explorer.html#overview\">http:\/\/extjs.com\/examples-dev\/explorer.html#overview<\/a> kann man sich das anschauen.<\/p>\n<p>Probleme: Ext GWT 2.0 hat in meinen Augen sehr vielen \u00c4nderungen in der API. Quellcode f\u00fcr Ext GWT 1.0 findet man im Netz, doch viele Beispiele lassen sich nicht ohne weiteres auf die 2er Version \u00fcbertragen. Wer migrieren will\/muss wird noch seinen Spa\u00df bekommen. Einige Beispiele laufen in der Demo nicht (<a title=\"http:\/\/extjs.com\/examples-dev\/explorer.html#grouping\" href=\"http:\/\/extjs.com\/examples-dev\/explorer.html#grouping\">http:\/\/extjs.com\/examples-dev\/explorer.html#grouping<\/a>), bei anderen fehlt der Quellcode im Demo. Da muss man dann die Quellen laden.<\/p>\n<p>Laut Ank\u00fcndigung m\u00fcsste GXT schon l\u00e4ngst fertig sein.<\/p>\n<p><strong>Was passt mir an Ext GWT nicht?<\/strong><\/p>\n<ul>\n<li>Die Dokumentation. Einfache Beispiele zu finden kostet viel Zeit. Es fehlt so etwas wie ein <a href=\"http:\/\/www.exampledepot.com\/\">Java-Almanac<\/a> f\u00fcr Ext GWT. Aus komplexen Szenarien kann man sich einfache Beispiele ableiten, von dort diese auf seinen Anwendungsfall \u00fcbertragen. Selbst die Beispiele aus dem ShowCase k\u00f6nnten einfacher sein, denn der ShowCase nutzt interne \u201cDemo-Datengeber-Klassen\u201d. Hier w\u00e4ren in meinen Augen einfachere Beispiele gut gewesen, die wirklich eigenst\u00e4ndig sind um schnell die wichtigsten Schnittstellen ablesen zu k\u00f6nnen.\n<li>Compiliere ich meine Programme, so lassen sich im Browser pl\u00f6tzlich keine Textfelder mehr selektieren und den Cursor sieht man nicht.\n<li>Das Layout-Handing. Da die Ext GWT Anwendungen auf eine \u201cBildschirmseite\u201d kommen, und weniger auf einem beliebig langen HTML-Dokument, gibt es Probleme mit den H\u00f6hen. Manches mal sind die Elemente in einem Scroll-Container zu klein, dann zu gro\u00df. Ich habe viel Zeit damit verbracht, gro\u00dfe Tabellen in den richtigen Gr\u00f6\u00dfen auf den Container zu setzen.\n<li>W\u00e4hrend das Orginal-GWT viele eher den typischen Web-Charakter hat, basiert Ext GWT auf dem Applikationsgedanken: (Popup-)Men\u00fcs in Web-Applikationen? Hm \u2026\n<li>Anpassungen des Aussehens sind eine Qual. Die CSS-Datei gxt-all.css ist <strong>6478<\/strong> Zeilen lang, gxt-gray.css noch mal 443! Wer viel Zeit hat, kann einmal versuchen, den Font 2 Pixel gr\u00f6\u00dfer zu setzen. Dazu m\u00fcssen nat\u00fcrlich auch die Icons passen. Strg++ geht nicht einfach so.\n<li>Es \u201cerfindet\u201d GXT eigentlich alles neu: Widgets, Container, Layout-Manager, Grafik-Einbindung, \u2026. Besonders bl\u00f6d ist das bei den Grafiken, wo Google mit Proxies einen sch\u00f6nen Ansatz f\u00e4hrt.\n<li>Es gibt keinen Gui-Builder, f\u00fcr GWT aber schon.<\/li>\n<\/ul>\n<p><strong>War Ext GWT eine gute Wahl, oder h\u00e4tte es doch SmartGWT sein sollen?<\/strong><\/p>\n<p>Das wei\u00df ich nicht, denn mit SmartGWT habe ich nur einfache Beispiele programmiert. Ext GWT hat aber den gleichen RIA-Ansatz wie SmartGWT, und unterscheidet sich nicht gro\u00dfartig im Ansatz. Die GXT-Komponenten sehen auf jeden Fall super aus. Daher hat mich GXT ja auch so angezogen. Wer h\u00fcbscher ist gewinnt \ud83d\ude42 Die Komponenten sind fancy und meine Lieblinge sind <a title=\"http:\/\/extjs.com\/examples-dev\/explorer.html#advancedcharts\" href=\"http:\/\/extjs.com\/examples-dev\/explorer.html#advancedcharts\">http:\/\/extjs.com\/examples-dev\/explorer.html#advancedcharts<\/a> (cool), <a title=\"http:\/\/extjs.com\/examples-dev\/explorer.html#gridplugins\" href=\"http:\/\/extjs.com\/examples-dev\/explorer.html#gridplugins\">http:\/\/extjs.com\/examples-dev\/explorer.html#gridplugins<\/a>, <a title=\"http:\/\/extjs.com\/examples-dev\/explorer.html#grouping\" href=\"http:\/\/extjs.com\/examples-dev\/explorer.html#grouping\">http:\/\/extjs.com\/examples-dev\/explorer.html#grouping<\/a>, <a title=\"http:\/\/extjs.com\/examples-dev\/explorer.html#filtertree\" href=\"http:\/\/extjs.com\/examples-dev\/explorer.html#filtertree\">http:\/\/extjs.com\/examples-dev\/explorer.html#filtertree<\/a>, <a title=\"http:\/\/extjs.com\/examples-dev\/explorer.html#gridtogrid\" href=\"http:\/\/extjs.com\/examples-dev\/explorer.html#gridtogrid\">http:\/\/extjs.com\/examples-dev\/explorer.html#gridtogrid<\/a>.<\/p>\n<p><strong>Ist ein RIA-Framework wie GXT immer gut?<\/strong><\/p>\n<p>Das ist eigentlich die zentrale Frage.<\/p>\n<ul>\n<li>Die Standard-Komponenten von GWT sind etwas \u201ceinfach\u201d. Nat\u00fcrlich nutzt GXT das GWT als Infrastruktur, aber hat sich in meinen Augen weit davon entfernt.<\/li>\n<li>GXT versucht, alle Desktop-Komponenten in den Browser zu bekommen. Und so bekommen wir immer mehr und mehr tolle Komponenten. Das hat aber seinen Preis! Der generierte JavaScript-Code wird schnell astronomisch. Und die Anwendungen sehen eben nicht mehr so aus wie Webseiten. Das ist mal gewollt, mal nicht gewollt. Ein richtig und falsch gibt es nicht! Wer aber vollst\u00e4ndige Applikationen im Web-Schreiben m\u00f6chte, der bekommt mit GXT ein gutes Framework. Alles ist vorbereitet und das Look-and-Feel konsistent.<\/li>\n<li>\u00c4nderungen des Aussehens sind aufw\u00e4ndig. Wenn man also HTML\/CSS sehen und damit designen m\u00f6chte, ist mit GXT nicht optimal bedient. (Als n\u00e4chstes teste ich <a title=\"http:\/\/code.google.com\/p\/google-web-toolkit-incubator\/wiki\/UiBinder\" href=\"http:\/\/code.google.com\/p\/google-web-toolkit-incubator\/wiki\/UiBinder\">http:\/\/code.google.com\/p\/google-web-toolkit-incubator\/wiki\/UiBinder<\/a> &#8212; wenn der denn mal im Trunk ist\u2026) Soll ein (echte) Webdesigner eine GXT-Anwendung skinnen, wird der sicherlich nicht gl\u00fccklich werden. Es ist eben nicht Design first.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Nach dem ich nun eine Woche eine Anwendung mit Ext GWT (GXT) zusammengebaut habe, kommen mir Zweifel, ob Ext GWT \u00fcberhaupt das richtige f\u00fcr meinen Anwendungsfall ist. Einige Fragen in dem Zusammenhang: Ist Ext GWT 2.0 M2 gut gew\u00e4hlt? Ext GWT 2 gibt es noch gar nicht lange (http:\/\/extjs.com\/blog\/2009\/05\/20\/ext-gwt-20-milestone-2-released\/), neues M2 Release also vor 2 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[16,15],"tags":[],"class_list":["post-343","post","type-post","status-publish","format-standard","hentry","category-gwt","category-web-frameworks"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/343","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=343"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/343\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}