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.
Image may be NSFW.
Clik here to view.
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
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.
Microsoft
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.
Google’s client side runtime is the browser and JavaScript. Google is investing a lot to make both technologies better and faster. Google Chrome already speeds up the executing of JavaScript significantly. With the Google Web Toolkit (GWT) they are offering an excellent development environment for JavaScript based applications. Gears is Google’s solution to take web applications offline so they can run even without network connectivity and synchronize once the network is available again.
Beside that there are many excellent JavaScript libraries like jQuery, jQuery UI and ExtJS out there. For most scenarios it is possible to create similar user experiences like you would expect from technologies like Flex or Silverlight – however even without installing a separate runtime. Just take a look at the great examples of jQuery UI or ExtJs to get an idea.
Sun
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?
Tags: design, innovation, programming, usability Related posts