Like everyone else, we are interested in new frameworks to design richer web interfaces, usually known as RIA – Rich Internet Applications.
Most people will agree that there are three big contenders, but they all have limitations:
- GWT, though my favorite as a long time Java developer, is still limited in the quality of interfaces it produces; it requires the use of third-party libraries, but there are not that many of them, and some have been tainted by changes in their licenses. Also, Google does not seem to put that much energy into it; in many ways, it still seems to be a one-man operation. However, my guess is that it is adequate to design classic interfaces, similar to the one designed in AWT/Swing/SWT.
- Flex might the strongest contender to many, as they have all Adobe’s might behind them (unlike GWT). But it is clearly a descendant of Flash and as such might appeal most directly to web developers (as opposed to classic Java developers). However, they did make a lot of efforts to get closer to the Java crowd. My feeling on this one is that people like me might be good at working out the server part, but should still leave the UI part to web developers.
- JavaFX might seem like an obvious choice for a Java developer, but it is still too young (1.0 to be released this fall) and does not have that much mindshare yet; it also requires a plugin to be installed. That said, at least one of my colleagues is very enthusiastic about it.
This list wouldn’t in fact be complete if I didn’t also mention:
- SilverLight, which is really the answer from Microsoft to Flex. I don’t have a strong opinion on it, apart from the fact that it also requires a plugin on the browser, which is a serious disadvantage (just like with JavaFX). Many people upgrade to Flex while upgrading their Flash plugin, which they have to do anyway, now that there are so many Flash animations. Silverlight has no such immediate upgrade path.
A relative of mine who is working at a small software house however points me to
So, which framework should we/you choose? I think neither has a clear lead so far. So you might want to apply a set-based strategy, as recommended in Lean Software Development. Meaning that, when in doubt, implement all plausible strategies, and decide later which one to standardize on, once the dust settles. In fact, it is very possible that several of them will co-exist, or even integrate with each others.
If you do want to limit the set of strategies, my personal choice would be those three: