Presentation is loading. Please wait.

Presentation is loading. Please wait.

Can you write REAL applications with AJAX? Phil Sarin Advanced UI Software April 15, 2009.

Similar presentations


Presentation on theme: "Can you write REAL applications with AJAX? Phil Sarin Advanced UI Software April 15, 2009."— Presentation transcript:

1 Can you write REAL applications with AJAX? Phil Sarin Advanced UI Software April 15, 2009

2 Problem: Many web apps stink

3 Rich Internet Applications (RIAs) Easy deployment and maintenance “Desktop-like” interactivity Willing to sacrifice some “webness” (e.g., bookmarks)

4 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?

5 Questions for today Can we approach AJAX development like “regular” GUI development? What are the approaches/tradeoffs? What’s likely to become popular?

6 What is AJAX?

7

8 AJAX event handling

9 Some History

10 History: Hill Climbing

11 RIA: Which hill to climb?

12 Approaching RIAs from two hills HTTPDirect Manipulation Origins in early web sitesOrigins in desktop GUIs Built around the HTTP protocolBuilt around user events Generating HTMLLaying out graphical objects

13 The HTTP Hill

14 Static Pages Server fetches and returns a web page Initially just text-based With Mosaic, pictures too

15 The HTTP Hill Dynamic Pages Server-side ▫CGI (mostly perl) Client-side ▫Javascript

16 The HTTP Hill “Frameworks” MVC support (Struts 1 & 2, Rails, Django) Easier HTML generation (JSP, ERB, Freemarker, …) State/sessions Javascript libraries (Prototype, DOJO, jQuery)

17 The HTTP Hill Pros/Cons (prior to AJAX) +Very cheap for simple sites +Reasonably flexible ▫Mail clients! +Web-friendly ▫Bookmarkable ▫Indexable -Slow feedback -Minimal interactivity -Cross-browser mayhem

18 The Direct Manipulation Hill

19

20 GUI Toolkits Common widget set across applications Standalone or client-server

21 The Direct Manipulation Hill for Internet applications Browser Plug-Ins Flash, Java, Silverlight Took a long time to catch on

22 The Direct Manipulation Hill Pros/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

23 Where does AJAX fit in?

24 Both hills!

25 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

26 Direct Manipulation AJAX

27 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

28 Thin Client AJAX Approach

29 Example: Google Maps (pretend it’s a thin client app)

30 A Grid of Images

31 Example: Google Maps

32

33 Sequence

34 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

35 Fat Client AJAX Approach

36 Example: Google Maps

37

38 Sequence

39 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

40 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

41 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

42 So, is AJAX viable for RIAs? Fat AJAXThin AJAXPlugin (Flash, Swing) Feedback SpeedWinner (tied) Interactive Potential Winner ScalabilityWinner (tied) Cross-platform Consistency Winner MomentumGoogle does a lot of work for you. ?Adobe does a lot of work for you. Ease of Programming Winner

43 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?

44 Some Toolkits

45 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/DevGu ideUserInterface.html

46 …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); list.@java.util.ArrayList::add(Ljava/lang/Objec t;) (link.id); } }-*/; http://code.google.com/webtoolkit/doc/1.6/DevGu ideUserInterface.html

47 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/

48 Javascript as “assembly language” http://280slides.com

49 Cappuccino vs GWT Philosophical question GWT: RIAs that are part of of the web Cappuccino: RIAs deployed over the web ▫Alternative to Flash/Flex

50 Finally

51 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.

52 References 1 adaptive path » ajax: a new approach to web applications. (n.d.).. Retrieved April 8, 2009, from http://www.adaptivepath.com/ideas/essays/archives/000385.php. 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/.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/.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.http://www.theserverside.com/news/thread.tss?thread_id=40804

53 References 2 Dare 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. 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.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.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.

54 References 3 Echo2 versus GWT The Register. (n.d.).. Retrieved April 9, 2009, from http://www.theregister.co.uk/2006/08/24/echo2_framework/. 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. 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/.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.

55 References 4 Mesbah, 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.


Download ppt "Can you write REAL applications with AJAX? Phil Sarin Advanced UI Software April 15, 2009."

Similar presentations


Ads by Google