La constellation Java

Laurent POULAIN


Retour au Sommaire On parle beaucoup de Java. Trois ans après son apparition, le monde Java s'est considérablement étoffé, avec une offre produit qui grossit à vue d'oeil, des annonces en pagaille et des vendeurs tiers toujours plus nombreux. Mais ce monde n'est pas seulement constitué que de produits, de vendeurs tiers et de clients, il y a derrière toute une mécanique qui alimente la dynamique Java. Voyage au coeur de la constellation Java et de son fonctionnement.

Le marketing de Sun

A tout seigneur tout honneur, le formidable marketing Java monté par Sun est bien sûr omniprésent dans la constellation Java. Révolution de l'informatique par ci, association Intranet = Java par là, et toujours en message subliminal Java fossoyeur de Windows et de l'empire du grand Satan Bill Gates.

Le moins que l'on puisse dire, c'est que Sun orchestre magistralement l’opération depuis trois ans. A tel point que tous les éditeurs de logiciels dans le coup mettent en avant leur solution Java - mêmes les concurrents de Sun.

Petit détail intéressant, lors de la dernière conférence JavaOne, tous les stands étaient de même taille. Aucun gros éditeur ne pouvait avoir son superstand écrasant tous les autres, étant ainsi obligé d'être à égalité avec ses confrères de petites tailles. La question est: est-ce que Sun a imposé ce choix pour attirer les petits éditeurs vers Java ou est-ce pour montrer aux gros éditeurs qu'il restait le maître de la situation et qu'il n'était pas question que quelqu'un d'autre lui vole la vedette? Probablement les deux.


La communauté Java

Juste après vient la communauté Java qui à première vue contraste fortement avec le marketing de Sun. En effet, cette communauté ne s'intéresse qu'à à Java lui-même et se moque complètement des aspects marketing. Pour elle, seule la technique compte. On pourrait se demander comment les deux arrivent à cohabiter.

Mais le principal est qu'avec Java s'est crée une véritable communauté qui regroupe tous les amoureux de ce langage, qui se clame dés le début indépendante de Sun et qui suit en permanence les évolutions du langage. On ne compte plus les sites Web dédiés à ce langage, tels que Jars qui contient une multitude d'applets ou Java Lobby qui se veut le porte-parole de cette communauté - et accessoirement critique violemment la politique de Microsoft en la matière.

Mais en creusant un peu, on se rend compte que cette communauté est parfois plus animée par un esprit anti-Microsoft que par le langage même. L’exemple de James Gosling (le père de Java) qui a inauguré la dernière conférence JavaOne en entartant une effigie de Bill Gates est représentatif.


La raison d'un tel succès médiatique

Beaucoup de personnes s'interrogent quant à la raison du succès médiatique de Java. Certes, Java est un très bon langage, mais cela ne justifie en aucun cas un tel soulèvement médiatique.

La raison de cette extraordinaire réussite tient au fait que Sun a réussi avec Java à offrir à la communauté underground informatique une solution alternative à la fois techniquement stimulante et ayant la crédibilité du monde de l'informatique d'entreprise.

Informatique d'entreprise vs. informatique underground

La communauté underground informatique est composée d'étudiants, d'universitaires et plus généralement de tous les passionnés de la technique (étant sur le marché du travail ou non). Cette communauté est uniquement intéressée par la technique, la considérant comme une fin et non comme un moyen. A l'opposé, l'informatique d'entreprise est plus pragmatique et considère la technique uniquement comme un moyen. Qu'importe que la technique utilisée ne soit pas la meilleure, l'important est de gagner de l'argent.

La communauté underground détestant presque par définition Microsoft, elle n'en n'est pas à sa première solution alternative pour remplacer Windows (lire à ce sujet Les solutions alternatives, révélatrices d'un malaise). Mais ces solutions sont rarement crédibles dans le monde de l'informatique d'entreprise car étiquetées comme solutions d'amateur. Alors que la communauté underground est fière qu'un étudiant (c'est-à-dire quelqu'un de son monde) soit à l'origine d'un produit aussi accompli que Linux, le monde de l'informatique d'entreprise aura un tout autre point de vue et considérera au contraire que, Linux provenant du milieu universitaire, il a donc été conçu par des gens d'un autre univers et qui ne connaissent en rien ses contraintes.

De son côté, l'informatique d'entreprise n'en n'est pas non plus à sa première solution alternative, beaucoup de compagnies fort respectables ayant une dent contre la firme de Bill Gates. IBM a bien essayé avec OS/2 Warp ou le PowerPC mais aucun d'eux n'a pu fournir l'innovation technique nécessaire pour intéresser la communauté underground. Steve Jobs (cofondateur d'Apple) a bien essayé avec sa compagnie NeXT, mais le prix de ses produits a rendu ceux-ci inaccessibles à cette même communauté qui généralement n'a que peu de moyens.

Puis vint Java

Avec Java, la firme de Scott McNealy a été le premier à réussir un tel consensus, car elle a apporté sa crédibilité (et donc l'intérêt de la part de l'informatique d'entreprise) à une solution alternative qui a de quoi enchanter la communauté underground.

La solution alternative Java a eu tous les atouts pour enchanter la communauté informatique underground. Elle est non seulement technologiquement innovante mais également gratuite. N'importe qui peut télécharger le JDK du site Web de JavaSoft et ainsi devenir développeur Java. Cerise sur le gâteau, elle promet implicitement de détrôner le diable Micro$oft (promesse certainement bidon mais là n'est pas la question). Ajoutez-y du Corba et vous avez la moitié des adorateurs de Java qui tombent à vos pieds. Une partie non négligeable de la communauté underground a donc rejoint le camp Java pour devenir la communauté Java.

Sun étant derrière Java, il apporte sa crédibilité, attirant ainsi l'attention du monde de l'informatique d'entreprise et plus particulièrement des médias - ceux-là même qui ne consacreront jamais une première page à Linux. Cet attrait a été amplifié par la communauté Java elle-même dont le nombre grandissant à incité les éditeurs de livres informatiques à publier dans les plus brefs délais des ouvrages dédiés à Java.

La firme de Scott McNealy a avec Java donné à la communauté underground un moyen de pénétrer dans le monde de l'informatique sérieuse sans compromis technologique. Car Java est la première solution alternative à se voir consacrée tant d'articles de journaux et tant de premières pages. Les purs et durs de la technique peuvent enfin fièrement mettre sur leur CV une solution alternative (il est en effet bien plus avantageux d'ajouter Java à son CV qu'Amiga). Quant à la conférence JavaOne, elle reste encore quasiment réservée à la technique pure, 99% des produits présentés étant destinés aux développeurs.

Il ne faut donc pas se leurrer, la grande majorité des "clients" actuels de Java sont issus de la communauté underground et non du monde de l'entreprise. Mais l'astuce de Sun a été de jouer sur l'amalgame. En annonçant par exemple tout à fait officiellement des dizaines de milliers de développeurs Java, Sun a en fait compté toutes les personnes ayant téléchargé le JDK de son site.

Est-ce que Java va rester pour autant une technologie marginale en entreprise? Pas si sûr, car tout ce tapage médiatique en a quand même poussé plus d'un à évoluer vers ce langage. Et il faut le rappeler, à défaut d'être une plate-forme révolutionnaire Java reste un excellent langage.


Les mouvements des grands éditeurs

Moins contrôlés par Sun - mais pas plus inintéressants - sont les mouvements des grands éditeurs dans le domaine. Car ceux-ci, s'ils sont plus ou moins forcés de se mettre à Java, ne désirent pas forcément complètement jouer le jeu de Sun.

Hewlett-Packard

En commençant par HP qui a sortit sa propre implémentation de la JVM qu'il destine aux systèmes embarqués. L'avantage pour Hewlett-Packard est simple: non seulement il n'a pas à payer de royalties sur les runtimes Java mais il est complètement maître des produits qu'il développera en Java.

Autant dire que la nouvelle n'a pas été du goût de Sun. Si ce n'est pas la première fois qu'un éditeur crée sa propre implémentation de la JVM c'est la première fois qu'il est si gros. De plus, la JVM de HP ne comportant pas toutes les librairies officielles, Sun voit là non seulement une faille dans la mainmise qu'il a sur son produit mais également pour ce qui de la stabilité de la plate-forme Java elle-même.

Sun fut tellement embarrassé qu'il proposa de faire grâce à HP des royalties sur sa JVM. Les deux géants sont actuellement en négociations mais l'accord est loin d'être conclu: Hewlett-Packard trouve en effet que les méthodes de validation qu'utilise Sun sont insuffisantes pour du logiciel embarqué.

Microsoft

Mais alors que HP cherche plus à être le plus indépendant possible de Sun qu'à lui mettre des bâtons dans les roues, d'autres compagnies ne raisonnent tout à fait de la même manière.

C'est ainsi que Microsoft, qui est toujours partant quand il s’agit de semer la zizanie dans le clan Java, compte comme par hasard licencier la JVM de HP pour la mettre dans Windows CE. Le géant de Redmond en profite du même coup pour se venger du verdict de la justice américaine lui interdisant d'utiliser le logo Java sur deux de ses produits.

Comme le dénonce la communauté Java, la firme de Bill Gates essaye par tous les moyens de faire éclater la portabilité du langage. Mais très franchement, faut-il être surpris? Quel dictateur accepterait une entrave à ses pleins pouvoirs? Ce n’est pas que Microsoft craigne réellement Java, mais le géant de Redmond a appris avec Internet qu’il est dangereux d’ignorer une solution concurrente même a priori inoffensive.

Netscape

Avec la sortie de Communicator, Netscape avait pleinement misé sur Java. Outre le fameux logo Java sur la page de présentation du browser, Netscape intégra tout un tas de produits tiers Java à Communicator afin de rendre celui-ci la plate-forme client idéale pour les applications Java distribuées (voir La guerre du browser Web). De plus, Netcaster - le client push de Netscape - fut entièrement écrit en Java.

Mais depuis peu Netscape s'est quelque peu retiré de l'arène pour prendre une ligne plus neutre et plus pragmatique. La première étape a été de discrètement retirer le logo Java de son browser Web en pleine guerre Sun/Microsoft. La deuxième est de ne plus vouloir imposer de JVM avec son browser. Que l'utilisateur choisisse son camp, c'est son problème.

Car en jouant la carte Java Netscape n'a pas rencontré l'adhésion qu'il espérait, bien au contraire. Un client Netcaster poussif et franchement peu convaincant, des problèmes à rester compatible avec la JVM de Sun, et aucune retombée de son soutien à Java. Bref, Netscape s'est désengagé du problème en laissant à d'autres le soin de se frotter avec Java. Que l'utilisateur veuille utiliser la JVM de Sun ou celle de Microsoft, ce n'est plus le problème de Netscape - tant qu'on utilise Communicator.


L'erreur de Sun

Sun quant à lui est nettement moins habile en matière de mouvements stratégiques qu’en marketing. Imprégné de sa culture de constructeur de matériel la firme de Scott McNealy se concentre uniquement sur la plate-forme Java elle-même, dédaignant les applications Java proprement dites, et commettant ainsi deux énormes erreurs stratégiques.

La première est d'oublier que l'on n'est jamais mieux servi que par soi-même. "Notre plate-forme est là et elle est géniale. Attendez que les applications arrivent et vous allez voir ce que vous allez voir" nous dit-on. L'histoire de l'informatique regorge de compagnies qui ont mordu la poussière en tenant ce genre de discours. Si Microsoft a réussi à faire triompher Windows, c'est entre autres parce qu'il a en parallèle fourni les applications qui allaient avec, brisant ainsi la spirale "pas de clients donc pas de d'applications, pas d'applications donc pas de clients". Or avec Java que voit-on? Des "composants logiciels" à la volée mais aucune application célèbre, aucune killer application qui puisse réellement faire envie à l'utilisateur lambda. Le problème est que pour rassurer le client il ne suffit pas de fournir une version Java de chaque type d'application, il faut fournir l'application que le client désire. Bref ce ne seront ni une JVM stable et rapide ni les NC qui feront décoller ou non Java mais bel et bien les applications. Mais Sun, empêtré dans sa culture de constructeur, se focalise uniquement sur sa plate-forme, passant à côté du fait que le secteur leader n'est plus le secteur du système d'exploitation mais le secteur des applications. De nos jours, le client achète d'abord son traitement de texte favori puis choisi ensuite la plate-forme sur laquelle il tourne le mieux (lire à ce sujet Evolution du secteur leader). Laisser à d'autres compagnies le soin de s'occuper d'un secteur aussi stratégique que celui des applications est faire prendre un gros risque à Java.

La deuxième raison est que si Java perce comme Sun l'espère, il risque d'échapper à son créateur. Car si demain un éditeur fournit la killer application qui manque tant à Java, il aura toutes les chances de ravir la vedette à Sun. Impossible? Qui se souvient qu'à l'origine le PC était un produit 100% IBM? Eh oui, Big Blue, trop focalisé sur la plate-forme (matérielle à l'époque), a commis le même type d'erreur et l'a payé chèrement.


Et Java dans tout ca?

Mais dans l’histoire on en oublie presque le principal: le produit Java lui-même qui, s’il n’est pas aussi révolutionnaire que Sun veut bien le faire croire et s'il est plus un langage qu'une plate-forme, Java reste un très bon langage.

La portabilité de Java n’est pas encore parfaite? Elle est extraordinaire quand on la compare à celle du C++. Certes, le fameux slogan "write once, run everywhere" serait plus "write once, debug everywhere" comme se plaisent à le dire ses détracteurs. Mais à côté du C++ qui en est au "write everywhere, debug everywhere" l'avancée est énorme. Alors qu'avec Java on en est à se battre contre les différences de comportements de l'interface graphique suivant les différentes plates-formes, en C++ il faut bel et bien complètement réécrire la partie interface graphique sous chaque environnement ... et maintenir les différentes versions en parallèle.

Java reste encore lent? Il a fait d'énormes progrès grâce aux compilateurs Just-in-Time et promet d'être encore plus rapide avec les technologies à venir. De plus, les processeurs évoluant beaucoup plus rapidement que le reste du matériel, ils se tournent de plus en plus les pouces. Dans ce contexte, quelle différence y a-t-il entre un processeur attendant que le disque dur veuille bien lui envoyer du code C++ compilé et un processeur qui interprète du bytecode Java provenant du même disque dur?

Mais surtout Java évolue rapidement et dans le bon sens. Car la plupart des défauts qu'on lui reprochent sont plus du fait de son jeune âge et ne sont certainement pas irrésolubles.

Petit détail amusant, cette fameuse portabilité n’est pas toujours l’avantage le plus remarqué sur le terrain. Prenez un développeur travaillant sur un projet Java et demandez-lui les avantages qu'il trouve à ce langage. Dans bien des cas, il vous citera la facilité de programmation ou de maintenance, mais dans de nombreux cas oubliera la sacro-sainte portabilité («mais au fait, c'est vrai, ce projet doit être portable»). Ceci est du au fait que d'une part les développeurs gardent leurs anciens réflexes et d'autre part que les projets multi plates-formes ne sont pas si courants que ca. La portabilité n'est plus aussi importante qu'elle ne l'a été.