Devrait-on faire un client lourd en Java ?
Il y a peu j'ai �crit un petit billet sur mon blog sur ce sujet. Je le partage avec vous en int�gralit� pour avoir une discussion avec des membres de d�veloppez.com.
Ayant boss� en Java je me suis heurt� � Swing comme on peut se heurter � un mur. Ouch, quand on vient du Web on d�guste fort avec Java et son API pour client lourd. Pour autant, la techno est elle valable ou non, et que vaut-elle par rapport � J2EE ?
Swing avant 2007
Avant 2007 Sun a clairement focalis� son attention sur J2EE ce qui leur a permis de gagner en popularit�. Le nombre de frameworks existant et la richesse des librairies propos�es lui ont permis de s'assoir durablement comme "langage pour faire du Web".
Seulement voil�, � c�t� de �a J2SE, la partie r�serv�e aux postes de travail, a par contre �tait d�laiss�. Pourquoi ? Selon James Gosling, la faute au conflit qui opposait alors Sun et Windows sur le d�ploiement de la JVM Windows sur les postes par d�faut. Sun n'aurait pas souhait� s'investir dans J2SE tant que Windows proposerait sa JVM.
De l'avis du cr�ateur de Java : "Aujourd'hui, Java sur le poste client n'est pas � la hauteur" et ce constat est facile � confirmer :
- aucun framework Swing de r�elle envergure : pas d'�quivalent � JSF, Struts, Wicket, Tapestry etc... si on compare a J2EE
- peu de librairies de composants : Swingx reste experimental.
- un syst�me de look and feel trop complexe, pour preuve le peu de boites capable de cr�er le leur en comparaison avec le nombre capable de cr�er des CSS
La difficult� de Swing, notamment la maitrise de la gestion �v�nementielle et de l'EDT n'en font pas une partie de plaisir et au final ce n'est pas �tonnant de trouver essentiellement des librairies payantes (Jide par exemple qui est tr�s bon) alors qu'on peut en trouver gratuitement � foison en J2EE.
Swing depuis 2007
Mais voila, depuis 2007 Sun semble vouloir revenir sur J2SE :
- James Gosling, cr�ateur de Java met en avant JavaFx
- Swingx tente d'apporter du neuf avec objectif d'�tre int�gr� en Java 1.5
- Aerith d�j� pr�sent� en 2006 devient open source , et oui, effectivement c'est une IHM qui d�chire pas mal. Un jnlp existe sur leur site, il faut tester avec le login romainguy.
- Romain Guy qui s'�tait fait connaitre sur Aerith publie avec Chett Haase un tr�s bon bouquin : Filthy rich clients
Soyons honn�te toutefois, le bouquin filthyrichclients s'il d�montre qu'on peut faire du tr�s bon travail avec Swing met aussi en �vidence que �a ne s'adresse pas � tout le monde. Certaines notions comme le double buffering, les probl�matiques d'acc�l�ration mat�rielle, les notions de Composite ou de transformation d'images sont tr�s techniques et mettent en oeuvre des notions math�matiques qui ne s'adressent pas � monsieur tout le monde. Qui n'a pas gal�r� des heures sur des probl�mes de glitch graphique, de pixels gris etc... ?
Et aujourd'hui ?
Et aujourd'hui 2009, cela me parait toujours moins rose.
- JavaFx peine � d�coller et son API n'est pas toujours pas stable (compatibilit� 1.1 et 1.2 qui laisse � d�sirer). A c�t� de �a, ses concurrents directs comme Flex sont en plein boom avec notamment un sdk qui vient de sortir sur Eclipse
- aucun framework n'a �merg� pour cacher la complexit� des concepts n�s dans Aerith (* voir plus bas pour nuancer cette affirmation)
- Swingx est tellement peu mis � jour qu'il continue toujours � cibler Java 1.5, version en fin de support depuis cette ann�e...
Pourquoi ce manque d'investissement de Sun depuis 2 ans ? Le rachat d'Oracle n'y serait pas �tranger ou bien est-ce simplement que 2 ans reste un d�lai tr�s court ? Nous verrons bien.
Mais personnellement j'ai tendance � �tre sceptique d'autant que la grande force de J2SE qui �tait la richesse de ses widgets et la r�activit� de son interface est d�sormais s�v�rement concurrenc� par les interfaces Web. GWT ou JSF avec IceFaces apportent d�sormais la m�me richesse aux webapps et pour un cout nettement moindre.
En conclusion, je ne d�nigre pas Swing et je pense que sa chance de survie va reposer comme beaucoup d'autres technologies sur la capacit� � la communaut� � proposer des outils, des composants, des best practices afin de cacher la complexit� du langage. Mais � l'heure actuelle, si on me donne le choix, je partirais pour ma part sur du J2EE classique.
(*) En fait, il existe bien une librairie assez avanc� qui permet de masquer la complexit�. J'ai d'ailleurs un second billet sur ce sujet qui parle de substance et laf-widget : http://hakanai.free.fr/index.php/the...ubstance-swing
Source : Le post sur mon blog
Partager