Technos: solution Client lourd via Java Swing toujours d'actualité ?
L' API Java Swing toujours soutenue par Sun à une rythme plutôt rapide, continue d'avoir une communauté plutôt dynamique. Pour s'en convaincre, le mieux est de faire un tour sur http://javadesktop.org, ou vérifier tout simplement le nombre de topics ouverts sur developpez.com dans le sous forum Swing/AWT.
Sa réputation de lenteur vient avant tout
du non respect de l'EDT qui fait "freezer" l'appli sur des tâches longues, même si
ce n'est pas un foudre de guerre sur les versions antérieures à java
5. En ce qui concerne l'architecture logicielle tout dépend de la
taille de l'application. Par exemple le MVC n'est pas le seul design à
exister pour les applis Swing, le Design Model View
Presenter est un modèle intéressant tel qu'expliqué dans les slides suivants:
http://jgoodies.com/articles/patterns-and-binding.pdf
De plus Swing bénéficie d'un grand nombre de
librairies tierces afin d'accélérer le développement tel que les API de Bindings JGoodies ou
l'implémentation de la JSR 295 (sortie ces derniers mois et
prévue pour intégrer Java 7).
De même les API de JIDE qui propose un
grand nombre de composants évolués de très grande qualité, certains en open
source, d'autres en licence commerciale (les composants les plus simples sont bien entendu en licence open source). Autre solution, Swingx qui n'a pas encore le stade de la 1.0
mais qui propose des composants intéressants et stables.
Ce dernier open source plus ou moins soutenu par Sun, sert en quelque sorte d'incubateur à des fonctionnalités qui pourront être introduites dans le standard java (par exemple le sorting et le filtering de la JTable en java 6 a été inspiré de ce qui a été réalisé dans SwingX). Il propose un grand nombre de composants avancé, exemple les composants JXTable, JXTreeTable, JXImagePanel, JXSeparator ou encore JXHeader pour la partie supérieure du dialog. Les composants de type table (JXTree, JXTable, JXTreeTabl) de SwingX possèdent un mécanisme avancé de customisation graphique au moyen des Highlighters. Plus d'info ici.
A comparer par exemple avec un composant TreeTable utilisée en Delphi, l'apparence ne sera pas forcément ISO mais ressemblera plus à quelque chose dans ce genre.
Sinon d'autres possibilités d'intégration de multiples layouts (FormLayout JGoodies, MigLayout...) et ainsi de suite...
D'autres frameworks réellement adaptés commencent à apparaître. On peut noter l'appframework, implémentation de la JSR 296 (qui sera intégrée dans java 7), l'Application Framework de JIDE ou encore la plateforme Netbeans qui est l'équivalent d'Eclipse RCP en SWT.
Pour le la construction de l'interface, mon choix personnel se porte sur JFormDesigner ou Netbeans qui sont les deux ui builders les plus avancés du moment coté java (pour un prix raisonnable, car il reste IntelliJ IDEA maix qui fait sortir 500€ la licence de mémoire).
Qt le framework de Trolltech, est dédié à la création d'interfaces graphiques et et c'est un vrai bonheur, notamment avec le système Signaux/Slot, très efficace et très simple d'implémentation. A noter qu'il est utilisé par Adobe pour Photoshop Elements (ce qui devrait être un gage de fiabilité et de performance...). Qt est à la base un framework C++ mais porté ensuite sur Java (Qt Jambi). A noter dans la roadmap, l'intégration de WebKit, du framework Phonon de KDE pour tout ce qui est multimedia, les classes de dessin comme les QGraphicsView, ce qui touche à OpenGL & cie.
Bref pour Swing, le principal est de bien choisir les outils et ensuite de passer un peu de temps à comprendre leurs modes de fonctionnement avant d'attaquer le dév. Par exemple beaucoup d'interprétations d'un simple évènement comme Event Dispatch Thread ont été source de nombreux bugs au niveau de la gestion des évènements.
Reste aussi à voir la possibilité d'intégrer ces frameworks dans l'IDE Eclipse dont peu de développeur pourrait de passer, par exemple les plugins comme JFormDesigner, Jigloo, Windows Builder Pro sont fournis.
Si vous voulez en savoir un peu plus n'hésitez pas à nous poser des questions ou inversement nous apporter votre retour d'expérience...