À JavaOne, la grand-messe de la communauté Java organisée par Sun à San Francisco (dernier jour ce vendredi 19 mai !), Geir Magnusson de la fondation Apache a annoncé la mise à disposition des bibliothèques de programmation SWING/AWT dans le projet Open Source Harmony.
Cette annonce s’est évidemment un peu perdue dans le bruit des annonces « Ajax », particulièrement audible lors de cette édition de la conférence annuelle. Sun démontrait, par exemple, de la génération de code Ajax dans son environnement de développement Studio Creator, tandis que Google défendait une approche complètement originale de traduction de code Java en code Javascript (les excursions exploratoires des géants de l’Internet sur les nouveaux territoires Ajax feront l’objet d’une prochaine chronique plus technique). Or la disponibilité d’une implémentation de SWING/AWT dans le projet Apache/Harmony dynamite peut-être le dernier verrou à une implémentation Open Source de Java.
De quoi s’agit-il ? AWT (Abstract Window Toolkit) est une bibliothèque graphique Java pour les interfaces utilisateur. Elle date de la première version du langage publiée dès 1995 – les exégètes de l’histoire du GUI (Graphical User Interface) diront, avec quelque raison, que son « look and feel » est très daté. Elle sert néanmoins de fondation à une bibliothèque bien plus riche, appelée SWING, qui s’est substituée à elle depuis la livraison de Java 2 en 1997. AWT et SWING, qui sont instrumentaux dans le succès du langage Java et surtout de la plate-forme Java (Java SE et ses déclinaisons), a été développé par Sun qui en garde jalousement le secret de fabrication.
Par ailleurs, les relations de Sun avec la communauté Open Source ont toujours été délicates, variant sans cesse de l’entente cordiale à l’orageux et au délétère. Depuis 1999 le débat interne chez Sun entre les partisans de l’Open Source et ses détracteurs ne fait que gronder, loin des feux de la publicité et des grandes conférences publiques. Ayant vu ses résultats financiers passablement écornés par le succès croissant de Linux et des plates-formes Intel sous Linux, concurrençant frontalement ses serveurs d'entrée de gamme, on comprend évidemment que Sun y regarde à deux (ou plus) fois avant de se rallier au libre.
D’où (comme Microsoft) une approche prudente, que certains jugent timorée, sur ce nouveau terrain. Le site SunSource.net, par exemple, regroupe les projets que Sun a progressivement versés au domaine des logiciels libres et Open Source (JINI/JXTA, etc.). En 2005, dans un mouvement plus audacieux dont Jonathan Schwartz était l’inspirateur, c’est son système d’exploitation tout entier, Solaris, que Sun versait au domaine du logiciel libre. Ce même Schwartz avait été nommé COO de la société concomitamment au règlement du procès Sun-Microsoft d’avril 2004 qui voyait Microsoft verser $700m à Sun pour éteindre le procès anti-trust, puis $900m pour les arrêter les poursuites pour exploitation illégale de brevets (sur 10 ans tout de même !). En échange les sociétés s’engageaient à se payer réciproquement les royalties sur les technologies de l’un employées chez l’autre. Et quel était le sujet de cette « collaboration » forcée : la machine virtuelle Java et la plate-forme Java dans l’univers Windows, bien sûr.
Aujourd’hui, Jonathan Schwartz a remplacé Scott McNealy au poste de CEO de Sun. (McNealy lui a laissé sa place fin avril 2006.) Depuis la rumeur d’une « libération » de Java circule avec insistance dans la blogosphère et les cercles éthérés des cognoscenti. Les règles de compatibilité Java, édictées par Sun, et qui doivent impérativement être respectées pour obtenir le label « compatible », comportent depuis le début une clause échappatoire pour le constructeur.
Pour être compatible, les implémentations tierces doivent fournir une bibliothèque de GUI SWING/AWT, mais les tests de compatibilité ne sont pas définis. En conséquence les exploitants de la licence Java sont, pour être compatibles, dans l’obligation d’utiliser la seule implémentation légitime : le code développé par Sun, et donc propriétaire. Sun a accepté de faire une exception dans le cas de l’intégration de Java dans l’interface Aqua de Macintosh OS X d’Apple – probablement sur la base que le marché d’OS X était trop petit pour être si regardant. À l’inverse, IBM dont les premières livraisons de l’atelier libre Eclipse ne comportait pas SWING/AWT a bien été conduit à en passer par ces fourches caudines sous le poids de la demande des développeurs Java utilisateurs d’Eclipse.
Le projet Harmony d’Apache (http://incubator.apache.org/harmony/), comme le projet Kaffe de la fondation GNU (http://www.kaffe.org/) sont des projets d’implémentation libres de la machine virtuelle et de la plate-forme Java – il y en a d’autres à des états divers d’avancement, les deux précités sont les plus actifs. L’attitude officielle de Sun est de ne pas considérer ces projets comme des menaces directes arguant que le manque d’organisation de ce type de développement se prêtait mal à l’ambition affichée. Et il est vrai que ce n’est pas une mince affaire que de (re)développer toutes les bibliothèques de la plate-forme Java. De plus, Sun avait également transigé avec la fondation Apache sur le projet de serveur d’applications de la fondation, en acceptant de le certifier « compatible ». La certification, annoncée en octobre 2005, venait à point nommé dans l’imbroglio juridico-légal qui opposait la fondation Apache et JBoss – racheté depuis par Red Hat, tout se tient ! – sur la propriété du code « souche » des deux serveurs d’applications concurrents.
Aujourd’hui, Sun apparaît donc comme pris de vitesse. Le projet Harmony livre sa propre implémentation du chaînon manquant avec SWING/AWT contournant le verrou de procédure laissé par Sun dans la certification. Comme le disent les bloggers, il faudra probablement peu de temps à telle ou telle distribution Linux pour intégrer Harmony (tout en laissant la version non libre de Sun dans son répertoire avec tous les caveat qui s’y attachent) et fassent le lit du Java libre.