lundi 25 novembre 2013

Vaadin

Je code un petit peu en Vaadin, ces jours-ci. C'est un framework Web Java, qui fournit une abstraction de très haut niveau, orientée widgets, pour écrire des applications web "riches", comme on dit. Jetez un coup d'oeil à leur démo, c'est tout à fait étonnant. Derrière, dans le code, pas une once de HTML, et à peine un poil de javascript pour spécialiser quelques affichages. L'on peut donc tout écrire en Java, avec ses callbacks sur les différents événements GUI, et le framework génère HTML + Javascript + Jason pour faire tourner le tout. Notons tout de même qu'il faudra se plonger jusqu'au cou dans les CSS si l'on veut faire quelque chose qui s'éloigne du style de base.

Comme beaucoup de frameworks de ce type, tout se passe bien tant que l'on reste dans le moule, mais l'on doit se battre un peu lorsque l'on veut adapter certains comportements. En particulier, l'écriture de nouveaux widgets semble complexe.

Alors, bien sûr, il a fallu que je tâte un peu du Java (il ne faut pas dire "Fontaine, je ne boirai pas de ton eau"), et j'apprécie fortement les classes anonymes pour écrire ses callbacks. C'est presque aussi bien qu'un lambda :)

mercredi 13 novembre 2013

wxWidgets 3.0 est sorti!

La version 3.0 de l'excellente bibliothèque graphique wxWidgets est enfin sortie, avec passage à GTK3, et quelques nouveautés comme les rubans et un Unicode simplifié. Pour plus de détails, vous pouvez vous reporter à la dépèche sur DLFP

Contrairement à QT, qui garde son préprocesseur MOC (et qui est la principale raison pour laquelle je ne l'utilise pas *), wxWidgets se dirige de plus en plus vers le C++ standard, avec notamment une meilleure intégration de la STL. Récemment, Vadim Zeitlin, un des développeurs principaux du toolkit, a posté un article tout à fait intéressant sur le blog de wxWidgets, où il montre comment combiner les dernières fonctionnalités de C++11 avec le framework. En particulier, l'ancien style de callbacks qui passait par des macros est maintenant avantageusement remplacé par un appel à la méthode Bind de chaque widget, dans lequel on peut coller un lambda, permettant un code plus dense aux fonctionnalités plus localisées.

* Un petit mot sur cette remarque trollogène: je veux bien croire que sur le principe, l'usage du pré-processeur ait un grand nombre d'avantages. C'est juste que dans mon cas d'utilisation, je cherche quelque chose qui s'intègre mieux à mon système de build pré-existant. Notons au passage que le support d'Android et iOS par les dernières versions de QT pourrait bien me faire changer d'avis.