Compte-rendu subjectif et
non-exhaustif du plus grand
événement annuel de la 
planète Java.

Par Julien Vayssière.


 

Dans cet article j'essaie de résumer l'essentiel de ce que j'ai vu et entendu lors de JavaOne'99. Ce compte-rendu n'a pas pour ambition d'être exhaustif (une équipe de dix personnes aurait à peine suffit à la tâche), mais au moins vous savez que l'information présentée ici est de première main. Pour un compte-rendu complet en anglais, regardez du côté de JavaWorld. Les sujets abordés ici recoupent évidemment mes centres d'intérêt dans la très vaste galaxie Java. N'hésitez pas à m'écrire si vous avez des commentaires, des précisions ou des questions, je me ferai un plaisir de vous répondre.
 
 
  • Introduction
  • Keynotes
  • 3 éditions pour Java
  • Java Community Process
  • Environnements de développement
  • Sécurité
  • Obfuscation
  • XML et Java
  • Jini
  • Java Grande Forum
  • Analyseurs de performances

  •  
  • Remerciements
  • L'auteur

  •  
    Introduction

    JavaOne'99, quatrième édition de la conférence pour développeurs organisée chaque année par Sun Microsystems autour de la technologie Java, s'est tenue au Moscone Convention Center à San Francisco du 15 au 18 Juin. Son succès a surpris tout le monde, à commencer par les organisateurs eux-mêmes qui jouaient à guichets fermés dès le troisième jour, malgré le prix a priori prohibitif de l'inscription qui atteignait les 10000 FF (1450 euros). Avec plus de 21000 participants et 600 orateurs, il s'agit selon Sun de la plus grande conférence pour développeurs du monde.

    Cette édition de JavaOne a notamment confirmé la crédibilité de Java dans tous les segments du marché, des serveurs jusqu'aux cartes à puce en passant par les applications clientes, les systèmes embarqués et les PDA (Personal Digital Assistants, ou assistants de poche, comme le Palm Pilot).

    Meme si Sun avait délibérément choisi de ne pas mettre l'accent sur Jini, il semble bien que cette technologie destinée à un monde "connecté" ou toutes les applications et les appareils parlant Java se découvrent et collaborent spontanément en réseau aura un énorme impact dans les années qui viennent.

    La conférence comportait quatre composantes qui se déroulaient plus ou moins en parallèle: keynote talks, sessions, BOFs et une exposition regroupant plus de 150 exposants.

  • Introduction
  • Keynotes
  • 3 éditions pour Java
  • Java Community Process
  • Environnements de développement
  • Sécurité
  • Obfuscation
  • XML et Java
  • Jini
  • Java Grande Forum
  • Analyseurs de performances

  •  
  • Remerciements
  • L'auteur

  •  
    Keynotes

    Les keynote talks constituent la partie la moins technique de la conférence. Il s'agit de discours ou parfois de talk-shows aux cours desquels des personnalitées du monde Java présentent à un auditoire acquis d'avance leur vision de l'avenir, un avenir généralement débarassé du méchant Microsoft. On a échappé cette année aux fautes de goût de l'année précédente, comme lorsque James Gosling, un des pères de Java, avait entarté un sosie de Bill Gates sur scène, en référence aux mésaventures de ce-dernier lors de son passage en Belgique.

    On a ainsi pu voir et entendre Scott McNealy, président de Sun (ou CEO, comme on dit là-bas) et Alan Baratz, président de Java Software (anciennement JavaSoft), la branche de Sun qui s'occupe de Java. Du côté technique, les keynotes les plus intéressantes provenaient de James Gosling et Bill Joy. On a aussi eu droit à un OVNI en la personne de Daniel Hillis, vice-président de Disney, qui nous a expliqué comment il était en train de construire une horloge qui durera 10000 ans. Le rapport avec Java ? Oh, il espère que Java durera aussi longtemps que l'horloge, et sera aussi maintenable, évolutif, etc... un peu tiré par les cheveux mais très intéressant quand même.

    Patricias Sueltz, responsable de tout ce qui est Java chez IBM, a partagé sa keynote avec Scott McNealy, CEO de Sun, prouvant s'il en était encore besoin que les deux compagnies marchent main dans la main en ce qui concerne Java, unies dans un même combat pour faire chuter leur adversaire commun Microsoft.

    Tous les transparents des keynotes sont disponibles sur le web. Les transparents ne contiennent généralement que peu d'information, ceux qui veulent vraiment voir comment c'était peuvent regarder la vidéo à travers une applet Java qui utilise la technologie GTS Webcast, disponible sur la même page.

    Peu d'annonces ont été faites lors des keynotes cette année, mais toutes témoignaient d'une confiance sans bornes dans la mission historique de Java (à l'échelle de l'industrie informatique s'entend). A tort ou à raison, il flottait l'idée que Java sera la technologie-phare de l'ère post-PC, et que cette ère sera caractérisée par des systèmes naturellement connectés entre-eux (le slogan de Sun n'est-il-pas The Network Is The Computer ?) dans un environnement très dynamique débarassé des protocoles et systèmes propriétaires. Par moments ça ressemble un peu à la méthode Coué, mais force est de reconnaître que c'est une vision de l'avenir très séduisante, et que l'industrie semble se mobiliser derrière.

    A cet égard, la combinaison de Java, XML et Jini semble parfaite. En effet, Java abolit les différences entre les différents matériels et les différents systèmes d'exploitation, XML est un format d'échange de données universel et Jini permet à tout ce monde de communiquer spontanément, sans connaissance préalable, ce qui est très important à l'heure des systèmes portables de toutes sortes (téléphones mobiles, PDAs, pagers,...) et des réseaux locaux sans fil.

    L'un des principaux architectes de Jini, Jim Waldo, semblait en être tellement persuadé qu'il a déclaré avec tout le ton et toute la conviction d'un télévangéliste "Yes, Java changed my life". Quand on y pense, l'opposition Sun-Microsoft prend parfois des aspects de guerre de religion, il est vrai.

  • Introduction
  • Keynotes
  • 3 éditions pour Java
  • Java Community Process
  • Environnements de développement
  • Sécurité
  • Obfuscation
  • XML et Java
  • Jini
  • Java Grande Forum
  • Analyseurs de performances

  •  
  • Remerciements
  • L'auteur

  •  
    La nouvelle organisation de la plate-forme Java

    Au cours de sa keynote inaugurale, le président de Java Software Alan Baratz a dévoilé la nouvelle organisation de la plateforme Java. Si l'on exclue JavaCard (le sous-ensemble de Java destiné aux cartes à puce), l'offre Java se décline désormais en trois "éditions" différentes: Java 2 Enterprise Edition (J2EE), Java 2 Standard Edition (J2SE) et Java 2 Micro Edition J2ME (ce qui se prononce 'Java To Me !).

    Java 2 Enterprise Edition est destiné au marché des serveurs, ce qui regroupe en particulier des produits comme la machine virtuelle HotSpot (plus de détails ici), les Servlets et les composants côté serveur EJB (Enterprise Java Beans). Java 2 Standard Edition représente plus ou moins Java sur les PC et les stations de travail,c'est-à-dire la version de Java que nous connaissons tous déjà, tandis que Java 2 Micro Edition s'adresse au marché des systèmes embarqués (téléphones, voitures, télévision, assistants de poche, ...).

    Deux chiffres tirés du discours d'Alan Baratz : plus de 1,7 million de développeurs Java actuellement dans le monde et 78% des universités enseignent déjà Java. Il prévoit également que le nombre de développeurs Java dépassera le nombre de développeurs C++ d'ici l'an 2002.

  • Introduction
  • Keynotes
  • 3 éditions pour Java
  • Java Community Process
  • Environnements de développement
  • Sécurité
  • Obfuscation
  • XML et Java
  • Jini
  • Java Grande Forum
  • Analyseurs de performances

  •  
  • Remerciements
  • L'auteur

  •  
    Java Community Process

    James Gosling a annoncé que plusieurs des améliorations ou des modifications de Java discutées dans le cadre du processus ouvert JCP (Java Community Process) ont été adoptées, et seront intégrées aux futures versions de Java. On remarque en particulier l'introduction des types génériques dans le langage (plus ou moins l'équivalent des templates en C++), d'une extension de Java pour les systèmes temps-réel et la révision de l'API d'impression des documents qui, et c'est un avis personnel, n'est en l'état actuel qu'une triste blague.

    L'existence d'un processus ouvert de discussion des amélioration à apporter à Java et des futures extensions de la plate-forme est une des grandes forces de la communauté Java. Toute personne intéressée peut participer librement et gratuitement aux discussions, mais Sun garde la propriété intellectuelle de tout ce qui se passe dans le processus. Les mauvaises langues diront que c'est un bon moyen pour Sun d'avoir des experts qui travaillent pour eux gratuitement, mais on peut aussi voir ça comme une nouvelle forme de relations clients-fournisseur bien éloignée de ce qui se passe dans l'épicerie d'en face.

  • Introduction
  • Keynotes
  • 3 éditions pour Java
  • Java Community Process
  • Environnements de développement
  • Sécurité
  • Obfuscation
  • XML et Java
  • Jini
  • Java Grande Forum
  • Analyseurs de performances

  •  
  • Remerciements
  • L'auteur

  •  
    Environnements de développement

    Pour ce qui est des environnements de développement intégrés, les trois poids lourds du secteur étaient représentés: Visual Café de Symantec, JBuilder de Borland et Visual Age d'IBM. Signe des temps, IBM présentait une préversion de Visual Age pour Linux, que l'on peut télécharger gratuitement, mais qui ne supporte pour l'instant que le JDK 1.1.7. Visual Age est également disponible pour OS/2 et AIX, l'Unix d'IBM. Borland de son côté annonçait une préversion de JBuilder pour Solaris, qui sera disponible vers la fin de l'année, la version Linux devant suivre au début de l'année prochaine.

    Si comme moi vous trouvez que ces outils sont trop lourds (par exemple, j'ai dû passer à 128Mo de RAM pour faire tourner JBuilder correctement sur mon PC avec Windows NT) et que vous payez pour tout un tas de fonctionnalités que vous n'utiliserez jamais, jetez donc un oeil à Kawa, l'environnement de développement de Tek-Tools. Il s'agit d'un outil qui vient en complément du JDK de Sun (c'est un front-end graphique pour le JDK en quelque sorte), il a un très bon débuggeur, un bon éditeur de texte et, surtout, s'adapte à toutes les versions du JDK. Même si les autres IDEs permettent d'utiliser un JDK externe, la plupart du temps ils ne donnent pas accès au débuggeur, ce qui est très frustrant (expérience personnelle avec Visual Café et JBuilder), alors que Kawa résoud ces problèmes. Kawa ne tourne que sous Windows malheureusement et une version d'évaluation est disponible sur le site web. Ils ne pensent pas supporter d'autres systèmes d'exploitation dans un futur proche.

    Plusieurs outils permettant de faire de la modélisation UML et de la génération de code à partir de modèles UML étaient présentés, dont StructureBuilder de Tendrill et Simply Objects d'Adaptive-Arts. Si vous avez les poches très profondes, vous pouvez aussi utiliser Rational Rose, qui n'apporte guère plus que les autres dans un environnement tout-Java. Même si ils n'avaient pas de stand à JavaOne, il faut aussi citer un outil très prometteur : Argo/UML qui permet de faire de la conception en UML en se laissant guider par le logiciel, c'est très bien fait et très agréable à utiliser. Cet outil est entièrement écrit en Java et nécessite de ce fait une configuration assez puissante pour tourner correctement.

  • Introduction
  • Keynotes
  • 3 éditions pour Java
  • Java Community Process
  • Environnements de développement
  • Sécurité
  • Obfuscation
  • XML et Java
  • Jini
  • Java Grande Forum
  • Analyseurs de performances

  •  
  • Remerciements
  • L'auteur

  •  
    Sécurité

    L'arrivée de la plateforme Java 2 fournit aux développeurs Java un environnement pour écrire des applications sécurisées dignes de ce nom. En particulier, l'extension JCE (Java Cryptography Extension) permet de gérérer des clés, d'encrypter, décrypter, signer, etc... indépendemment de la méthode de cryptographie utilisée. Récemment, Sun a présenté JAAS (Java Authentication and Authorization Service), une nouvelle API Java qui étend le controle d'accès en fonction de la personne qui fait tourner le code, en complément des mécanismes existants basés sur la provenance du code (auteur et site de téléchargement). Les transparents de la présentation de JASS à JavaOne sont ici. Sun a également émis une proposition pour renforcer RMI (l'API pour faire des objets distribués en Java) avec des mécanismes de sécurité, plus de détails sur la page de RMI.

    Un certain nombres d'entreprises fournissent des implémentations en Java de divers systèmes de cryptographie qui viennent s'intégrer dans JCE, en particulier Entrust et Centuris de Phaos. J'ai découvert un produit à ma connaissance unique pour Java, c'est JProv de Eracom. Il s'agit d'une implémentation hardware de JCE, c'est-à-dire une carte PCI qui comporte une boîte scellée bourrée d'électronique qui réalise tous les algorithmes classiques comme DES, Triple-DES, RC4 et RC5, RSA, IDEA,... Les clés secrètes sont stockées dans la carte, et toute tentative d'ouvrir la boîte pour lire son contenu efface automatiquement sa mémoire. Non seulement ce système est plus sûr (dans une implémentation logicielle, une application mal intentionnée peut éventuellement lire les clées privées stockées sur le disque dur par une autre application), mais surtout libère le processeur puisque la partie qui consomme le plus de ressources de calcul est implémentée par le matériel.

    Dans un autre registre, la société AdAstra Engineering présentait Jumping Beans, un framework pour développer des composants logiciels Java (JavaBeans) qui peuvent bouger de machine en machine à l'intérieur d'une organisation de manière sécurisée. Leur implémentation de la sécurité et de la migration est à mon avis très ad hoc, mais ça a l'air de bien marcher. Leur site web est très bordélique, une sorte d'anti-modèle du genre.

  • Introduction
  • Keynotes
  • 3 éditions pour Java
  • Java Community Process
  • Environnements de développement
  • Sécurité
  • Obfuscation
  • XML et Java
  • Jini
  • Java Grande Forum
  • Analyseurs de performances

  •  
  • Remerciements
  • L'auteur

  •  
    Obfuscation et protection de la propriété intellectuelle

    Toute personne un tant soit peu familière avec Java sait qu'une classe écrite en Java est compilée dans un langage appelé bytecode qui utilise le jeu d'instructions de la machine virtuelle Java. Comme l'édition de liens en Java est faite à l'éxécution (ce qui permet le chargement dynamique de code, contrairement à C++ par exemple), il est nécessaire de conserver dans le bytecode la plupart des informations présentes dans le fichier source.

    Il est par conséquent assez facile de reconstituer quelque chose de très proche du code-source original à partir du bytecode (un processus appelé fort justement décompilation), ce qui permet de comprendre comment marche une application, et, par exemple, de s'en inspirer pour construire une application concurrente. Il s'agit d'une menace très sérieuse en termes de propriété intellectuelle, et plusieurs compagnies présentaient à JavaOne des obfuscateurs de bytecode qui sont censés résoudre ce problème.

    Il s'agit de programmes qui modifient le bytecode d'une classe de manière à rendre sa décompilation non pas impossible mais à peu près inutile, puisque le code-source que l'on peut reconstituer à partir de bytecode obfusqué est très difficilement compréhensible par un être humain. En particulier, toutes les méthodes et variables sont renommées au hasard de manière à avoir un nombre d'identicateurs minimal. Imaginez une classe A où toutes les méthodes s'appelent a, aa,... et les variables aussi, et vous avez une idée du cauchemar qui attend celui ou celle qui veut comprendre ce que fait le code. Il y a de nombreuses techniques d'obfuscation, les personnes intéressées par des détails (très) techniques peuvent consulter la page web sur l'obfuscation maintenue par Christian Collberg, un chercheur travaillant sur ces problèmes.

    Les produits présents à JavaOne étaient JClocak de Force5 Software, SourceGuard de 4th Pass et DashO-Pro de preEmptive Solutions. Il semble que DashO-Pro ait résolu le problème qui affecte ses concurrents, à savoir que le bytecode modifié par l'obfuscation provoque le plantage de certaines machines virtuelles basées sur un modèle JIT.

    Tous ces systèmes sont paramétrables, de manière, par exemple, à ne pas renommer les méthodes publiques des JavaBeans, ce qui les rendrait inutilisables. Ces outils se chargent aussi de reconstituer des stubs et skeletons RMI pour les classes obfusquées.

    Néanmoins, j'ai été déçu de constater qu'aucun de ces produits ne modifie le flot de contrôle ou les structures de donnée de l'application. En outre, aucun ne propose une métrique pour mesurer le degré d'obfuscation, ce qui est nécessaire si l'on veut utiliser ces techniques pour sécuriser des systèmes de code mobile.

    Un "effet secondaire" intéressant des techniques d'obfuscation c'est qu'elles permettent de réduire la taille du bytecode, ce qui est particulièrement utile pour les systèmes embarqués.

  • Introduction
  • Keynotes
  • 3 éditions pour Java
  • Java Community Process
  • Environnements de développement
  • Sécurité
  • Obfuscation
  • XML et Java
  • Jini
  • Java Grande Forum
  • Analyseurs de performances

  •  
  • Remerciements
  • L'auteur

  •  
    XML et Java

    Je connaissais peu XML avant d'assister à JavaOne, et j'avoue que même après avoir assisté à une présentation technique sur XML, il m'est toujours difficile de faire la part de ce qu'est vraiment XML et des fantasmes qui tournent autour.

    XML est un standard de description de document proposé par le W3C. Son objectif majeur est de mettre fin à l'expansion sans fin et anarchique du langage HTML, dont l'existence en tant que standard est menacée par les trop nombreuses extensions propriétaires introduites par les marchands de browsers. Le problème n'est pas tant les nouvelles extensions en elle-mêmes, qui peuvent être à terme incorporées dans le standard officiel, que la confusion qu'elles introduisent entre la structuration d'un document (titre, chapitre, paragraphes, etc...) et sa présentation (fontes, couleurs, mise en page,...). En termes plus abstraits, HTML souffre de confusion entre syntaxe et sémantique.

    Un autre objectif d'XML est de mettre fin aux standards propriétaires non-documentés (documents au format Microsoft Word par exemple). XML est un méta-langage car il permet de spécifier un langage particulier destiné à décrire une classe de documents spécifiques, comme par exemple un bon de commande ou un article scientifique.

    Le discours de Sun concernant XML peut se résumer comme suit. XML est un standard de description de documents portable et universel, mais il ne fournit qu'une syntaxe. Java est un langage de programmation portable et universel dans lequel on peut exprimer les actions associées à la syntaxe XML, c'est donc le complément parfait d'XML.

    Java 2 comporte déjà des outils pour construire des applications devant lire et écrire des documents XML. SAX génère des évenements Java en réponse à la lecture d'un document XML et DOM construit une structure de donnée arborescente à partir d'un document HTML. Une correspondance Java-XML (Java-XML Bindings) est à l'étude afin de générer des classes container à partir de documents XML et vice-versa. Plus de détails dans les slides de la présentation.

    Une utilisation intéressante de XML serait de l'utiliser comme format de sérialisation des objets Java. Une requête allant dans ce sens a été soumise à Sun. Néanmoins, comme XML est supposé être lisible par des êtres humains, un objet sérialisé en XML prends beaucoup plus de place que son équivalent sérialisé par des mécanismes plus classiques. De l'autre côté, un mécanisme de sérialisation utilisant XML serait plus robuste et tolererait mieux les changements.

    Si vous voulez savoir pourquoi XML n'est pas un remplacement pour les middleware comme CORBA, cet article publié par l'OMG devrait vous éclairer. Et en attendant que le monde entier parle XML, si vous voulez publier des documents lisibles par tous je vous recommande ces recommandations sur les formats d'échange de documents compilées par tout un tas de gens à l'INRIA.

  • Introduction
  • Keynotes
  • 3 éditions pour Java
  • Java Community Process
  • Environnements de développement
  • Sécurité
  • Obfuscation
  • XML et Java
  • Jini
  • Java Grande Forum
  • Analyseurs de performances

  •  
  • Remerciements
  • L'auteur

  •  
    Jini

    Jini est une technologie basée sur Java destinée à faciliter l'interaction entre services matériels ou logiciels dans le contexte d'un réseau où ces services apparaissent et disparaissent spontanément, par opposition aux systèmes distribués actuels qui sont souvent très statiques.

    Jini fournit un cadre dans lequel, d'une part, les services peuvent faire connaître leur existence et les possibilités qu'ils offrent et, d'autre part, n'importe quel bout de logiciel peut rechercher un service implémentant un ensembre de fonctionnalités données et établir un "contrat" pour l'utilisation de ce service.

    Un service Jini peut être implémenté en matériel : une imprimante offre un service d'impression, un disque dur un service de stockage de données, mais aussi par logiciel: un traitement de texte peut être vu comme un service, un compilateur aussi, etc...

    Jini tire avantage de deux aspects-clés de la technologie Java: les interfaces et le chargement dynamique de code. La présence d'interfaces qui sont de vrais types dans le language Java permet une séparation étanche entre la spécification d'un service et son implémentation. C'est particulièrement important dans un contexte où les services sont découverts dynamiquement, sans connaissance préalable de leur existence et, a fortiori, des détails de leur implémentation. Le chargement dynamique de code concours au même but : ne pas avoir à connaître à l'avance le fournisseur du service. L'exemple-type est un service d'impression où le driver de l'imprimante est chargé dynamiquement dans le client quand le client découvre le service d'impression, au lieu d'avoir à installer le driver "à la main" comme c'est le cas actuellement, par exemple dans les réseaux de PC sous Windows.

    La bibliothèque Jini en elle-même n'est pas très grosse, il s'agit simplement d'une bibliothèque pour permettre aux services de se rencontrer et de collaborer. Pour reprendre l'analogie utilisée par Jim Waldo, l'un des père de Jini, Jini permet la création d'une fédération de services, et comme dans le système politique fédéral américain, l'objectif est de conserver un gouvernement central aussi petit que possible.

    Le code-source de Jini est disponible gratuitement au travers de la licence SCSL (Sun Community Source License). Il y a déjà eu plus de 14000 downloads.Un des aspects les plus importants de Jini est paradoxalement un des moins techniques : pour que la technologie prenne, il faut que les différentes entreprises fournissant des implémentations d'un service donné s'entendent pour adopter une interface commune, libre à chacune d'entre-elle d'offrir des services supplémentaires en enrichissant cet interface de base. C'est le but du forum ouvert Jini, qui marche sur le même modèle que les discussions ouvertes pour les nouvelles API Java. Le point d'entrée pour la communauté Jini est ici.

    Un certain nombre de vendeurs de matériel présentaient des versions de leurs produits qui parlent Jini. Epson, par exemple,présentait une imprimante qui sait annoncer sa présence sur le réseau et établir un contrat de fourniture de service avec toute partie parlant le protocole Jini. La société Mirror Worlds présentait un système de stockage de données accessible à travers Jini.

    Les gens de Jini chez Sun avaient mis au point une démonstration assez originale à base de Palm Pilots et de briques Lego Mindstorms ou deux joueurs munis de leur Palm Pilot pouvaient controller chacun un tank construit en Lego et muni d'un pointeur laser afin de détruire l'autre tank. Rien de techniquement transcendant, mais on notera que, comme pour beaucoup d'autres matériels parlant Jini, il est fait usage d'un "proxy Jini" convertissant un protocole propriétaire (ici, le protocole de communication des briques Lego Mindstorm) en un service Jini. Le discours de Sun incite, évidemment, les fabricants de matériel à intégrer une machine virtuelle au coeur de leur produits, mais il est pas du tout sûr que l'industrie va suivre cette voie.

    La maison d'édition Addison-Wesley, connue pour éditer la collection de livres de référence sur Java Java Series, a lancé la collection Jini Technology Series qui comporte déjà deux titres, l'un sur les spécifications de Jini (d'excellente qualité) et l'autre sur JavaSpaces (que je n'ai pas encore lu).

    Un argument très intéressant à propos de Jini est lié aux problèmes de qualité du logiciel. On a maintenant suffisamment de recul pour savoir que les très gros projets informatiques (ceux qui dépassent les dix millions de lignes de code) ne sont plus maîtrisables au-delà d'un certain degré de complexité. Windows NT ou Solaris ne seront vraisemblablement jamais complètement débuggés, et si Linux à l'air meilleur c'est en partie parce qu'il comporte environ 5 fois moins de code que Solaris, par exemple. Avec Jini, un projet informatique peut être structuré en services, ce qui n'est guère que de la bonne vieille programmation modulaire, mais surtout l'interconnection de ces modules n'est pas décidée lors de la conception du système mais à l'exécution, ce qui devrait améliorer la résistance aux pannes et faciliter la croissance des applications.

    Comme avec toute nouvelle technologie, il convient de ne pas vouloir l'appliquer à tout et n'importe quoi, mais cependant je pense que la technologie Jini a un bel avenir devant elle et qu'elle s'inscrit très bien dans l'évolution des systèmes informatiques de plus en plus connectés, dynamiques et ouverts. Pour en savoir plus sur la "vision" Jini, on peut lire le texte de la keynote de Bill Joy.

  • Introduction
  • Keynotes
  • 3 éditions pour Java
  • Java Community Process
  • Environnements de développement
  • Sécurité
  • Obfuscation
  • XML et Java
  • Jini
  • Java Grande Forum
  • Analyseurs de performances

  •  
  • Remerciements
  • L'auteur

  •  
    Java Grande Forum

    Il a été fait mention à plusieurs reprises du Java Grande Forum dans plusieurs keynotes, notamment par Alan Baratz et Bill Joy. Comme votre serviteur se trouve être un membre actif de ce forum (j'étais en fait à JavaOne pour présenter une démo sur le stand Java Grande de l'exposition), je vais me faire un plaisir de résumer nos activités.

    Le Java Grande Forum est un lieu de rencontre pour les membres de la communauté du calcul de hautes performances intéressé par l'utilisation de Java dans ce domaine. Le nom "Grande" a été choisi pour représenter non seulement le calcul de hautes performances mais aussi toutes les applications gourmandes, que ce soit en termes de CPU, mémoire ou entrées/sorties.

    Le forum est ouvert à tous et travaille principalement par courrier électronique. Ses membres sont pour la plupart des industriels (IBM, Sun, Intel,..) et des universitaires. Le grand happening annuel est la Java Grande Conference, depuis cette année sponsorisée par l'ACM. Le but du forum est d'émettre des recommendations vers Sun pour des améliorations ou des modifications à apporter à Java afin de mieux supporter cette classe d'applications. En particulier, notre groupe de travail numerics a émis une proposition afin d'améliorer le calcul en virgule flottante qui va très certainement être acceptée et intégrée aux futures versions de Java. Nous travaillons aussi sur l'amélioration des performances des mécanismes de communication entre machines virtuelles comme RMI, notoirement lent, et sur le support de couches de communication autres que TCP/IP, par exemple Myrinet ou MPI. A cet égard, le travail réalisé à l'université de Karlsruhe en Allemagne sur l'amélioration des performances de RMI et de la sérialisation est exemplaire.

    Nous avons aussi développé une série de benchmarks destinés à tester les performances des différentes implémentations de Java pour le calcul numérique, les communications et la gestion de la mémoire. Nous avons ainsi constaté une amélioration spectaculaire des performances de Java ces dernières années. Nous sommes maintenant assez proche des performances de FORTRAN ou C/C++ (moins de deux fois plus lent sur la plupart des tests), et nous avons grand espoir que les futures versions de la  machine virtuelle Hotspot, aidée par les améliorations de Java que nous suggérons, permettra de rattraper et même de dépasser dans certains cas les performances des plateformes traditionnelles. Notre projet à l'INRIA a développé plusieurs applications de test, notamment C3D, un ray-tracer distribué et DIVA, un monde virtuel collaboratif et interactif entièrement écrit en Java. Ces deux applications s'appuient sur la bibliothèque ProActive, basée sur RMI.

    Le forum mène une partie de ses activités en Europe, détaillées ici. Pour plus d'informations sur le Java Grande Forum, jetez un oeil à la page web ou mailez-moi.

  • Introduction
  • Keynotes
  • 3 éditions pour Java
  • Java Community Process
  • Environnements de développement
  • Sécurité
  • Obfuscation
  • XML et Java
  • Jini
  • Java Grande Forum
  • Analyseurs de performances

  •  
  • Remerciements
  • L'auteur
  • Les analyseurs de performances

    Les performances de Java, même si elles s'améliorent de jour en jour, nécessitent souvent l'utilisation d'analyseurs de performances afin de détecter quelles sont les parties d'une application responsables du fait "que ça rame". Ces outils présentent souvent plusieurs vues de l'éxécution d'un programme: temps passé dans chacune des méthodes, nombre d'instances créées pour chacune des classes ou graphe de référence des objets qui bloquent le ramassage (garbage-collection) des objets.

    Les deux outils que je connais bien sont Optimize It! d'Intuitive Systems et JProbe de KL Group. Tous les deux sont supportés sous Windows et Solaris, mais Optimize It! est le seul a tourner aussi sous Linux. Tous les deux ont un outil d'analyse du temps passé à exécuter le code à peu près similaires, même chose pour l'analyseur d'allocation des objets. JProbe semble meilleur dans l'affichage des graphes d'objets (qui sont de vrais graphes que l'on peut manipuler à la souris, contrairement à Optimize It! qui utilise un arbre). Petit détail technique : Optimize It! suppose que le garbage-collector (ou Glaneur de Cellules en français) sait éliminer les cycles non-connexes du graphe d'objets, et donc ne les représente pas.

    JProbe est le seul des deux qui permet d'analyser les threads et les verrous qu'elles possèdent sur des objets, ce qui en fait un outil très puissant quand on sait comme il est facile en Java de s'emmeler les pinceaux avec les threads.

    A ma connaissance, Optimize It! est le seul de ces deux outils qui puisse être intégré à des environnements de développement comme Visual Café ou JBuilder.

    Un autre aspect de l'amélioration de performances consiste à écrire du bon code, et à cet égard vous pouvez lire le papier Practical Guideline for Boosting Java Server Performance présenté par Reinhard Klemm à la Java Grande Conference, juste avant JavaOne. C'est un bon recueil de "trucs et astuces" pour améliorer les performances du code Java côté serveur.
     

      Remerciements

    Merci à François Pennaneac'h et Eric Noulard pour leurs excellentes remarques et suggestions.
     

      L'auteur

    Diplômé de Supélec, je prépare actuellement une thèse de doctorat en informatique à l'INRIA Sophia-Antipolis au sein du projet OASIS sous la direction de Denis Caromel. Je m'intéresse aux systèmes d'objets distribués et mobiles et aux systèmes d'agents, en particulier sous l'aspect de la sécurité. J'ai conçu et développé ProActive, une librairie Java pour la programmation de tels systèmes dans le cadre d'un modèle à objets actifs. Vous trouverez plus d'infos sur ma page web. Vous pouvez me joindre par mail à cette adresse: Julien.Vayssiere@sophia.inria.fr


    This page is maintained by Julien Vayssière. Please direct all remarks or enquiries to Julien.Vayssiere@sophia.inria.fr.