What Does it Take to Be a Good RIA Platform?
Yesterday, I had a very interesting blog debate with a guy named Martin Beeby. He was arguing that Silverlight would eventually crush Flex because Adobe is building its community on Flash developers, who are in fact designers. Of course I couldn’t help demonstrating to him that he was wrong, because Adobe is obviously not trying to transform Flash designers into Flex developers, and is actually trying to add developers to its already existing designer community. But ultimately he made an interesting statement: according to him, RIA’s require both developers and designers, and both Microsoft and Adobe are trying to convince the ones they don’t already have in their community.
I had never thought of it that way. As a matter of fact, if you have a look at most Flex apps available out there, rare are those who use the default theme provided by the Flex SDK. In fact, Flex apps are so easy to customize using themes and stylesheets, that it’s perfectly understandable. Adobe is even pushing us in that direction with tools like Thermo or Flash Component Kit.
But do we really need that level of customization? In fact, in enterprise applications, this themeing mania can even do more harm than good, unless you use a standard WindowsXP-like theme, because they don’t want fancy stuff, they just want transparent software.
He used another argument in favor of Silverlight, the fact that it’s generating more buzz lately. With showcase applications like Beijing Olympic games website, or the new AOL Mail interface, Silverlight is definitely trying to draw the attention on itself. Is it working? Hard to say.
But all of this debate made me think about what makes a good RIA platform. Here is my list:
- the runtime has to be as widespread and portable as possible: on that point Flex is clearly ahead with its 95%-ish penetration rate, but the Flash runtime still suffers from a bad reputation in IT departments. On the other hand, Silverlight is still far behind but it has a tremendous advantage: Windows Update.
- behind the fancy stuff, the code has to be simple, clean and state-of-the-art: that’s one of the main reasons why I love Flex, the ActionScript/MXML combination is just perfect, and it doesn’t even require any framework. I don’t know anything about Silverlight code, so I will probably have a look at some tutorials before commenting on that.
- it has to be supported by a wide variety of development tools: Flex Builder is great but it’s still quite expensive, especially when you’re not using Eclipse at all and it forces you to run two development environments side-by-side. Fortunately, IntelliJ Idea has added support for Flex 3 and it’s becoming great. The last thing it misses is a visual designer. But given their experience with their Swing designer, I’m certain they are working on something (I hope so!). And all of that is possible thanks to the openness of the platform. On the other side, Silverlight is supported mainly by Visual Studio, and I haven’t heard of any openness effort that would allow other .Net development tools to support it.
- RIA is all about the presentation layer, so it has to be connected to some backend to be useful, and the more backends it supports the better: Flex is really ahead on that one, since it can be plugged on Coldfusion, J2EE, .Net, PHP, Python, Ruby and virtually any platform via its webservice connectivity. But what makes it really powerful now is the extension of Java support thanks to BlazeDS. And apparently, Silverlight doesn’t have an equivalent communication protocol.
- it has to be deployable on any platform: Flex just produces plain SWF Flash applications, so it doesn’t require any server-side technology. A plain Apache httpd server is enough. I don’t know what are the requirements of Silverlight on that matter.
Now what do YOU think? Do you see anything to be added to the above list? What are your criteria? Have you already had to make a choice and justify it?
- Login or register to post comments
- 1219 reads
- Flag as offensive
- Printer-friendly version
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)








Comments
Andrew Norris replied on Sun, 2008/03/16 - 11:16am
First off, I think there's an important distinction in RIAs between public internet applications and enterprise applications. Things like rich design support, Silverlight's Deep Zoom feature, and related eye candy are primarily for public websites building internet applications, not for enterprise apps. For internet apps, I think it's a wide open question. Flash has enormous traction here, but primarily as a design tool, not as a programming tool (yet). Meanwhile, Silverlight has very limited traction here at all. Thus far, the winner is AJAX, mostly by default. Whether either platform can become predominant for rich public website applications is, I think, a wide open question, and I think it's just too early to call.
For enterprise apps, which is what you primarily address, the importnat attributes are very different. As long as your application isn't actively ugly (and maybe even if it is), design just doesn't play that important a role. The reality of enterprise applications is that the vast majority of them are written using two platforms: Java, and .Net. The enterprise world is slowly opening up to Python and Ruby, and there are still bastions of C++ and older technologies, but Java and .Net are clearly the most important platforms.
Silverlight's #1 factor that assures it's success in the enterprise is that if you're already developing for .Net, moving to Silverlight is going to be a no-brainer. That doesn't mean it will beat Flex, but the reality is that even with Beta 1 (and some pretty basic missing features, like combo boxes), it's already easy to tell that Silverlight 2.0 is going to be a better platform for developing enterprise apps than asp.net, which is it's real competitor. And because you can develop Silverlight seamlessly in Visual Studio within the same solution as your server-side project, I can't imagine .Net developers defecting to something like Flex for a front-end, because the integration will simply be too much trouble compared to Silverlight. In this sense, I think the sheer breadth of server side tools that a client side tool integrates with is far less important than how tight that integration really is.
Of course, the fact that Silverlight works so seamlessly with .Net is great for .Net shops, but that's exactly why it will never get any traction in Java shops. Let's be realistic: if you're developing in Java, using Eclipse, NetBeans, IntelliJ, or whatever, moving your client-side development over to Visual Studio is about as likely as switching to Emacs. So the only realistic candidates for Java developers are solutions that will integrate solidly with their existing toolchain. The obvious possibilities for Java-based RIAs include Flex and JavaFX. Flex obviously has a head start, but it involves developers moving to a different language, set of libraries, etc. for client-side development than they use on the server. The real question for Flex is whether Adobe can convince a preponderance of Java developers to make this leap instead of waiting for JavaFX or sticking with some sort of AJAX framework. I don't keep close enough tabs on the Java community to know how this is going.
I set aside dynamic languages like Ruby and Python before because their enterprise penetration is currently so low. However, this is actually one very interesting wild card going forward. Both Silverlight and Flex have pledged to allow client-side development to occur in a variety of dynamic languages in the future, and it will be interesting to see how this plays out in these language communities. The current beta of Silverlight already allows Ruby and Python developers to experiment with developing client-side applications in their language of choice (and supposedly PHP support is coming as well). In theory, this should allow clean interoperation with server-side applications in these languages using web services, though in practice, there's really no build-out of tool support for this yet because everything is so new. Will the growing pool of dynamic language developers find Silverlight appealing as a rich client solution (despite traditional indifference to Microsoft technologies), will they wait for Flex support, or will they stay with their current AJAX-based solutions? Offering this is a great idea on Microsoft's part, but I honestly have no idea whether they will be able to gain traction.