RAP vs GWT - Which AJAX technology is for you?

Werbung
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
Herunterladen