I've been a member of the RIA Developers Group on LinkedIn for a short while now and the other day Patrick Bay posted a link to an interesting article on Computer Weekly about the prominence of RIAs. A few comments were posted and then Patrick questioned which RIAs would "bubble to the top".
I think the UI revolution's already here; now we see which ones bubble to the top!
This got me thinking about the criteria that may determine which RIA technology would be most successful.
I think there are a number of things that will determine which one will ultimately win, or at least become the dominant choice. At the moment I can think of three categories; Technology buy-in, Development environment and Data access capabilities and choice.
Technology buy-in
Some companies buy-in to a technology because they have always used that technology. For example, a company that have always used Java will be more likely to opt for the Adobe solution where they can write their server components using Java and their client in Flash/ActionScript/Flex (this terminology is still a bit unclear to me. I think this is why Adobe are renaming Flex Builder to Flash Builder) but a company that have traditionally used Microsoft products will undoubtedly go for Silverlight. More traditional web developers, who probably build upon the LAMP stack, that have been hand coding PHP on the server and JavaScript on the client tend to go for creating RIAs using Ajax.
Development environment
I believe that Microsoft have a massive advantage in having Visual Studio as a server and client IDE. It has it's faults but in general it's a fantastic development environment. Those choosing Flex (Java -> ActionScript/Flash) will more than likely choose the Eclipse IDE, which is powerful, but it's ActionScript/Flex development tools are lacking maturity. I've recently used the Flash Builder 4 beta and it's miles behind Visual Studio in terms of coding productivity features. I've heard that the Flex UI component development features may be better than Visual Studio's support for Silverlight UI. The LAMP with Ajax stack suffers much the same problems as Flex with, as far as I know, Eclipse being the IDE of choice and client-side productivity tools still very much in their infancy. It's clearly very difficult to write an IDE to enhance JavaScript/Ajax productivity.
Data access capabilities and choice
I think this has been one of the last things to be considered in the RIA stack. Previously browsers have locked down where you can get your data from. Developers were always trying to implement hacks to allow them to do things such as make a web request to a server on a different domain or cross-site scripting to implement HTTP streaming. As the web has opened up to the idea of Mashups, browser and RIA plugin vendors have had to change their stance on cross site security. It's a difficult line to walk but I believe that the technology that makes retrieving data from multiple sources the easiest, without having to go via a proxy, will have a distinct advantage. Flash and Silverlight are winning the race at the moment with Silverlight's use of security policy files and Flash's support for master policy files. For the Ajax solution I still need to research information on HTTP cross domain access control headers and which browsers have implemented support for them. I still think there will be an argument for mashing up your data on the server and I have a blog post planned on RTRIA server technologies.
The important questions around RIA data are:
- Which RIA will be more efficient at consuming data?
- Which one will prove to be the most capable as a Real-Time Rich Internet Application (RTRIA)?
- Will RIA technology vendors try to lock developers into using a client-server technology stack, such as Adobe may be trying to do with LCDS and Flex, and will this put developers off?
- Is decoupling of server and client technology, and communication protocol, important? I think it is, do you?
Although RIAs have been around for a while now, as Patrick said, the race to dominate the Rich Internet Application Technology space is on.