Can you write REAL applications with AJAX? Phil Sarin Advanced UI Software April 15, 2009.
-
Upload
camron-andrews -
Category
Documents
-
view
216 -
download
0
Transcript of Can you write REAL applications with AJAX? Phil Sarin Advanced UI Software April 15, 2009.
Rich Internet Applications (RIAs)•Easy deployment and maintenance•“Desktop-like” interactivity•Willing to sacrifice some “webness”
(e.g., bookmarks)
RIA Approaches
•Browser plug-in▫Flash/Flex, Java Swing, Silverlight▫Potentially greater interactivity, higher
barrier to adoption▫Concerns about openness/control
•In browser, no plug-ins▫AJAX▫Lower barrier to adoption▫Cross-browser mayhem?
Questions for today
•Can we approach AJAX development like “regular” GUI development?
•What are the approaches/tradeoffs?•What’s likely to become popular?
Approaching RIAs from two hills
HTTP Direct Manipulation
Origins in early web sites Origins in desktop GUIs
Built around the HTTP protocol Built around user events
Generating HTML Laying out graphical objects
The HTTP HillStatic Pages
• Server fetches and returns a web page
• Initially just text-based• With Mosaic, pictures too
The HTTP Hill“Frameworks”
• MVC support(Struts 1 & 2, Rails, Django)
• Easier HTML generation(JSP, ERB, Freemarker, …)
• State/sessions• Javascript libraries
(Prototype, DOJO, jQuery)
The HTTP HillPros/Cons (prior to AJAX)
+ Very cheap for simple sites+ Reasonably flexible
▫ Mail clients!+ Web-friendly
▫ Bookmarkable▫ Indexable
- Slow feedback- Minimal interactivity- Cross-browser mayhem
The Direct Manipulation HillGUI Toolkits
• Common widget set across applications
• Standalone or client-server
The Direct Manipulation Hillfor Internet applications
Browser Plug-Ins
• Flash, Java, Silverlight• Took a long time to catch
on
The Direct Manipulation HillPros/Cons
+ Timely feedback+ Programming power
(behaviors, constraints – at least possible)
+ Common widgets(consistency, usability)
+ Flash/etc: more consistent runtime platform
- Flash/etc: needs a plug-in- Cross-platform issues still
exist- Proprietary runtime platform
AJAX on the HTTP Hill
•Tactical features▫Autocomplete▫Drag and drop
•AJAX-aware code▫Raw Javascript/HTML/CSS▫Or with a library
•Okay for some applications•Too limiting for RIAs•Not the focus of this talk
AJAX on the Direct Manipulation Hill• Separate development
environment from runtime environment.
• Runtime environment: HTML/Javascript/CSS (AJAX)
• Development environment: toolkit in another language
• Two approaches: thin and fat
Thin Client Pros and Cons
+Simple programming: ignore the network+All your code runs server-side+Programmers love it!
+Undo, behaviors, constraints: all possible!- Scalability (server-side state, lots of
requests)- Slow feedback: network hop for each user
action
Wait a second…
•No AJAX calls involved in moving the map around!▫Mostly Javascript.▫New image requests are synchronous
•Example AJAX call: adding an intermediate destination
Fat Client Pros and Cons
+Scalable (client-side state, fewer HTTP calls)
+Fast feedback+Undo, behaviors, constraints possible…- …but undo more complex than on the
desktop- More complicated: network-aware,
distributed
Example AJAX Toolkits
•Google Web Toolkit: Fat Client▫Write in Java, compiled to Javascript
•Cappuccino: Fat Client•Echo2: Thin Client
▫Write in Java▫No HTML/CSS (proprietary stylesheet
language)•Echo3 (Java – Beta): hybrid
▫Thin widgets in Java▫Fat widgets in Javascript
So, is AJAX viable for RIAs?Fat AJAX Thin AJAX Plugin
(Flash, Swing)
Feedback Speed
Winner (tied) Winner (tied)
Interactive Potential
Winner
Scalability Winner (tied) Winner (tied)
Cross-platform Consistency
Winner
Momentum Google does a lot of work for you.
? Adobe does a lot of work for you.
Ease of Programming
Winner
Thin vs Fat AJAX?
•Thin AJAX: Squeezed out▫Insufficient if interactivity matters▫Not as easy as an HTTP-oriented
application•Fat AJAX: How does it compare to plug
ins?▫Developer adoption?▫Application philosophy?
GWT: A Toolkit…
•Laying out widgets in a container “panel”
•Events and handlers
// Create a Horizontal Panel HorizontalPanel hPanel = new HorizontalPanel();
// Leave some room between the widgets hPanel.setSpacing(5);
// Add some content to the panel for (int i = 1; i < 5; i++) { hPanel.add(new Button("Button " + i)); }
http://code.google.com/webtoolkit/doc/1.6/DevGuideUserInterface.html
…with non-strict abstractions
•Styling with CSS•Directly embed
Javascript•Raw HTML•Direct DOM
manipulation
private native void putElementLinkIDsInList(Element elt, ArrayList list) /*-{ var links = elt.getElementsByTagName("a");
for (var i = 0; i < links.length; i++ ) { var link = links.item(i); link.id = ("uid-a-" + i); [email protected]::add(Ljava/lang/Object;) (link.id); } }-*/;
http://code.google.com/webtoolkit/doc/1.6/DevGuideUserInterface.html
Cappuccino: A different philosophy
“When you program in Cappuccino, you don't need to concern yourself with the complexities of traditional web technologies like HTML, CSS, or even the DOM. The unpleasantries of building complex cross browser applications are abstracted away for you.”
http://cappuccino.org/learn/
Cappuccino vs GWT
•Philosophical question•GWT: RIAs that are part of of the web•Cappuccino: RIAs deployed over the web
▫Alternative to Flash/Flex
Recommendations
•If you’re serious about RIAs, climb the direct manipulation hill.
•Don’t limit yourself to Thin AJAX.•AJAX sweet spot: Applications that are
part of the web.•AJAX is an implementation alternative for
applications deployed over the web.
References 1adaptive path » ajax: a new approach to web applications. (n.d.). . Retrieved April 8, 2009, from http://www.adaptivepath.com/ideas/essays/archives/000385.php.
Adobe wants to be the Microsoft of the Web at Ted Leung on the Air. (n.d.). . Retrieved April 8, 2009, from http://www.sauria.com/blog/2007/03/01/adobe-wants-to-be-the-microsoft-of-the-web/.
Cappuccino Web Framework - Build Desktop Class Applications in Objective-J and JavaScript. (n.d.). . Retrieved April 15, 2009, from http://cappuccino.org/.
Comparing the Google Web Toolkit to Echo2. (n.d.). . Retrieved April 9, 2009, from http://www.theserverside.com/news/thread.tss?thread_id=40804.
References 2Dare Obasanjo aka Carnage4Life - What Comes After AJAX? (n.d.). . Retrieved April 8, 2009, from http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=11c471d6-ea65-4ed2-b387-c9ec966d8418.
Developer's Guide - Google Web Toolkit - Google Code. (n.d.). . Retrieved April 9, 2009, from http://code.google.com/webtoolkit/doc/1.6/DevGuide.html.
Echo2 Technical Overview | Echo Web Framework. (n.d.). . Retrieved April 8, 2009, from http://echo.nextapp.com/site/echo2/doc/tov.
Echo2 Tutorial | Echo Web Framework. (n.d.). . Retrieved April 8, 2009, from http://echo.nextapp.com/site/echo2/doc/tutorial.
References 3Echo2 versus GWT • The Register. (n.d.). . Retrieved April 9, 2009, from http://www.theregister.co.uk/2006/08/24/echo2_framework/.
Feigin, B. (n.d.). Cappuccino and Objective-J. Retrieved from http://www.cs.cmu.edu/~bam/uicourse/830spring09/Benjamin%20Feigin%20-%20Cappuccino.pptx.
Following up on “The Microsoft of the Web” at Ted Leung on the Air. (n.d.). . Retrieved April 8, 2009, from http://www.sauria.com/blog/2007/03/04/following-up-on-the-microsoft-of-the-web/.
LaszloWhitePaper.pdf. (n.d.). . Retrieved April 8, 2009, from http://www.openlaszlo.org/whitepaper/LaszloWhitePaper.pdf.
References 4Mesbah, A., & van Deursen, A. (2006). An Architectural Style for Ajax. cs/0608111. Retrieved April 8, 2009, from http://arxiv.org/abs/cs/0608111.Tony C Shan, & Winnie W Hua. (2006).
Taxonomy of Java Web Application Frameworks. In e-Business Engineering, 2006. ICEBE '06. IEEE International Conference on (pp. 378-385). doi: 10.1109/ICEBE.2006.98.