What interface for a modern application?
HTML 5 , XUL, XAML, platforms are emerging, each one with its advantages
and its drawbacks, and the choice is posed since one wants to build a Web
application, a RIA (Rich Internet Application) having the same interface and
the same possibilities that a local application as certain popular sites do
Fear to take the bad way and to spend months under development with an environment on which one could not lead while an other could have proven to be more adapted according post in forums where the question is very present.
Things seems even more complicated when one realizes that the various solutions suggested do not cease evolving/moving and proposing functionalities for now, and one wonders, will be it possible that in the future, such platform offers the possibilities currently offered by such other?
HTML 5 and Ajax
The new HTML 5 specification provides a universal interface for Web apps and some desktop apps thanks to the offline feature.
DOM plus the XMLHttpRequest object which allows asynchronous interaction between the
browser and the server. This is complemented by WebSocket and WebRTC for better interaction with the server or directly with other clients.
Total portability: recognized by all of recent browsers.
Very wide choice of frameworks.
Work locally without a connection to a server.
Simplicity of implementation.
Using CSS for layout is often laborious.
The evolutions are done through frameworks, increasingly developed and also in new standards of the Web which are designed to support Web applications.
The video tag should with time replace the Flash reader.
XAML is like XUL an XML-based language of description of interface. It provides an interface language for Windows with .NET, on Linux with Mono and systems derived from Linux like Android.
It is used for the graphic interface of Windows since Vista, and by Windows 8 both in the new Modern UI/Metro platform or classic destkop with .NET.
Very broad library of functions.
Choice of the programming language on the .NET platform.
Compatibility limited. Requires practically the presence of WPF or WinRT (Windows 8).
Silverlight popularized XAML, immersive applications will do more (to programmers).
The Mono platform under Linux offer with time compatibility server-side.
Java and JavaFX
The Java solution is complete since it proposes a server-side framework, and with at client-side, on the browser, applets, which are small applications functioning in a Web page. That can also be supplemented by a scripting server-side language, JSP. Let us add to that servlets for Web services and we have a portable and complete platform for enterprise Web applications. JavaFX helps to create user interfaces.
Extremely vast library of functions.
Compatibility with all platforms.
A plugin must be installed on the client-side, and the server must also support Java what implies practically a dedicated server.
Loading of Applets is really slow, which has always limited their use by companies only.
Programming it is rather complex.
XAMJ, an implementation of XAML in Java could combine the advantages of the XAML format with the portability of Java but JavaFX is the standard solution to build interfaces.
Flash and MXML
Flash is a binary code for interfaces and vector applications with animations. MXML, it the alternative from Macromedia to XUL and XAML and is used by Web applications in conjunction with developments dedicated for the interaction with the browser. It has a development tool named Flex.
Compatibility for all browsers and systems.
Many effective users.
A plugin is necessary to let the applications executed.
It is unsecure and uses lot of resources.
Flash will disappear in browsers on mobiles but will persist for native applications.
The markup vectorial drawing SVG format makes it possible to build
graphic components for an interface of Web application. However a framework
is needed for that, and there is no emerging solution for now in particular
in the world of free software but charting specialized frameworks.
More again, the SVG recognition by browsers is imperfect.
SVG may be useful rather like a complement to other solutions. It is used on this site for example for the title of the SQL tutorial.
We can add also Ruby one Rails for the Web, with the Ruby language.
The choice of the interface of Web application could be facilitated by using
the following table:
Portability on operating systems
Local use (without connection)
Free of charge
Note that it is possible to combine solutions to solve the deficiencies of a format. For example, Ajax can be used at client-side in conjunction with Java at server-side to avoid the slowness of applets. There are also frameworks that allow to work offline.
See also: Which future for XAML?