Technical Articles by Sony Mathew, Software Architect, Twin Cities, MN


Tuesday, February 17, 2009


Comparing RIA Frameworks

Giving a Rich face-lift to an organization's websites can deliver such a superior user experience that quite possibly it can give the organization a clear edge over its competitors, but choosing the right RIA framework for your team is never an easy task. The frameworks, categories, and details presented in this article are not exhaustive by any means.

Reviewer: Sony Mathew: GWT 1.5, Laszlo 4.2, JavaScript Raw
Reviewer: Mark Ulmer: Flex 3.2

GWT 1.5 | AJAX Flex 3.2 | FLASH Laszlo 4.2 | AJAX Laszlo 4.2 | FLASH JavaScript Raw | AJAX
Platform/Technology Standard Browser
(HTML, JavaScript, AJAX).
FLASH
(Browser plug-in by Adobe)
Standard Browser
(HTML, JavaScript, AJAX).
FLASH
(Browser plug-in by Adobe)
Standard Browser
(HTML, JavaScript, AJAX).
User Experience Modest Rich
Approaching Desktop App feel
No Page refreshes, all data-access & rendering in the background.
Very Rich
Is exactly like a Desktop App
No Page refreshes, all data-access & rendering in the background.
Modest Rich
Approaching Desktop App feel
No Page refreshes, all data-access & rendering in the background.
Very Rich
Is exactly like a Desktop App
No Page refreshes, all data-access & rendering in the background.
Modest Rich
Approaching Desktop App feel
No Page refreshes, all data-access & rendering in the background.
Browser Support Relies on WWW standards. Supports all relevant browsers including IPhone & Android browsers. Incompatibility issues are minimized but still present e.g. with CSS or custom components. Supports all relevant browsers including future Android browsers but not the IPhone. Zero incompatibility issues, but unlike standards plug-ins compete for user base. Relies on WWW standards. Supports all relevant browsers including IPhone & Android browsers. Incompatibility issues are minimized but still present. Supports all relevant browsers including future Android browsers but not the IPhone. Zero incompatibility issues, but unlike standards plug-ins compete for user base. Relies on WWW standards. Can support all relevant browsers including IPhone & Android browsers. Incompatibility issues can be major unless using a 3rd party library.
UI Code Java, Compiled to JavaScript, Styled by standard CSS, Code HTML for Custom components. Some JRE not simulated e.g. BigDecimal, Calendar, DateFormat, NumberFormat but can fix. XML markup & ActionScript (Javascript with OO & static typing). Compiled to Flash SWF. Styled by custom CSS. XML markup & JavaScript, Compiled to JavaScript. Styled by custom CSS. XML markup & JavaScript, Compiled to Flash SWF. Styled by custom CSS. JavaScript & HTML DOM Manipulation. Styled by standard CSS.
Access Remote Services & Data. Invoke remote Java services and transport Java beans like RMI (Declare remote Java interfaces + Mark transported beans as Serializable + Java Servlet to process RPC requests). Can also do direct HTTP, transport XML or JSON to/from Servlet & use via their API for XPATH or JSON. Configure access to any Java bean & transport beans as ActionScript objects. Can also do HTTP or SOAP, transport XML to/from Servlet & & use via easy XPATH bindings to views. Can do HTTP or SOAP, transport XML to/from Servlet & use via easy XPATH bindings to views. Can also configure RPC directly to a Java bean & access transported beans as JavaScript objects. Can do HTTP or SOAP, transport XML to/from Servlet & use via easy XPATH bindings to views. Can also configure RPC directly to a Java bean & access transported beans as JavaScript objects. Can do HTTP, transport XML or JSON to/from Servlet & use via XPATH or JavaScript objects.
Code Complexity Management Java files, Compile-time type safety, Organize into Class/Object hierarchies, Packages, Modules. XML Files & ActionScript files, Compile-time type safety, Organize into Class/Object hierarchies, Packages, Modules & Libraries. XML Files, Organize into Object/Prototype hierarchies & Libraries. XML Files, Organize into Object/Prototype hierarchies & Libraries. JavaScript Files, Organize into Object/Prototype hierarchies.
Tool Support / Eclipse Integration Use all Java Tools, Free command-line Compile/Build or custom Eclipse plugin for Compile/Build. Run/Debug from Eclipse like regular Java. Navigate to API docs from Java Editor. Use all XML Tools, Free command-line Compile/Build or Adobe Eclipse plugin ($250) for Compile/Build & Run/Debug & good graphical WYSIWYG editor. Navigate to API docs from XML or ActionScript Editor via Eclipse plugin. Use all XML Tools, DTD/Schema not kept current & not usable if creating new object tags. Run from Browser and use interactive Debug console in Browser (console had some issues with IE). Switch between DHTML & FLASH 8 & 9. View separate online docs in browser - no navigation shortcut. Use all XML Tools, DTD/Schema not kept current & not usable if creating new object tags. Run from Browser and use interactive Debug console in Browser. Switch between DHTML & FLASH 8 & 9. View separate online docs in browser - no navigation shortcut. Edit with a Text or JavaScript Editor. Run from Browser - use FireBug and similar tools to debug. View separate online docs in browser - no navigation shortcut.
Refactoring & Code-Completion Support All Java Refactoring & Code Completion. Eclipse plugin provides standard refactoring operations (rename, move, etc.) & Code-Completion. Some XML Element/Attribute Completion but DTD/Schema not kept current & not usable if creating new object tags Some XML Element/Attribute Completion but DTD/Schema not kept current & not usable if creating new object tags None.
JEE Integration Lives in any WAR project. Generates JS files for inclusion in WAR. Lives in any WAR project. Generates SWF files for inclusion in WAR or compile just-in-time at runtime. Lives in any WAR project. Generates JS files for inclusion in WAR or compile just-in-time at runtime. Many jars (some unnecessary). Lives in any WAR project. Generates SWF files for inclusion in WAR or compile just-in-time at runtime. Many jars (some unnecessary). Lives in any WAR project. Include & Edit JS files in your WAR.
Migration Can integrate with existing Web-Apps as new pages or part of a page, Allows deep links into workflows. Can reuse existing beans & can remote access to existing Controls & Services including sharing of session data. Can integrate with existing Web-Apps as new pages only, Allows deep links into workflows. Can reuse existing beans & can remote access to existing Controls & Services including sharing of session data. Can integrate with existing Web-Apps as new pages only, Allows deep links into workflows. Can reuse existing beans & can remote access to existing Controls & Services including sharing of session data. Can integrate with existing Web-Apps as new pages only, Allows deep links into workflows. Can reuse existing beans & can remote access to existing Controls & Services including sharing of session data. Can integrate with existing Web-Apps as new pages or part of a page, Allows deep links into workflows. Can reuse existing beans (with explicit JSON conversion) & can remote access to existing Controls & Services including sharing of session data.
Performance Fast download time to Browser, Fast startup time, Modest Browser Responsiveness (All relative to size of App). Can modularize to decrease download/startup times. Low bandwidth usage compared to traditional web apps. Modest download time to Browser, Modest startup time, Fast Browser Responsiveness (All relative to size of App). Can modularize to decrease download/startup times. Low bandwidth usage compared to traditional web apps. Modest download time to Browser, Modest startup time, Modest Browser Responsiveness (All relative to size of App). Can modularize to decrease download/startup times. Low bandwidth usage compared to traditional web apps. Modest download time to Browser, Modest startup time, Fast Browser Responsiveness (All relative to size of App). Can modularize to decrease download/startup times. Low bandwidth usage compared to traditional web apps. Modest download time to Browser, Modest startup time, Modest Browser Responsiveness (All relative to size of App). Can modularize to decrease download/startup times. Low bandwidth usage compared to traditional web apps.
Static-Content (Externally Managed) Can mixin HTML & CSS as-is or modified. Can parse XML content or plain-text. Can parse XML content or plain-text. Can mixin basic HTML text (Not CSS) as-is. Can parse XML content or plain-text. Can mixin basic HTML text (Not CSS) as-is. Can parse XML content or plain-text. Can mixin basic HTML text (Not CSS) as-is. Can mixin HTML & CSS as-is or modified. Can parse XML content or plain-text.
Testing Supports Unit Tests. There are various Record/Playback/Scripted tools e.g. Selenium. Load Testing ?? (Script with HtmlUnit?) Adobe provides FlexUnit for unit testing. There are various Record/Playback/Scripted tools: FlexMonkey, FlashSelenium, Mercury QuickTest. Load Testing ?? There are various Record/Playback/Scripted tools e.g. Selenium. Load Testing ?? (Script with HtmlUnit?) There are various Record/Playback/Scripted tools: FlexMonkey, FlashSelenium, Mercury QuickTest. Load Testing ?? There are various Record/Playback/Scripted tools e.g. Selenium. Load Testing ?? (Script with HtmlUnit?)
Accessibility Supports the W3C Initiative for Accessibility for Rich Internet Apps (WAI-RIA). Supports Microsoft Active Accessibility (MSAA) for Internet Explorer. None (custom build?) Supports Microsoft Active Accessibility (MSAA) for Internet Explorer. None (custom build?)
Printing Can print as with HTML pages. Can print with additional page setup. Can print as with HTML pages. Can print with additional page setup. Can print as with HTML pages.
Search Engine Optimization Not directly compatible (embed host pages with search terms). Not directly compatible (embed host pages with search terms). Not directly compatible (embed host pages with search terms). Not directly compatible (embed host pages with search terms). Not directly compatible (embed host pages with search terms).