What interface for a modern application?

HTML 5 , QML, 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 it.
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

The new HTML 5 specification provides a universal interface for Web apps and some desktop apps thanks to the offline feature.

This is complemented by Ajax that is the combination of dynamic HTML (CSS, JavaScript, DOM plus the XMLHttpRequest object which allows asynchronous interaction between the browser and the server. And more recently by WebSocket and WebRTC for better interaction with the server or directly with other clients for WebRTC.
Applications uses server-side a scripting language like PHP or ASP or JavaScript with Node.js.

XAML

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.

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.

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.

Other solutions

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.

Qt and its QML interface language (close to JSON syntax), is also a popular graphical user interface on the desktop and on mobile devices.

Open Laszlo is a free platform based on a markup language named LZX. On the client-side, it produces Flash code which can be runs thanks to a plugin commonly installed, and it produces also DHTML code (HTML with Javascript). Laszlo is functional with a well finalized RAD.

We can add also Ruby one Rails for the Web, with the Ruby language.

Summary table

The choice of the interface of Web application could be facilitated by using the following table:

  HTML 5 XAML
Qt
Flash JavaFX
Browser compatibility
yes yes
QML
yes Applet
Portability on operating systems
yes Partial
yes
yes yes
Local use (without connection)
yes yes
yes
yes yes
Performance (reactivity)
yes yes
yes
yes yes
Free of charge
yes yes
yes
yes yes
Excessive complexity
no no
no
yes Java

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: What future for XAML?