I just read Jeff Feinman’s report in SDTimes (http://www.sdtimes.com/link/33404). It is all nice, but in my view it is a colorful account of the visible tip of the RIA iceberg that ignores the submerged bulk of corporate applications. True, R.J. Owen is quoted on JavaFX’s better fit for the corporate environment, yet I did not find any consideration in this report to the main hurdles of Enterprise Rich Internet Applications, which relate to the coupling between the Client and Server tiers of a RIA. In defense of Jeff, I could say that indeed none of the 3 platforms (Adobe Flex, Microsoft Silverlight and JavaFX) deal with that challenge – all of them address only the Client tier. But then, when the subject is the RIA Market, I think that one should address all the aspects of RIA’s and not just the Client tier platforms.
Compared to the present standard of Enterprise Applications (Client/Server with a fat Client), RIA’s have very compelling advantages for Enterprises; they run anywhere – remote or Local, support On-premises and Off-premises deployment, offer a rich interactive user experience and a native platform look & feel without the hassle of a local fat client, reduce the cost of ownership, improved scalability and tighten security.
But in order to make these advantages usable, RIA platforms need to take the sting out and resolve the coupling management. A Client-Server application involves a fairly simple architecture, relying upon a permanent connection between the Server and the Client. With a tightly coupled design, there is no need to explicitly manage or preserve various logic states. Conversely, web applications, which centralize their processing in the Server, leave the Client essentially decoupled, or loosely coupled. As long as web applications feature short and simple logic processes, and a limited richness of interactivity, they can be usually implemented with standard Web architectures and simple session management. We start seeing even LAN interaction styles with Ajax, such as Google with the ‘Google Suggest’ function that brings up popular search terms as you type in every successive letter of your search word into the search field.
However, broadband internet is not sufficient for tightly coupled business applications having tens of interactive fields per screen, typical to Enterprise Applications. To get around this limitation RIA’s have to partition processing between Server and Client. So you end up working with two physically separate and logically dependent logic sets – running in tandem on both the Client and the Server. While smarter, the Client now is required to play in concert with the Server, and to keep the session coherent requires sophisticated state and session management. So while traditional Client Server apps only needed the skills of a business developer, if you want to develop a non-hosted RIA using a Client-side platform you need to add sophisticated system programming skills to your team, adding considerably to the complexity and risk of the solution – a painful and costly sting.
There is now a new breed of end-to-end platforms that can provide a comprehensive answer to this RIA Iceberg challenge, mostly targeted at the XaaS model. Forrester recently covered the PaaS market in its report “Platform-As-A-Service Is Here: How To Sift Through The Options”, and Gartner published a similar report titled “Application Infrastructure for Cloud Computing: An Emerging Market”. One of the most popular platforms that take out the sting of Enterprise RIA’s is Force.com, but it is currently available only as a hosted platform. An alternative, which is available also as on-site (the venerable “Private Cloud”) is Magic Software’s uniPaaS, which can be used either on-site or as a hosted Platform-as-a-Service (PaaS), providing the choice “to be or not to be” in the Cloud. The key difference to Client tier platforms such as JavaFX is that this type of platforms provide all the parts of the solution – including the hidden part of the ‘iceberg’ – without needing you to develop it separately. Hence ‘end to end’. All that’s really needed is to describe the application’s business logic and design the compelling user interface, and the platform then takes care of the rest.