Il y a quelques temps, on m’a demandé de trouver un logiciel “Web” permettant de se connecter à une base de données, à la manière de SQLDeveloper ou de TOAD pour ceux qui connaissent. Après avoir d’abord essayé Ajaxora, qui est pas mal mais pas fini, je suis tombé sur DBEverywhere, grâce à un post sur LinuxFR.
Outre le fait que DBEverywhere correspondait à mes besoins (bien que lui aussi soit en version bêta
), j’ai été très agréablement surpris par l’interface (DHTML / Ajax) qui ressemblait à s’y méprendre à un client lourd. J’ai donc commencé à regarder comment l’application était constituée, et je suis tout d’abord tombé sur YUI.
YUI, pour Yahoo User Interface, est une API libre (Licence BSD-like) DHTML/Ajax qui contient un certains nombre de widgets comme des arbres ou des onglets, ainsi que des layout managers.
J’ai donc commencé à écrire un nouvelle version de la vue de “Environment Monitoring” de mon logiciel “Jujunie Integration” en utilisant YUI. Mais je ne parvenais pas à obtenir quelque chose d’aussi complet que DBEverywhere… J’ai donc regardé de plus près, et je me suis aperçu que le layout manager de DBEverywhere était en fait géré par une autre API libre (LGPL) DHTML/Ajax nommée “DHTML Goodies”.
Je me suis donc empressé d’aller voir le site de DHTML Goodies, sur lequel j’avais du mal à trouver de la documentation… Mais je suis tombé sur l’exemple qui a été utilisé par DBEverywhere… lequel se disait une réimplémentation de ExtJS.
Me voilà donc parti sur le site de ExtJS, et là j’ai tout simplement eu le souffle coupé par les exemples donnés sur le site, lesquels valent mieux qu’un long discours: http://extjs.com . Une fois rassuré sur la licence (il en existe une commerciale, mais ExtJS est aussi distrbué en LGPL), j’ai recommencé l’écriture de la page de monitoring (voilà la tête de mon répository SVN…)
Je développerais peut-être plus tard l’utilisation de ExtJS, mais pour le moment, je suis vraiment content du résultat! Je vois cependant 3 problèmes majeurs:
- La maintenance du code Javascript va être très délicate à mon avis… Il faudra vraimment insister lourdement sur les commentaires (et les tenir à jour
)
- Le développement est très très long, surtout au début. C’est une sorte de mélange entre design HTML et Swing, et il faut acquérir pas mal d’automatismes pour débusquer les problèmes…
- Ce dernier point n’est pas l’apanage de ExtJS en particulier, mais du développement AJAX en général, appliqué aux applications de Gestion. La complexité de la partie Contrôle dans le modèle MVC devient vraiment problèmatique, et il est beaucoup plus difficile de garantir la stabilité et la sécurité de l’application…
Pour répondre à ce dernier point, il semble se développer des API DHTML/Ajax complètement intégrées au niveau du Contrôle. En clair, si l’application est développée en Java par exemple, on ne code plus de Javascript ni de HTML, seulement du Java. L’API se charge ensuite de la génération Javascript/HTML ainsi que toutes les interactions synchrones et asynchrones entre le client (le navigateur web) et le serveur (conteneur web).
A ce titre, il semble que GWT, l’API DHTML/Javascript de Google (Google Web Toolkit), laquelle vient de changer de type de licence (OUF!), et qui s’intègre au niveau de la partie Contôle du serveur, a développé un plugin “ExtJS” pour utiliser ExtJS côté vue!
J’avoue ne pas encore être allé voir, de peur que ça me plaise, et d’avoir à re-re-re-re-écrire la vue de “Environment Monitoring”….