jeu, 04/04/2013 - 12:10
qooxdoo (prononcer « kouxdou ») est un framework JavaScript universel qui permet de développer des applications riches pour différents scénarios. Ces applications reposent sur des technologies Web et peuvent donc être utilisées aussi bien depuis un ordinateur de bureau que depuis un terminal mobile. En tant que projet open-source, qooxdoo est disponible sous licences libres. Par Martin Wittemann et Andreas Ecker.
C’est 1&1 Internet France [1and1.fr], en collaboration avec une communauté internationale engagée, qui a développé le framework JavaScript qooxdoo. Les exigences des entreprises ont joué un rôle important dans ce développement, au même titre que les immenses avancées en matières de technologies Web et leur disponibilité dans les navigateurs modernes.
Quatre domaines d'application
L'une des principales forces de qooxdoo est qu'il permet de développer des applications pour des domaines très variés. Sur la base de fonctionnalités et de concepts communs, nommés « Core » dans l'illustration, quatre domaines se dessinent, sur lesquels nous reviendrons plus en détail.
Core : Le modèle de programmation orienté objet de qooxdoo est d’une importance primordiale pour l'efficacité et la cohérence du développement des applications. Le framework offre une large prise en charge, allant des systèmes de classes fondamentaux aux concepts de programmation avancés. Les outils pour les développeurs constituent également un élément important. Ils sont notamment bien utiles face à une importante quantité de code et simplifient nettement le travail. Grâce à sa chaîne de compilation multiplateforme basée sur Python, qooxdoo couvre une grande partie des éléments importants au développement et au déploiement d'applications JavaScript. Par exemple, une commande du code source permet de parcourir l'application, de résoudre automatiquement les dépendances des différentes données, de ne reprendre que les parties nécessaires dans l'application et donc d'optimiser le code. Il est impossible de revenir ici sur toutes les possibilités offertes par les outils intégrés mais ceux-ci permettent notamment de générer une référence API interactive [api.qooxdoo.org], un environnement d'exécution pour des tests unitaires ou encore de partitionner l'application en plusieurs modules à charger. L'utilisation et les points forts de la chaîne de compilation intégrée dépendent de différents scénarios : le développement d'applications pour ordinateur ou d'applications mobiles sans cette chaîne a peu d'intérêt. Elle n'est cependant pas nécessaire pour développer un site internet dynamique, même si elle peut s'avérer utile.
Ordinateur de bureau
La demande est souvent forte pour des applications Web dont l'aspect et la convivialité s'inspirent fortement des applications natives pour ordinateurs. L'expérience utilisateur doit être disponible sur l'ensemble des navigateurs courants en reprenant un nombre important d'éléments de l'interface utilisateur. Bien que les technologies Web, c'est-à-dire le HTML, le CSS et le JavaScript, n'aient à l'origine pas été conçues pour réaliser des applications aussi riches, elles permettent d'obtenir des résultats extrêmement satisfaisants. qooxdoo rend cela possible en utilisant un kit de développement logiciel (Software Development Kit, SDK). Il contient tous les éléments nécessaires du Core, comme la chaîne de compilation évoquée précédemment. Mais il offre également un puissant widget toolkit comprenant des gestionnaires de placement et de nombreux widgets extensibles. De ce point de vue, qooxdoo est comparable aux frameworks natifs.
La particularité ici est qu'aucune connaissance en HTML ni en CSS n'est requise pour développer une application grâce au modèle de programmation orienté objet. Il est ainsi possible de réaliser des applications riches et cross-browser.
Conseil pratique : Le Playground interactif de qooxdoo permet de tester et de modifier le code d'un « Hello World » et d'autres exemples [playground.qooxdoo.org].
Mobile
Le développement d'applications pour des terminaux mobiles tels que les smartphones et les tablettes présente des défis spécifiques. Mais ici aussi, le SDK de qooxdoo propose une solution adaptée : le modèle de programmation et la chaîne de compilation sont utilisés ici aussi. Par ailleurs, il est possible de porter la majorité du code du framework sur un appareil mobile sans y apporter de modification. À la place du toolkit widget pour ordinateur, des widgets mobiles légers, spécifiques et optimisés pour l'aspect et la convivialité sur les appareils mobiles sont utilisés. Le SDK propose déjà trois variantes d'interface : un thème inspiré de chacune des plateformes iOS et Android ainsi qu'un troisième thème plus neutre. L'aspect des widgets mobiles peut être adapté via le CSS ou le LESS selon les besoins. Le code JavaScript lui-même est identique pour toutes les plateformes. L'effort de développement s'en trouve nettement réduit, notamment s'il faut programmer pour iOS et pour Android.
Les applications mobiles sont par ailleurs développées de telle sorte qu'elles peuvent être utilisées indifféremment depuis un smartphone ou une tablette. Ainsi, des parties entières sont insérées ou masquées selon la taille ou l'orientation de l'écran. Par ailleurs, toutes les applications JavaScript développées avec qooxdoo peuvent être empaquetées comme des applications natives via des outils comme PhoneGap afin d'être proposées normalement sur les magasins d'applications.
Conseil pratique : Le Playground interactif de qooxdoo permet de tester des codes mobiles typiques de manière interactive. Les essais peuvent même être réalisés depuis un navigateur pour ordinateur de bureau classique comme Chrome, Safari ou Firefox.
Site internet
Contrairement aux applications indépendantes, les applications de type site internet dépendent plus fortement des technologies Web qui leur servent de base. Les connaissances en HTML et en CSS ainsi que la manipulation explicite des DOM sont au premier plan. qooxdoo offre ici une bibliothèque pré-construite contenant de nombreux modules et qui peut être complétée par des « plug-ins » personnels. La bibliothèque compense les différences entre les navigateurs, par exemple par une gestion uniformisée des événements incluant des événements personnalisés ou une communication solide avec le serveur. L'API explicite, qui améliore nettement la lisibilité du code, est une caractéristique importante de qooxdoo. qooxdoo a bien plus encore à offrir, notamment avec les modules fournis. Les animations CSS3 sont, par exemple, vraiment simples à utiliser (elles s'inspirent des API CSS natives). Si le navigateur n'utilise pas cette fonctionnalité moderne, le JavaScript compense en arrière-plan. Ainsi, mêmes les anciens navigateurs peuvent afficher des animations basées sur des keyframes.
Serveur
La diffusion croissante du JavaScript côté serveur, notamment par le biais du node.js (voir numéro 12, pp. 80 et suivantes), ouvre de nouvelles perspectives pour la généralisation des architectures applicatives basées sur JavaScript. Ainsi, le module « qooxdoo » peut être installé par npm, le Node Package Manager. Le framework se concentre ici en priorité sur le modèle de programmation orienté objet, qui est également utilisé dans les applications GUI, comme mentionné ci-dessus. Il est ainsi possible d'utiliser ses connaissances ainsi que le code correspondant tant au niveau du client que du serveur.
Conclusion
Cet article met en lumière quelques-unes des caractéristiques essentielles qui font de qooxdoo un framework JavaScript universel. Bien sûr, il est impossible de revenir en détail sur de nombreuses autres fonctionnalités tout aussi passionnantes. Nous invitons donc tous les lecteurs à venir découvrir qooxdoo sur le site qooxdoo.org. Les démonstrations en ligne [demo.qooxdoo.org] et le manuel complet [manual.qooxdoo.org] sont d'excellents points de départ. Ce projet étant un projet open-source, nous apprécions toute forme de feedback, de suggestion et de collaboration.
Hashtag Twitter : #scg16-76
Martin Wittemann et Andreas Ecker
Martin Wittemann et Andreas Ecker occupent tous deux des fonctions de directeur de département chez 1&1 Internet AG à Karlsruhe. Dans le cadre du projet open-source qooxdoo, leur travail porte sur les technologies Web modernes et le développement d'architectures applicatives adaptables et interopérables pour toutes les plateformes.
Compte Twitter : @qooxdoo
A propos de l'auteur