UI Platforms: Which One Would You Pick?
With technologies like Ajax, Flex, JavaFX, Silverlight and WPF the borders between rich desktop applications and rich Internet applications are blurring more and more.
Today the possibilities to develop rich user experiences are amazing! However it can be quite a challenge to choose the right technology for the task at hand. There are just so many options out there.
Adobe, Microsoft, Google and Sun are competing head to head to attract as many developers and users as possible. They all bring in their own technologies and runtime environments. In the following I like to give a brief overview about the technology offerings of the four big players:
Adobe’s runtime environment is called AIR (Adobe Integrated Runtime). AIR is a cross-platform runtime environment for building rich Internet applications using Adobe Flash, Adobe Flex, HTML, or Ajax, that can be deployed as a desktop application.
AIR applications are running outside of the browser security sandbox, they can run offline and they can make use of local storage and file systems. Currently the most popular AIR applications are Twitter clients like TweetDeck and Seesmic Desktop.
With the .NET Framework, Winforms, WPF and Silverlight – Microsoft offers two runtimes and different technologies for building rich user experiences.
Winforms and WPF are the choices for building Windows desktop applications.
Silverlight is a subset of the .NET / WPF runtime distributed as a cross browser / cross platform (Windows / Mac) browser plug-in. Moonlight – a Linux version of Silverlight – is provided by the Mono project (supported by Novell).
Since Silverlight 3 applications can run outside the browser in their own application window. However they still run in the context of a security sandbox. This is the main difference to WPF or AIR.
Microsoft Patterns and Practices group offers very good starter kits and guidance’s for building composite applications. The Smart Client Software Factory (SCSF) is the choice for building composite applications based on the Winforms technology. Prism is the Composite Application Guidance for WPF and Silverlight. Specially for Silverlight there are benefits to modularize the applications to reduce the initial download time. Prism supports loading modules on demand which can be very useful in this scenario.
Sun is betting on its Java Virtual Machine (JVM). There are many different UI technologies available on the Java platform: AWT, Swing, SWT and most recently JavaFX.
Maybe you have never seen one but actually it is possible to create good looking UI’s with Java Swing ;-) Just take a look at the excellent Substance Java Look and Feed as an example. And of course IBM did a great job with SWT to dress up the Eclipse IDE.
The Eclipse based Rich Client Platform (RCP) is the most well known framework to create composite applications on the Java platform.
JavaFX is the brand new offering for creating and delivering rich Internet applications that can run across a wide variety of connected devices. The current release (JavaFX, June 2009) enables building applications for the desktop, browser and mobile phones. JavaFX applications will run on any desktop and browser that runs the JRE and on top of mobile phones running Java ME.
As you can see there is a lot of competition and there are exiting new developments going on in this area. Do you see any of the big players ahead? Which horse would you pick?Related posts