par Jakub Zimmermann (zimmerma@ie2.u-psud.fr)
Java est un langage de programmation objet proche du C++ déveoppé par SunSoft, la division logiciels de Sun Microsystems. C'est un langage général, convenant (en principe) à tout type d'application. Sa principale caractéristique est le fait qu'un programme compilé en Java peut marcher tel quel sur tous les processeurs et systèmes d'exploitation. Comment est-ce possible? Grâce au Bytecode: le compilateur Java n'engendre pas du code natif x86, Sparc ou autre PowerPC, mais du Bytecode, qui est ensuite exécuté par un interpréteur, appelé machine virtuelle quand on veut faire cyber.
Il est toutefois évident que cela se fait au détriment des performances: voilà pourquoi le "en principe". Car le Java est lent. Sa vitesse d'exécution peut être un dixième de celle du code produit par un bon compilateur C. On ne verra donc pas Java dans l'imagerie, la CAO ou les applications scientifiques. Cette situation est toutefois en train de changer puisque Sun est sur le point d'introduire une nouvelle famille de processeurs, Picojava, dont le langage machine natif est justement le Bytecode. Une autre technique commence à être utilisée le JIT, complateur Just In Time. Ce dernier convertit au vol le Bytecode en code natif. Au final, ça fait la même chose que la machine virtuelle... en beaucoup plus rapide.
Mais, à part ces cas particuliers, c'est au contraire une solution de choix dans de nombreux domaines. La relative simplicité du langage, l'abstraction totale par rapport au système d'exploitation et surtout la perspective de développer UNE version du logiciel qui marche ensuite partout suscite un réel enthousiasme aussi bien chez les firmes commerciales que chez les passionnés. Corel et SunSoft développent actuellement des suites de bureautique en Java, les constructeurs de PDA attendent Picojava avec impatience (tiens, c'est aussi la cible de windoze CE, qu'est ce qu'on rigole!) et la norme Network Computer d'Oracle et consorts n'impose aucun environnement aux stations... sauf Java.
Mais ce ne sont pas toutes les raisons expliquant le décollage foudroyant de Java. Il y a encore autre chose: Java permet d'écrire des applications classiques mais aussi des applets, de petits composants indépendants, réutilisables, circulant sur le réseau et pouvant être encapsulés dans des pages Web. Grâce à eux, le browser Web devient interface universelle capable d'exploiter des logiciels dans un environnement distribué.
On a vu que Java est un langage de programmation permettant de créer des logiciels portables. Cela en fait le langage royal pour plusieurs types d'application.
Etant donné que le langage intègre tout ce qu'il faut pour communiquer en réseau et réaliser des opérations telles que l'affichage ou la reproduction sonore sans être obligé de passer par des API externes, il est idéal pour la création de présentations multimédia. La vitesse d'exécution importe peu et la réduction des temps de développement et la portabilité (le même logiciel marche sur Unix, Windows, Mac et OS/2) sont au contraire un avantage important.
Autre terrain de prédilection: le cient/serveur et le groupware (qui, contrairement à ce que l'on dit, n'est pas sur le point d'être remplacé par l'Intranet). Prenez un puissant SGBD tournant sous Unix ou AS/400. Il sera implémenté en C++, car la vitesse de traitement est très importante. Mais tous les cients, c'est à dire les interfaces graphiques, les outils de maintenance et les application accédant à cette base de données pourront être écrites en Java. Derrière les bornes d'information et autres distributeurs de cachent trop souvent des PC sous Windows ou OS/2 pour la simple raison que les logiciels requis tournent sous ces systèmes. Pourtant, c'est le terrain idéal pour des processeurs simples, bon marché et efficaces, comme Picojava ou les puces ARM.
La bureautique est également un domaine "chaud". Dans les prochains mois, on verra arriver des suites compètes écrites en Java. Elles s'utiliseront exactement comme tout autre logiciel de bureautique, sauf que vous vous le procurerez sans vous pouser la question de savoir si c'est compatible avec le processeur X tournant sous le système Y version Z. Mais, avec le Network Computer, un autre concept est en train d'émerger: vous payerez un droit d'utilisation et en échange, vous pourrez vous connecter avec votre NC ou simplement votre browser Web sur le site dont les pages Web contiendront des applets "traietment de texte", "tableur" etc... Vos documents ne seront pas stockés en local sur votre disque dur (en fait, vous n'aurez plus besoin de disque dur) mais sur le serveur, dans un système sécurisé à tolérance aux pannes. On peut même imaginer un système de tarification horaire: vous vous branchez, vous faites ce dont vous avez besoin et à la fin du mois, vous recevez une facture, comme pour le téléphone.
On ne verra probablement jamais Java dans les consoles de jeu. Pourtant, du point de vue technique, ce serait une excellente solution: dans ces machines, tous les algorithmes crituques sont câblés et le processeur central fait plutôt office de contrôleur. Une puce Picojava pourrait donc très bien faire l'affaire, cela permettrait d'aller vers un standard en matière de jeux vidéo. Malheureusement, les Sony, Sega et compagnie veulent tout sauf ça!
EditDraw: un logiciel de dessin vectoriel sous forme d'applet Java
A l'Oracle Expo du 10 et 11 décembre, j'entendis dire lors d'une démonstration qu'OS/2 Warp 4 est le premier à supporter Java directement au sein du système d'exploitation. Faux, Linux le fait depuis plusieurs mois!
Pour faire du Java sous Linux, il faut avant tout installer une machine virtuele ou un JIT. Reportez-vous à la page des contribs pour installer JDK 1.0.2 qui contient justement une machine virtuelle. Une fois cette opération effectuée, vous pouvez essayer le fameux "helloworld". Voici l'exemple donné dans la doc de Linux:
class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}
Tapez ce programme, sauvez le dans le fichier HelloWorld.java puis compilez-le par javac HelloWorld.java. Vous obtenez un fichier HelloWorld.Class, qui est l'exécutable en Bytecode de votre programme. Pour le lancer, tapez "java HalloWorld.Class" et vous le verrez s'exécuter.
Mais, me direz-vous, ce n'est pas très élégant. Il faut appeler explicitement l'interpréteur, où est l'intégration totale promise, comme sous OS/2? Eh bien, pour que le miracle se produise, vous devez compiler un kernel en activant "kernel support for Java binaries", ou, mieux, compiler seulement ce module et utiliser kerneld. Maintenant, si vous faites chmod +x HelloWorld.Class (pour le déclarer exécutable), il va se comporter comme tous les programmes normaux et vous pourrez le lancer comme tout autre programme.
Et les applets? Normalement, in faut utiliser un browser Web pour les faire marcher, mais vous pouvez également passer par l'Appletviewer. Regardez les exemples sous /usr/lib/java/demo pour voir comment l'utiliser.
Vous ne pourrez pleinement profiter des applets Java que si vous avez un browser Web qui les supporte. Netscape est le seul browser Java-compatible officiellement disponible sous Linux, mais, malgré ses nombreuses qualités, il ne fournit qu'une solution problématique. Premièrement, il est commercial, deuxièmement, il exécute les applets avec sa propre machine virtuelle intégrée en dur, qui n'est pas un monstre de performance et encore moins de stabilité. Aussi, pour les besoins purement Java, il est bon de possèder également un deuxième browser: Hotjava de Sunsoft.
Ce dernier n'existe théoriquement que sous NT et Solaris, mais comme il est écrit en Java, on va pouvoir s'en servir, non mais sans blague! Voici ce qu'il faut faire: téléchargez Hotjava pour Solaris depuis http://www.javasoft.com et installez-le en suivant la doc, puis récupérez sur http://www.blackdown.org un scrit de lancement qui remplace celui fourni avec la version Solaris. Si, si, ça marche!
Hotjava, soi-disant pour Sparc/Solaris, en train de tourner sur mon 6x86 sous Linux
Avec tout ça et une carte réseau, vous avez en principe tout ce qu'il faut pour être validé "Network Computer". Allez, quoi, rien que pour le plaisir d'avoir officiellement une machine qui fout (tout aussi officiellement) les boules à Facture Portillon.