RAP vs. GWT vs. GAE/J + jquery Web Technologien im Verlgeich RAP vs GWT vs jquery Dominik Wißkirchen 30. Oktober 2010
Abkürzungen RAP AJAX RWT Rich AJAX Platform Asynchronous JavaScript and XML RAP Widget Toolkit GWT Google Web Toolkit GAE GAE/J GAE/P Google AppEngine Google AppEngine Java Google AppEngine Python
Gemeinsamkeiten von RAP + GWT AJAX basierte WebGUI Entwickler schreiben in Java (nicht in JavaScript) Cross Browser Kompatiblität Browser Internet Explorer Firefox Chrome Safari Opera iphone Android Rendering Engine Trident Gecko WebKit WebKit Presto WebKit WebKit JavaScript Engine JScript Spidermonkey/Jägermonkey V8 SquirrelFish Extreme Carakan SquirrelFish Extreme V8
GUI ShowCases / Widget Umfang Widgets Composites Panels RAP GWT Ext GWT SmartGWT jquery UI
Popularität von JavaScript Bibliotheken
RAP Architektur Ähnlich zur RCP Architektur, aber nicht 100% kompatibel RCP RCP-Plugin org.eclipse.swt org.eclipse.jface org.eclipse.workbench org.eclipse.ui RAP RAP-Plugin org.eclipse.rap.rwt org.eclipse.rap.jface org.eclipse.rap.workbench org.eclipse.rap.ui
RAP Architektur RAP Java BytecodeRCP wird auf dem Server ausgeführt Statische JavaScript Bibliothek wird zum Client übertragen
GWT Architektur Java Bytecode wird auf dem Server ausgeführt Dynamisch generierte JavaScript Dateien werden zum Client übertragen GWT GWT App GWT Widgets SmartGWT Java Compiler JS Compiler Java Bytecode JavaScript
RAP Kommunikation Seitenanfrage http://... qooxdoo Rendering Seitengenerierung Benutzereingaben Aktualisierte Darstellung Verarbeitung Benutzereingaben Rendering Daten Browser Server
GWT Kommunikation Seitenanfrage Rendering http://... Seitengenerierung Benutzereingaben Verarbeitung XMLHttpRequest Rendering Daten Browser Server
Kommunikation im Vergleich RAP GWT
Browser History GWT bietet eine Möglichkeit, Statusinformationen zu speichern Kompatiblität zur Browser History RAP Browser History Unterstützung seit Version 1.3 (23. Juni 2010) http://google-web-toolkit.googlecode.com/svn/javadoc/1.4/com/google/gwt/user/client/history.html
Vergleich der vorgestellten Lösungen Platform JSBibliothek GUI-Bibliothek Single Programming Language Single Sourcing Verbreitungsgrad Widget Umfang Lernkurve Quellcode Readability Ausführungsgeschwindigkeit JavaScript Debugging RAP qooxdoo RWT ja ja gering mittel mittel gut? schwer GWT/ SmartGWT SmartClient SmartGWT ja nein mittel hoch mittel-hoch ok langsam schwer GAE/ J+ jquery jquery jquery UI nein nein hoch hoch mittel-hoch schlecht langsam-mittel mittel
GWT Simplified RPC (XMLHttpRequest) http://code.google.com/support/bin/answer.py?answer=55196&topic=10210
GWT Simplified RPC Example Client: (kompiliert zu JavaScript) Server: public interface MailCommandsAsync { public void getmailitems(asynccallback callback); public void getmailitembody(asynccallback callback); } public interface MailCommands extends RemoteService { public List getmailitems(); public String getmailitembody(); } instance = ( ) GWT.create(MailCommands.class); ServiceDefTarget target = (ServiceDefTarget) instance; target.setserviceentrypoint(... + "MailCommands"); public class MailCommandsImpl extends RemoteServiceServlet implements MailCommands { public List getmailitems() { gather items return items; }... etc } instance.getmailitems( new AsyncCallback() { public void onsuccess(object result) { List items = (List) result; display items } public void onfailure(throwable caught) { notify user of exception } } ); XMLHttpRequest
and debugging JS that you wrote is easier than debugging JS that was generated from Java that you wrote. GWT / RAP langsamer als klassische Webanwendungen GWT Designer
Praxisbeispiel Webapplikation basierend auf GAE/J + jquery Remote Management von Android Geräten Link