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.
Advantages
Total portability: recognized by all of recent browsers.
Very wide choice of frameworks.
Compatibility with standards of the Web: Javascript, CSS, Document Object
Model.
Work locally without a connection to a server.
Simplicity of implementation.
Disadvantages
Using CSS for layout is often laborious.
Programming in Javascript is may be difficult for large projects.
Evolutions
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
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.
Advantages
Very broad library of functions.
Choice of the programming language on the .NET platform.
Disadvantages
Compatibility limited. Requires practically the presence of WPF or WinRT (Windows 8).
Evolutions
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.
Advantages
Extremely vast library of functions.
Compatibility with all platforms.
Disadvantages
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.
Evolutions
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.
Advantages
Compatibility for all browsers and systems.
Many effective users.
Disadvantages
A plugin is necessary to let the applications executed.
It is unsecure and uses lot of resources.
Evolutions
Flash will disappear in browsers on mobiles but will persist for native applications.
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?