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 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 and Ajax

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

Ajax is the combination of dynamic HTML (CSS, JavaScript, 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.
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.

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 Flash Java
Browser compatibility
yes yes yes Applet
Portability on operating systems
yes Partial yes yes
Local use (without connection)
yes yes yes yes
Performance (reactivity)
yes yes yes yes
Free of charge
yes yes yes yes
Excessive complexity
- - yes yes

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?