Web 2.0's Rich Internet Applications
Presenter: John Tibbetts, Senior Consultant, Enterprise Architecture practice |
Web 2.0's Rich Internet Applications Webinar (WebEx recording, 11 MB)NOTE: Download the file to your computer by right-clicking the Webinar link and choosing "Save Target As" in Microsoft Internet Explorer or "Save Link As" in Netscape Navigator and Firefox. To play a WebEx recording (.wrf) file, you must use the WebEx Player. If you've already downloaded Meeting Manager when you participated in the Webinar, the player is installed. Otherwise, you can download the player from the WebEx Web site. Download a PDF of the presentation here (pdf, 181 KB) |
Summary
Join Cutter Senior Consultant John Tibbetts in an exploration rich internet applications (RIAs) that help you increase the "liveness" of a web-based application and combine the responsiveness of a desktop GUI with the zero-installation delivery of a Web application. You'll explore the three principle development approaches for Web 2.0 -- Ajax, Flex, and the Google Web Toolkit. John will share his impression of their strengths and weaknesses, show examples of rich clients developed using these approaches, and offer you a glimpse of what was involved in creating them.
John presented this topic as a roundtable at Summit 2007. We received such stellar feedback about the session, we asked him to present it to a wider audience of Cutter clients. Don't miss this opportunity to learn what's really "under the hood" of Web 2.0 with John Tibbetts.
Additional Questions &Answers
This session was so lively that John ran out of time to answer all of the questions from the audience! Read his answers to the ones he couldn't address live below...
Q: Amazing examples - Thank you. Are there any Flex-based and GWT-based websites that are accessible via the public web?
A: Flex (you'll need to download Flash 9 player):
http://www.adobe.com/devnet/flex/?tab:samples=1
GWT:
http://code.google.com/webtoolkit/documentation/examples/
http://google.wikia.com/wiki/Google_Web_Toolkit
Better yet, look around for working apps for these products. You'll find them referenced on their web sites or in forums.
Q: How do you think SVGT can be used in RIA?
A: SVG (Scalable Vector Graphics) and its tiny counterpart SVGT are integrated into a number of browsers and cell phones. You'll have to look at fine print in the particular RIA approach for compatibility. GWT has a SVG library available ( http://roberthanson.blogspot.com/2006/06/coding-svg-with-gwt.html ). Flex has had support for an SVG subset that I believe isn't the same as Tiny. But these factoids change fast and should be checked out when a target RIA is considered).
Q:Is RIA same as RME (rich media environment)?
A: While there may be some overlap I don't consider them the same terms. I think the term RME applies to the integration of various digital media (esp. in the mobile environment). This is more like the space that Flash rather than Flex occupies. Media integration also seems the center of the Microsoft Silverlight initiative.
I consider RIAs to integrated digital media as one of their responsibilities but also with the UI architecture (GUI/OOUI) and middleware to support multi-tier application construction.
Q: Can you please provide your opinion on JSF based frameworks?
A:I think that JSF provides a best-practice Web 1.0 (maybe even "Web 1.5" – if everyone else can invent terms so can we). Java-based web apps evolved from servlet to JSP to JSP/Struts to JSF. At each step the architecture got cleaner -- in particular it became easier to understand where application behavior lived and why. The "Web 1.5" means that we can incrementally add life to the page through Ajax tools or A4J. These are all good things.
My long-term concern is that these architectures fundamentally still put too much presentation logic on the server. And while that's not as deadly as putting business logic on the client it still encourages confusing roles for platform tiers. RIAs allow us (though don't force us) to clean up the tiers. The front-tier owns all presentation responsibilities (and if we wish to change front-tiers to, say, mobile devices) we're already properly factored. The middle-tier owns non-visual application behavior. (There are so many possibilities for this that gets way out-of-scope of this discussion). But assume that it can support synchronous or asynchronous services or brokers that can support short-running conversational behavior or long-running workflow-ish behavior.
Q: How does RIA scale to mobile environments such as smartphones?
A:I can't say that I'm an authority on this. All the RIA providers have intentions in this area. JavaFX has an explicit agenda in mobile…as does Flex/Apollo. I think the best strategy is to keep the mobile client simpler which would favor solutions that don't have exotic client requirements.
Q: What is the implication of RIA development on web metrics? What are the "gotchas"?
A:Bad news/good news. The bad news first: Most web metrics try to infer user activity by examining the page choices. But RIAs look to the environment like a single page that keeps morphing as the user attention drifts. So you can't figure out what the user is looking at. (This is all less true for Ajax but exceedingly true for GWT/Flex).
There is some good news. The message traffic to the server doesn't represent presentation but may very well directly express what data the user requires or what actions they are performing. But this means that we're going to have to change the focus of our measurements from the presentation seam to the function seam.
Q: What should be the migration approach from 1.0 to RIAs? Parts of an application at a time? Full application? Big bang approach across a set of applications in the value chain?
A:I really can see all of these as being feasible depending on the situation (current situation, available skills & platform).
I think a good way to think about is this: we can improve user experience with incremental flow. But we won't be able to improve our end-to-end architecture (resulting in greater capability and simplicity) until do a full RIA.
Q: For non-captive users, you have little control over their client environment. Any supporting tools which allow you to predict performance across various configs?
A:Sorry I'm not aware of any. Maybe someone else on this thread does.
Q: Would you support enterprises building a composite applications where much/most of the application are standard web 1.0 look/feel, while supplementing a few screens/UIs with RIA? That is... using RIA only when necessary.
A:I think this is a reasonable tactic but in the long-run an inadequate strategy. As mentioned above.
Q: I read that Google's toolkit was released under an open license. Given this, wouldn't the open source community's enthusiasm for the company provide for the current lack of widgets -- its only mentioned problem here?
A:Yes this is true. In fact, I just noticed answering these questions that there are several new widget sets mentioned on the GWT site. Plus GWT 1.4 has quite a bit new widgetry and other capability. I've successfully used the 3rd-party, free library for GWT/GoogleMap integration.
Q: Is LINUX the preferred environment for these RIAs and WEB 2.0?
A:It is by me (server-side). But there really doesn't seem to be any fixed requirement for that. I've got Flex clients (people not browsers) that use .NET servers.
Q: Not really a question. But there are ways to make use of AJAX without the cons that you had listed? We use JSF to build our apps here and make use of the A4J extensions which handles the AJAX for you. Do you have any comments on this?
A:As mentioned above this is an admirable tactic. I recommend it for evolutionary approaches. GWT does have a contributed 'g4jsf' framework to integrate GWT panes (portions of the UI) into JSF. So that gets us a little further. Flex has some similar capability but seems to me to have such a different look that they don't visually meld. But that's a personal opinion.
Q: What is best approach to convert client/server application to Intranet application? I see some projects use the internet approach. Appreciate your opinion on this.
A:Your question raises many more questions than it asks:
1. Is the client/server app 2-tier (fat client-to-DB) or 3-tier
(client-to-application-or-object-layer-to-DB)?
2. What skill-sets are available on client and server to develop?
3. What technology platform are you using (J2EE, Spring, .NET, etc)?
(I'm not trying to act too much like a consultant here? :~} ) But let me give a very general answer to a very general answer:
I have disliked the architecture of Web 1.0 apps because the behavior is spread out in too many places. Even though Struts, now JSF, have cleaned up the web app architecture significantly (in the Java community) they're still way too spread out for my tastes. I don't really like doing presentation logic on the server.
I'm using RIAs for this kind of work...it's very much like doing client/server development. You can put various amounts of behavior on the client (depending on your philosophy of where behavior goes). I tend to put rich presentation logic on the client but delegate business logic to a middle-tier (but some apps don't need much middle-tier logic if they're just data editors).
In particular I'm using our own open-source framework WorkThru ( www.workthru.org) for middle-tier logic because it supports long-running, collaborative process objects (called Wips) that do a bottoms-up workflow. If your apps are more conversational (short-running processes rather than long-running) Spring can be a nice alternative. Or J2EE ... but that's pretty heavy-weight for most people these days.

