Quelle interface pour une application moderne?

HTML 5, QML, XAML, des plateformes émergent, chacune avec ses avantages et ses défauts, et le choix se pose dès lors que l'on veut réaliser une application Web, une RIA (Rich Internet Application) ayant la même interface et les mêmes possibilités qu'une application locale comme le font certains sites populaires.
La crainte de prendre la mauvaise voie et de passer des mois en développement avec un environnement sur lequel on ne pourrait aboutir tandis qu'un autre aurait pu s'avérer plus adapté se traduit dans les forums où la question est très présente.
Le problème se complique encore quand on s'aperçoit que les différentes solutions proposées ne cessent d'évoluer et de proposer des fonctionnalités jusque là absentes, et l'on se demande, sera-t'il possible qu'à l'avenir, telle plateforme offre les possibilités actuellement offertes par telle autre?

JavaScript et HTML 5

La nouvelle spécification HTML 5 offre une interface universelle pour les applications en lignes et certaines applications locales grâce au mode offline.

Cela est complété par Ajax, qui est la combinaison des techniques formant le HTML dynamique (CSS, JavaScript, DOM) et de l'objet XMLHttpRequest qui permet l'interaction asynchrone entre le navigateur et le serveur. Et plus récemment par WebSocket et WebRTC pour une meilleure interaction avec le serveur ou avec directement d'autres clients dans le cas de WebRTC.
L'application utilise un langage de script coté serveur comme PHP ou ASP ou JavaScript avec Node.js.

C# et XAML

XAML est comme XUL un langage de description d'interface basé sur XML. Mais il est vu par Microsoft comme un moyen de créer des applications Internet riches. Il offre un langage d'interface à Windows avec .NET, Linux avec Mono et et systèmes dérivés de Linux telle la plateforme Android.
Il est utilisé pour l'interface graphique de Windows depuis Vista, et par Windows 8 et 10 à la fois dans l'interface Modern UI/Metro et sur le bureau classique avec .NET.

Voir aussi: Quel futur pour XAML?

Java et JavaFX

La solution Java est complète puisqu'elle propose un framework coté serveur, et coté navigateur, l'emploi d'applets, qui sont de petites applications fonctionnant dans la page Web. Cela peut aussi être complété par un langage de script coté serveur, JSP. Ajoutons à cela les servlets pour les services Web et l'on dispose d'une plateforme portable et complète pour les applications Web d'entreprises. JavaFX aide à créer des interfaces graphiques.

Qt et QML

Qt est à l'origine un framework d'interfaces pour Linux qui a été porté sur tous systèmes d'exploitation y compris Android et iOS. Il inclut tous les widgets nécessaires à la réalisation d'une interface et à aussi son langage d'interface, QML. Celui-ci a une syntaxe similaire à celle de JSON ce qui le rapproche de JavaFX.

Tableau récapitulatif

Le choix de l'interface d'application Web pourrait être facilité à l'aide du tableau suivant:

 
HTML 5
XAML
Qt
JavaFX
Affichage dans le navigateur
oui
non
oui
non
Portabilité système d'exploitation
oui
Partielle
oui
oui
Compatible mobiles
oui
oui
oui
oui
Utilisation locale (sans connexion)
oui
oui
oui
oui
Performance (réactivité)
Selon
oui
oui
oui
Gratuité
oui
oui
oui Selon
Complexité excessive
non non
C++
Java

Noter qu'il est possible de combiner les solutions pour résoudre les carences d'un format. Par exemple, Ajax peut être utilisé coté client en conjonction avec Java coté serveur pour éviter la lenteur des applets. Des frameworks permettent aussi de travailler hors connexion.

Autres solutions

Le langage à balises de dessin vectoriel SVG permet de réaliser des composants graphiques pour une interface d'application Web. Disposer de widgets vectoriels permet de redimensionner l'écran à volonté, et cela convient plutôt pour les applications graphiques ou de jeux, sur le bureau. Les applications Web ou mobiles ne devraient pas utiliser SVG car la compatibilité est imparfaite entre les navigateurs.