HOWTO Java pour Linux maintenu par Eric S. Raymond (esr@snark.thyrsus.com) Adaptation francaise par Arnaud Ruch (ruch@donald.fdn.fr) v.2.2, 10 Fev 1996 Ce document decrit de facon succinte la mise en place et l'utilisation de Java et HotJava sous Linux. Il s'adresse aussi bien aux utilisa- teurs qu'aux programmeurs. 11.. IInnttrroodduuccttiioonn Ce document est une introduction Linux-centrique aux mondes de Java et HotJava. Ces technologies connaissant une evolution rapide, toute contribution est la bienvenue. Certaines parties de ce document demandent serieusement a etre verifiees ou completees [cf. ``A ajouter...'']. Pour aider a l'amelioration de ce HOWTO, envoyez toute demande de mise a jour et de modification a esr@snark.thyrsus.com. 22.. QQuueessttiioonnss dd''oorrddrree ggeenneerraall ssuurr JJaavvaa eett HHoottJJaavvaa Cette partie est une introduction generale (non specifique a Linux) a Java et HotJava. 22..11.. QQuuee ssoonntt JJaavvaa eett HHoottJJaavvaa ?? EEnn qquuooii ssoonntt--iillss iinntteerreessssaannttss ?? Java est un langage oriente reseau. Similaire au C++, il est plus compact et a ete concu plus proprement. Il met en oeuvre une gestion memoire semblable a celle du Lisp (ramasse-miettes), mais dispose en plus d'une verification statique des types, raison pour laquelle il est parfois decrit avec ironie comme un "Smalltalk dote d'une syntaxe coherente". Les processus legers (threads) y sont integres et il dispose de nombreuses possibilites en termes de securite reseau. Jusqu'a present, la principale application realisee grace a Java est le navigateur WWW HotJava, mais l'avenir de Java comme langage de developpement d'applications de tous types semble prometteur. HotJava est un navigateur WWW ecrit en Java. Son principal avantage sur ses concurrents est de pouvoir traiter une nouvelle construction HTML appelee "APPLET". Une applet est un programme Java qui s'execute sur la machine cliente. Les documents WWW peuvent par consequent contenir des objets "vivants" et non plus de simples donnees. La possibilite de transferer des objets executables represente le progres le plus significatif de la technologie du World Wide Web depuis l'apparition de Mosaic. L'application la plus immediate en est de pouvoir concevoir un navigateur Web qui ne necessite plus d'incessantes mises a jour pour etre capable de traiter les nouveaux formats d'images et les nouvelles constructions. Un programme Java est transforme par compilation en un pseudo-code appele "J-code" que l'interpreteur Java a pour role d'executer. Il se pourrait bien que le J-code soit en passe de devenir une reference universelle en matiere de code independant s'executant sur une machine virtuelle, ou encore comme langage de compilation intermediaire. Des rumeurs courent a propos de l'existence d'un compilateur ADA-95 generant du J-code et sur le developpement d'un tel compilateur pour le langage C. Il est probable qu'en fin de compte, de nombreux langages de haut niveau permettront d'ecrire des applets ou des programmes complets sur toute machine disposant d'un interpreteur Java. On peut aussi signaler l'apparition de microprocesseurs Java dont le jeu d'instruction est le J-code. 22..22.. DD''oouu vviieennnneenntt JJaavvaa eett HHoottJJaavvaa ?? QQuuii aa llee ddrrooiitt ddee lleess uuttiilliisseerr ?? Java et HotJava ont ete developpes chez Sun Microsystems, par une equipe conduite par James Gosling (deja largement connu pour Gosling Emacs et NeWS). La derniere tentative menee par Sun pour imposer un standard technique majeur a ete NeWS, son systeme de fenetrage reseau (Network Window System). Bien que la superiorite de NeWS sur X ait ete reconnue presque unanimement, X a gagne la bataille pour la simple raison que les sources en etaient gratuitement disponibles. Cet echec a ete formateur pour Sun : Java et HotJava sont aisement accessibles, les fichiers source peuvent etre telecharges selon les termes d'une licence relativement souple [cf. ``Java, logiciel librement diffusable''] et Sun encourage les portages vers des environnements autres que Sun. Netscape est deja capable d'interpreter du Java. Microsoft a acquis la licence de la technologie en Decembre 1995. Il semble donc que le support de Java soit en passe de devenir universel en 1996. A l'origine, Java s'appelait Oak. HotJava fut quant a lui denomme WebRunner. 22..33.. QQuueellllee eesstt llaa mmaattuurriittee ddee JJaavvaa ?? Le 12 Decembre 1995, Sun mettait a disposition du public la version 'Beta 2' de Java. Un mois plus tard venait le tour de la version 1.0, premiere version dite de "production". L'API (Application Programmers Interface) de l'environnement Java, qui definit son acces au systeme d'exploitation et au systeme de fenetrage de la machine hote, semble avoir ete "gelee" : elle pourra etre etendue, mais ne sera pas rendue incompatible avec la version actuelle. La version 1.0 de ce document a ete rendue publique en meme temps que la version beta 1.0 du kit de developpement Java (JDK) pour Linux, dont le portage a ete realise par Randy Chapman. C'est un fait connu que de serieux trous de securite existent dans l'implementation de Java. Ce n'est donc pour l'instant pas une tres bonne idee que d'utiliser Java pour des applications sensibles. Ces problemes seront certainement resolus dans les versions de production (post-beta). 22..44.. OOuu ppeeuutt--oonn ttrroouuvveerr ddee llaa ddooccuummeennttaattiioonn ssuurr JJaavvaa eett HHoottJJaavvaa ?? Sun tient a jour un serveur Web complet proposant des documents sur Java et HotJava a l'adresse : http://java.sun.com. Des copies de ces documents se trouvent en d'autres endroits, tels que http://java.blackdown.com (Sun fournit une liste de sites miroirs). 22..55.. CCeerrtteess,, mmaaiiss oouu ttrroouuvveerr uunnee ddooccuummeennttaattiioonn ppaappiieerr ?? La serie officielle des manuels Java de SunSoft Press est en cours de production chez Addison-Wesley. On peut trouver quelques details sur ces ouvrages dans comp.lang.java FAQ Certains des pionniers de Java ont recommande l'ouvrage "Hooked on Java", ecrit par les membres de l'equipe de developpement de Java. L'un des commentaires qui ont ete faits sur ce livre est : "Bien ecrit, mais j'aurais apprecie quelque chose de moins basique". O'Reilly & Associates travaille actuellement sur sa propre serie d'ouvrages traitant de Java, en collaboration avec Sun. On trouvera (au moins) un "Nutshell Guide to Java", un manuel de reference du langage, un manuel de reference des bibliotheques de classes et un ouvrage traitant de la machine virtuelle sous-jacente a Java (celle qui execute le J-code). Information tout a fait non confidentielle : l'auteur de ce HOWTO a ete prie par O'Reilly & Associates de servir de principal relecteur technique de ces ouvrages et il est remunere pour ce travail. SamsNet a publie un livre intitule "Learning Java in 21 Days". Aucun commentaire n'en a ete fait pour l'instant. Un des contributeurs de ce document a trouve dans des librairies proches de chez lui trois ouvrages deja publies : +o L'un, appele "Java in 60 minutes" semble n'etre qu'une simple description syntaxique du langage (environ $20) ; +o Le second, publie par SamsNet, s'appelle tout simplement "Java" (environ $20) ; +o Le troisieme, ecrit par Tim Ritchey, est intitule "Java!". Un CD- ROM est fourni avec (environ $35). Notre informateur poursuit : "J'ai achete le troisieme (ecrit par Tim Ritchey). Les delais d'impressions etant ce qu'ils sont, le CD-ROM ne contient que des versions alpha, bien qu'il signale que la version beta est probablement disponible au moment de la publication, et que les informations les plus a jour se trouvent sur java.sun.com. Cela mis a part, c'est un bon ouvrage et il juge meme necessaire de signaler qu'il est inutile de s'embarrasser de centaines de pages de description de l'API parce que : cela quadruplerait la taille du livre, l'API est encore en evolution, et ces informations se trouvent on-line..." Dave Dittrich indique : "Je dirais que "Java in 60 minutes" peut certes etre lu en 60 minutes, mais qu'il ne vous apprendra certainement pas en 60 minutes comment programmer en Java (surprise, surprise !). J'ai l'impression que "Java in 60 minutes" est l'une de ces nombreuses tentatives de publication d'un ouvrage sur un sujet a la pointe de l'actualite. On n'y trouve apparemment pas grand'chose de plus que ce qui est disponible sur le Web et une grande quantite de texte donne l'impression d'avoir ete reproduite telle quelle a partir du document "Java Language Specification" http://java.sun.com/JDK- beta2/psfiles/javaspec.ps." Dave poursuit : "Il en va de meme avec "Java!", mais ce dernier detaille beaucoup plus les concepts de la programmation orientee objet. Quelqu'un m'a signale un autre ouvrage qui traite assez bien de l'abstraction donnees/methodes et des autres concepts de la programmation orientee objet. Il s'agit de "Structure and Interpretation of Computer Programs", par Abelson, Sussman et Sussman (MIT Press)." Derniere mise en garde : a l'heure actuelle (Janvier 1996), c'est probablement une bonne idee que d'eviter le livre de Ritchey ou tout ce qui peut etre base sur l'API alpha. L'API beta est substantiellement differente et Java 1.0, qui devrait bientot etre disponible, aura encore ses propres differences. 22..66.. OOuu ppeeuutt--oonn ttrroouuvveerr ddeess ccoolllleeccttiioonnss ddee ccooddee JJaavvaa ddiissppoonniibblleess oonn--lliinnee ?? On trouve des archives d'applets sur le WWW, aux adresses suivantes : +o http://java.sun.com/ ; +o http://www.applets.com/ ; +o http://www.gamelan.com/ ; +o http://www.javasoft.com/applets/applets.html. La plupart des applets presentees sur ces pages sont accompagnees de leur code source et les programmeurs sont encourages a les utiliser. Des pointeurs vers d'autres ressources peuvent etre trouves dans le comp.lang.java FAQ. 33.. JJaavvaa,, llooggiicciieell lliibbrreemmeenntt ddiiffffuussaabbllee ((FFrreeeellyy RReeddiissttrriibbuuttaabbllee SSoofftt-- wwaarree)) Nombreux sont les programmeurs Linux qui tiennent a ce que les logiciels qu'ils produisent soient librement diffusables et qui evitent de consacrer trop de temps aux outils dont les sources ne sont pas largement disponibles. Dans cette partie sont discutees les relations de Sun et de Java avec le monde du logiciel librement diffusable. (Attention : l'auteur n'est pas juriste. Il n'est pas non plus employe, agent ni actionnaire de Sun Microsystems. Cette partie est fondee sur son interpretation des lois actuelles sur le copyright et sur la licence de Sun. Considerez-la comme une simple introduction, la page de Sun http://www.blackdown.org/Java/licensing.html etant la seule autorite en la matiere. Si vous avez du mal a en saisir la signification, consultez un avocat.) 33..11.. PPeeuutt--oonn rreeddiissttrriibbuueerr lliibbrreemmeenntt ddeess pprrooggrraammmmeess eeccrriittss eenn JJaavvaa ?? Tout a fait, si vous en etes l'auteur et choisissez de les placer sous une licence de type GPL ou BSD, ou encore si vous les declarez du domaine public. 33..22.. QQuueelllleess ssoonntt lleess ddrrooiittss eett oobblliiggaattiioonnss aassssoocciieess aauuxx eexxeeccuuttaabblleess ddee JJaavvaa ?? La page de Sun concernant la licence indique que les executables de Java et HotJava peuvent etre redistribues dans des applications (commerciales ou non), a condition qu'ils le soient gratuitement et sans etre modifies. Les entreprises ou individus qui souhaitent effectuer un nouveau portage du langage Java peuvent mettre les executables de ce portage a disposition sur l'Internet, mais ceux-ci doivent etre gratuits et passer avec succes les tests publiquement disponibles (ces tests devraient etre disponibles a la mi-1996). Les fichiers "diff" peuvent egalement etre diffuses, a condition que les sources auxquels ils s'appliquent ne le soient pas. Ainsi, vous pouvez donner a vos amis les executables de Java et HotJava ou bien les mettre sur un CD-ROM, ou encore en faire ce que vous voudrez, sauf les modifier et en diffuser les versions modifiees comme etant Java (ceci est comprehensible, Sun doit se proteger contre les chevaux de Troie diffuses sous le deguisement de Java). Les executables peuvent etre redistribues librement. 33..33.. QQuueelllleess ppaarrttiieess ddeess ssoouurrcceess ddee JJaavvaa ppeeuutt--oonn rreeddiissttrriibbuueerr lliibbrreemmeenntt ?? Selon la page de Sun, aucune. Cependant, les choses sont en realite moins strictes que cela. En pratique, tout le monde peut obtenir les sources de Java et HotJava a des fins non commerciales, d'enseignement ou de portage, et ce en remplissant sur le Web un formulaire qui en interdit la redistribution. De plus, il est permis de redistribuer des fichiers "diff" a appliquer aux sources. Le seul cas ou il faut signer un accord commercial avec Sun et leur verser de l'argent est celui de l'utilisation des sources a des fins commerciales. Cependant, il est dans l'esprit de cet accord de signer la licence d'utilisation non-commerciale des sources, de les recuperer, de les porter et de distribuer totalement librement les executables resultants ! Sun affirme que le but principal d'un tel controle est d'empecher le langage de muter vers des dialectes incompatibles. C'est ce vers quoi tend la licence. Elle semble cependant avoir ete concue de facon a permettre aux hackers de s'amuser gratuitement. 33..44.. QQuueellllee eesstt ll''aattttiittuuddee ddee SSuunn vviiss--aa--vviiss ddeess iimmpplleemmeennttaattiioonnss eett oouuttiillss JJaavvaa ggrraattuuiittss ?? D'apres la page de licence de Sun : Les specifications du langage Java et de la machine virtuelle Java sont OUVERTES et sous copyright de Sun Microsystems, Inc. Les nouvelles implementations du compilateur et de l'inter- preteur Java sont autorisees sans avoir besoin de licence de Sun, du moment que de telles implementations sont creees a partir des specifications publiees et sans utilisation directe ou indirecte d'implementations, de proprietes intel- lectuelles ou marques commerciales de Sun. (NdT la traduction ci-dessus n'engage ni Sun ni l'auteur de ce docu- ment) Ainsi, si vous voulez vous lancer dans la creation d'un clone gratuit de Java a partir des specifications publiees, Sun ne fera rien pour vous en empecher. Les gens de Sun utilisent le terme de "portage sauvage" pour designer les implementations de Java qui sont realisees ailleurs que chez Sun ou ne s'appuient pas sur du code dont Sun detient la licence. Parfois le terme semble avoir l'une de ces significations, parfois l'autre. Ils ont l'air de penser que de telles implementations existent deja, mais nous ne savons pas ou l'on peut les trouver, ni si elles sont gratuites. Les gens de Sun semblent envisager cette situation avec serenite. Sun a mis au point un ensemble de logiciels de validation. Sun affirme que sera certifie tout portage Java qui passe ces tests avec succes. Cela sera-t-il gratuit ? Nous n'en savons rien, mais Sun affirme que ces logiciels seront "disponibles publiquement" en 1996, ce qui semble orienter vers la gratuite. Ils sont egalement prets a certifier des "portages sauvages" ce qui, apparemment, n'est pas encore arrive. 33..55.. PPeeuutt--oonn ttrroouuvveerr ddeess cclloonneess ddee JJaavvaa ddoonntt lleess ssoouurrcceess ssooiieenntt lliibbrreemmeenntt rreeddiissttrriibbuuaabblleess ?? On peut trouver un clone du compilateur Java en debut de developpement. Il s'appelle guavac et vous pourrez trouver des informations a son sujet a l'adresse http://http.cs.berkeley.edu/~engberg/guavac. Des rumeurs ont couru indiquant que le projet GROW de Cygnus Software prevoyait d'integrer un interpreteur de code objet Java. Elles etaient fausses : ce qui est en cours de developpement est un traducteur de Java vers Scheme qui ne passe pas par le J-code. Pour plus de details sur le projet GROW, consultez http://www.cygnus.com/tiemann/grow/. Erik Troan de Red Hat et l'auteur de ce document tentent de former un groupe de developpement pour mener a bien le reste du travail. Actuellement, l'idee est d'utiliser guavac comme compilateur, Erik Troan s'occupant de la bibliotheque de classes et l'auteur de ce HOWTO de l'interpreteur de J-code (si Cygnus n'y parvient pas auparavant). Ce projet devait etre nomme "Mr Coffee", ce qui etait tentant, mais s'appellera probablement JOE (Java Open to Everyone). 33..66.. PPeeuutt--oonn ttrroouuvveerr ddeess oouuttiillss JJaavvaa lliibbrreemmeenntt rreeddiissttrriibbuuaabblleess ?? Vous pourrez trouver un mode GNU Emacs pour l'edition de Java a l'adresse ftp://java.sun.com/pub/java/contrib/emacs. Note : ce mode requiert l'utilisation de c++-mode.el et ne fonctionne pas avec le mode cc-mode.el distribue avec Emacs 19. 44.. QQuueessttiioonnss ccoonncceerrnnaanntt JJaavvaa ssoouuss LLiinnuuxx Vous apprendrez ici les astuces de base permettant d'utiliser Java sous Linux. 44..11.. PPeeuutt--oonn ttrroouuvveerr JJaavvaa eett HHoottJJaavvaa ddaannss uunnee ddiissttrriibbuuttiioonn LLiinnuuxx ?? Pas pour l'instant, mais cela ne devrait etre qu'une question de semaines. 44..22.. OOuu ttrroouuvveerr llaa ddeerrnniieerree ddiissttrriibbuuttiioonn ddee JJaavvaa ppoouurr LLiinnuuxx ?? Jetez un coup d'oeil a ftp://java.blackdown.org/pub/Java/linux. Le dernier Java pour Linux peut y etre recupere. Il vaut mieux cependant commencer par lire ftp://java.blackdown.org/pub/Java/linux/README. Les fichiers dont vous aurez besoin sont : linux.jdk-1.0-try1.common.tar.gz et soit : linux.jdk-1.0-try3.static-motif-bin.tar.gz soit : linux.jdk-1.0-try3.shared-motif-bin.tar.gz, suivant la presence ou non des bibliotheques partagees Motif sur votre systeme. Si vous utilisez Red Hat Linux ou tout autre systeme connaissant RPM, vous pouvez installer la beta 1.0 a partir de : ftp://java.blackdown.org/pub/Linux/RPMS/i386/JDK-linux- common-1.0b-1.i386.rpm et ftp://java.blackdown.org/pub/Linux/RPMS/i386/JDK-linux- static-1.0b-1.i386.rpm ou ftp://java.blackdown.org/pub/Linux/RPMS/i386/JDK-linux- shared-1.0b-1.i386.rpm Pour les utilisateurs Europeens, le contenu de ftp://java.blackdown.org/pub/Java/linux et ftp://java.blackdown.org/pub/Linux/RPMS/i386/JDK-linux* est desormais replique en Grande-Bretagne a l'adresse : ftp://ftp.linux.org.uk/pub/linux/java. Si cela interesse quelqu'un, il s'agit de la machine zen.btc.uwe.ac.uk. Le miroir est reactualise tous les jours vers 6 heures du matin, heure locale. Ce portage (realise par Randy Chapman a partir des sources de Sun) est celui auquel il est fait reference partout ailleurs dans ce document sous le nom de JDK (Java Development Kit). 44..33.. QQuueell eesstt ll''eennvviirroonnnneemmeenntt rreeqquuiiss ppoouurr eexxeeccuutteerr JJaavvaa ?? Pour commencer, il faut un systeme Linux ELF. Aucun support a.out n'est disponible et, vue la vitesse a laquelle le monde Linux passe a ELF, il est peu probable qu'il y en ait jamais un. Il vous faut un noyau 1.2.13 ou plus recent. Il semble y avoir un bug dans la fonction getcwd(3) des noyaux anterieurs, ce qui est fatal a bin/javac qui n'en verifie pas le code de retour. Ces bibliotheques sont egalement necessaires : lliibbcc..ssoo..55 ==>> //lliibb//lliibbcc..ssoo..55..22..1188 (La bibliotheque C standard) lliibbXX1111..ssoo..66 ==>> //uussrr//XX1111//lliibb//lliibbXX1111..ssoo..66..00 (La bibliotheque de base de X11R6) lliibbXXtt..ssoo..66 ==>> //uussrr//XX1111//lliibb//lliibbXXtt..ssoo..66..00 (La bibliotheque de la boite a outils Athena) lliibbXXeexxtt..ssoo..66 ==>> //uussrr//XX1111//lliibb//lliibbXXeexxtt..ssoo..66..00 (La bibliotheque d'extensions X) lliibbXXppmm..ssoo..44 ==>> //uussrr//XX1111//lliibb//lliibbXXppmm..ssoo..44..33 (La bibliotheque X de gestion des pixmaps) lliibbddll..ssoo..11 ==>> //lliibb//lliibbddll..ssoo..11..77..99 (Le support du chargement dynamique de modules objet) Il n'est pas impossible que les bibliotheques de support du C et de X soient deja installees sur votre systeme. Si vous ne l'avez pas deja, recuperez libc.5.2.18.bin.tar.gz sur ftp://tsx-11.mit.edu/pub/linux/packages/GCC/. Decompressez et detarez-le, puis copiez dans /lib les fichiers contenus dans le repertoire lib cree. Si vous n'avez pas une version recente de ld.so (ou libdl.so.1.7.*), il vous faut la mettre a jour. ld.so.1.7.9 et ld.so.1.7.11 fonctionnent, mais pas les versions plus anciennes ni ld.so.1.7.10. Recuperez ld-so.1.7.14.tar.gz sur ftp://ftp.ods.com/linux/. Decompressez-le et detarez-le, puis lancez _i_n_s_t_l_d_s_o_._s_h qui se trouve a la racine de l'arborescence ainsi creee. Vous trouverez une bibliotheque Xpm adequate sur ftp://sunsite.unc.edu/pub/Linux/libs/X/libXpm.3.4f-ELF.tar.gz. 44..44.. AAii--jjee bbeessooiinn ddee NNeettssccaappee ?? PPuuiiss--jjee ll''uuttiilliisseerr ?? Netscape est indispensable, car HotJava n'est pas encore disponible pour les versions beta 1.0. Selon Randy Chapman, Sun a fortement modifie l'interface awt dans le JDK et Hot- Java n'a pas encore ete adapte. Sun a promis de le faire et la nouvelle version de HotJava devrait fonctionner parfaite- ment avec linux-jdk. Aucune date n'a ete annoncee. Netscape supporte Java depuis la version 2.0b3. On le trouve sur ftp[1-7].netscape.com (i.e. sur ftp1.netscape.com, ftp2.netscape.com,... etc.). La version 2.0b4 permet de lire des applets depuis les URL de type file:, ce que ne permettait pas la version 2.0b3. Ceci devrait etre d'un grand secours pour ceux qui ne disposent que de peu de memoire (il n'est plus necessaire de faire tourner un demon httpd). La version actuelle est la 2.0b6. Le fichier a recuperer est : /2.0beta6/unix/netscape-v20b6a- export.i486-unknown-linux.tar.Z. Notez que Netscape tourne aussi sur des systemes a.out. Il est donc possible, en theorie, d'ecrire une application Java, de la faire compiler par quelqu'un d'autre (comme par exemple BlackStar Public Compiler), et d'en voir le resultat sur votre systeme. Si cela ne vous suffit pas, passez en ELF. Assurez-vous que la variable d'environnement CLASSPATH ne soit _p_a_s positionnee lorsque vous lancez netscape : cela a tendance a provoquer des plantages de celui-ci. Si vous suivez ces conseils, vous ne devriez pas avoir trop de problemes. La version Linux de netscape a quelques problemes connus. D'une part, il n'y a pas de son. D'autre part, seul l'affichage en 8 bits fonctionne : l'affichage en 16 bits provoque des plantages. La version 2.0b3 est parfois sujette a des 'bus errors' lorsqu'elle fait appel a la fonction 'dispose' des frames. Bien que relativement robuste (cela mis a part), elle ne resiste pas a l'applet 'Impressionism' de Gamelan. 44..55.. QQuueellss ssoonntt lleess nneewwssggrroouuppss eett mmaaiilliinngg lliissttss ttrraaiittaanntt ddee JJaavvaa ssuurr LLiinnuuxx ?? +o _j_a_v_a_-_l_i_n_u_x : (maintenue by karl@blackdown.org) Discussions et developpements concernant le portage de Java sur le systeme d'exploitation Linux. Envoyez un mail a java-linux- request@java.blackdown.org avec le mot "subscribe" pour etre ajoute a la liste ; +o _j_a_v_a_-_l_i_n_u_x_-_a_n_n_o_u_n_c_e : (maintenue by karl@blackdown.org) Liste moderee des annonces concernant les projets de portage Java-Linux. Envoyez un mail a java-linux-announce-request@java.blackdown.org avec le mot "subscribe" pour etre ajoute a la liste ; +o comp.lang.java : Newsgroup traitant de Java en general ; +o alt.www.hotjava : Newsgroup traitant du navigateur HotJava. 55.. MMiissee eenn ppllaaccee ddee JJaavvaa ssuurr lleess pprriinncciippaalleess ddiissttrriibbuuttiioonnss LLiinnuuxx dduu mmaarrcchhee Dans cette partie, nous rassemblons les recettes que nous avons recues concernant la mise en place du portage de Java par Randy Chapman sur les principales distributions de Linux. 55..11.. DDiissttrriibbuuttiioonn SSllaacckkwwaarree EELLFF nnooyyaauu 11..22..1133.. John Franks (john@math.nwu.edu) indique que les etapes suivantes ont ete fructueuses : +o Recuperez linux-x86.jdk.static-motif.tar.gz sur ftp://www.blackdown.org/pub/Java/linux/, decompressez-le et detarez-le (les noms des fichiers a recuperer ont change pour le JDK beta 1.0) ; +o Recuperez libc.5.2.18.bin.tar.gz (la distribution compilee, pas les sources) sur ftp://tsx-11.mit.edu/pub/linux/packages/GCC/. Decompressez-le et detarez-le, puis copiez dans le repertoire /lib les fichiers presents dans le sous-repertoire lib de la racine de l'arborescence creee. Assurez-vous que /lib/libc.so.5 soit un lien symbolique vers ce fichier ; +o Recuperez ld-so.1.7.14.tar.gz sur ftp://ftp.ods.com/linux/. Decompressez-le et detarez-le , puis executez "instldso.sh", qui se trouve a la racine de l'arborescence resultante. Vous devriez maintenant etre en mesure de compiler et de tester le programme et l'applet "hello world" de Sun en suivant les indications de http://java.sun.com/progGuide/index.html. 55..22.. RReeddHHaatt 22..11//CCaallddeerraa PPrreevviieeww 22 Steve Greene (sgreene@access.digex.net) rapporte le succes des etapes suivantes. Nous avons quelque peu modifie la recette ; les erreurs sont donc a porter a notre compte. Le JDK auquel il fait allusion est le portage du Java Developer's Kit realise par Randy Chapman. +o Recuperez le fichier rpm contenant ld.so.1.7.14 sur un site miroir de Red Hat. Pour le trouver, cherchez /pub/mirrors/redhat-2.1/updates/RPMS/ld.so-1.7.14-i386.rpm dans un site miroir quelconque de Red Hat. Je sais qu'on peut le trouver sur ftp.pht.com et ftp.caldera.com. Il se trouve probablement egalement sur d'autres sites miroir. Recuperez-le et lancez `rpm -Uvh ld.so-1.7.14-1.i386.rpm' sur votre machine ; +o Les utilisateurs de Red Hat 2.0 ou de Caldera Preview 2 pourront avoir besoin du programme 'which' (qui est appele par certains des scripts du JDK). Un fichier rpm pour 'which' est disponible sur les sites miroir habituels de RedHat, comme element de la distribution Red Hat 2.1. Recuperez et installez which-1.0.i386.rpm. Les utilisateurs de RedHat 2.1 doivent normalement deja avoir which sur leur machine ou disponible dans leur distribution ; +o Recuperez le(s) fichier(s) tar du JDK linke en statique. Detarez-le en un endroit pratique. J'ai place le mien dans /usr/local, si bien qu'est cree /usr/local/java/... ; +o Afin de pouvoir executer java en tant qu'utilisateur autre que root (ce qui est une bonne idee !), faites un chmod 666 /dev/zero. Red Hat et Caldera ont par defaut des droits incorrects sur ce peripherique ; +o Si vous ne l'avez pas deja fait, lancez ldconfig en tant que root pour charger les nouvelles bibliotheques. Si vous utilisez 'ldconfig -v', vous pourrez verifier que toutes les bibliotheques soient bien chargees (au moins, nous n'avons pas a commencer par batir un systeme ELF !) ; +o Assurez-vous d'etre connecte en tant qu'utilisateur classique (e.g. pas root). Lancez X-Window, un xterm et essayez quelque chose ! 55..33.. UUnniiffiixx Stefan Middenforf ecrit : Unifix est une distribution de Linux en langue allemande, assez populaire. Quelques autres distribution s'en servent comme base : Linux Universe, vendue aux Etats-Unis, Linux 4U qui n'est pour l'instant distribuee qu'en Allemagne et Linux FT, que l'on trouve en Grande-Bretagne. La recette qui suit marche avec Unifix 1.7, Linux 4U 1st Edition, Linux Universe 2nd Edition et Linux FT 1.1. +o Copiez linux-x86.jdk.static-motif.tar.gz que l'on trouve a l'adresse : ftp://www.blackdown.org/pub/Java/linux/ dans le repertoire /usr/local, puis restaurez l'archive (grace a gzip et tar) ; +o Modifiez la premiere ligne du script .java_wrapper PRG=`which $0` >/dev/null 2>&1/ ennbsp;: PRG=`type $0 | cut -d ' ' -f 3` >/dev/null 2>&1/ ; +o Recuperez libc-5.2.18.bin.tar.gz (cela fonctionne aussi avec libc-5.2.16.bin.tar.gz), puis restaurez cette archive dans le repertoire / ; +o Recuperez ld-so.1.7.12.tar.gz sur tsx-11.mit.edu (ou un site miroir) et restaurez-le dans /usr/local. Placez-vous dans le repertoire cree et lancez instldso.sh. Ceci executera egalement ldconfig. Il est probable que des versions plus recentes de ld-so fonctionneront egalement ; +o Ajoutez /usr/local/java/bin a la variable d'environnement PATH ; +o Recuperez netscape-v20b4-export.i486-unknown-linux.tar.Z, et restaurez-le dans /usr/local/ ; +o Creez un lien de /usr/local/bin vers ..//netscape ; +o Placez /usr/local//moz2_0.zip dans /usr/local/lib/netscape/. Une alternative a la modification du PATH est, selon Ralf Strobel, de : +o Copier les scripts .java_wrapper et appletviewer, ainsi que les liens @java, @javac, @javadoc, @javap et @jdb de /usr/local/java/bin vers /usr/local/bin, de facon a pouvoir les utiliser depuis n'importe ou ; +o Dans /java/bin/i586 vous pouvez ajouter un script appele 'javadoc' #!/bin/sh `dirname $0`/java sun.tools.javadoc.Main -d $ ou, si vous etes l'utilisateur jrandom, correspond a jrandom/.java-html. 66.. VViissuuaalliissaattiioonn ddeess aapppplleettss Pour lancer une demonstration sans passer par l'appletviewer, vous pouvez lancer la commande suivante depuis le haut de l'arborescence Java (/usr/local/java sur la plupart des machines) : bin/java sun.applet.AppletViewer demo//exampleN.html ou est le repertoire de la demonstration et N le numero du fichier d'exemple (certains repertoires en contiennent plusieurs). Steve Green raconte qu'il a teste les tutoriels disponibles sur le site java de SUN et sur celui du NTMUG. Son experience revele quelques problemes dans la syntaxe du tutoriel de Sun. C'est pourquoi il est passe a celui du NTMUG. L'application appletviewer requiert comme argument un fichier HTML contenant un marqueur APPLET. Par exemple, si votre fichier HTML Hello.html ressemble a : Programme Test Hello Ceci est un test de l'appletviewer La commande appletviewer Hello.html vous montrera l'applet. L'avantage de l'appletviewer est que les evenements envoyes a l'applet (start(), init(), etc) sont conformes aux specifications de Sun, ce qui n'est pas le cas de Netscape 2.0b4 (probablement a cause d'un bug). L'un des inconvenients d'appletviewer est sa grande lenteur par rapport a Netscape. Lorsque vous lancez Java pour la premiere fois, une fenetre de licence similaire a celle de Netscape est affichee. 77.. PPrroobblleemmeess ccoonnnnuuss 77..11.. GGNNUU mmaakkee nnee ffoonnccttiioonnnnee pplluuss aapprreess ll''iinnssttaallllaattiioonn ddee JJaavvaa Les versions recentes de libc corrigent un bogue qui en cachait un autre dans la version GNU de make (le symptome en est que make ne cherche plus les regles dans les Makefile). Un patch corrigeant ce probleme est inclus dans la distribution 5.2.8 de libc. 77..22.. VVoouuss aavveezz ddeess eerrrreeuurrss ddiirrnnaammee:: ttoooo mmaannyy aarrgguummeennttss Votre variable d'environnement CLASSPATH n'est pas initialisee correctement. Dans le fichier .java_wrapper, on trouve quelques lignes ressemblant a : PRG=`which $0` J_HOME=`dirname $PRG`/.. Malheureusement, la commande which generalement fournie avec Linux est horriblement defectueuse et certains shells risquent d'affecter a $0 le chemin complet. Selon Randy Chapman, la solution est d'utiliser soit : J_HOME=`dirname $0`/.. soit, de facon plus sure : J_HOME=/usr/local/java Un autre correctif, propose par Dave Dittrich, est : PRG=`csh -c "which $0"` Quant a Tim Farnum, il propose de changer la ligne PRG=`which $0` en : PRG=$0 Lutz Behnke, enfin, suggere : PRG=`type -path $0` >/dev/null 2>&1 Une modification similaire doit etre appliquee au script d'appletviewer. 77..33.. VVoouuss aavveezz ddeess eerrrreeuurrss dduu ttyyppee ccaannnnoott ffiinndd ccllaassss jjaavvaa//llaanngg//TThhrreeaadd Votre variable d'environnement CLASSPATH n'est pas initialisee correctement. Voir plus haut. 77..44.. UUnn mmeessssaaggee dd''eerrrreeuurr ffaaiitt rreeffeerreennccee aa //ddeevv//zzeerroo Passez root et faites un chmod 666 /dev/zero. 77..55.. SSEEGGFFAAUULLTT Il peut arriver que votre ecran se remplisse de messages d'erreurs, que le systeme remplisse joyeusement votre memoire virtuelle, puis se bloque. Dans ce cas, il vous manque probablement une bibliotheque quelque part. Lancez ldconfig -v et regardez ce qu'il manque. Il est egalement possible que les variables d'environnement LD_LIBRARY_PATH ou CLASSPATH ne soient pas positionnees. Enfin, il se trouve que certaines applets sont boguees et bloquent le JDK Linux (il y a d'ailleurs un moyen d'eviter le blocage en ayant un autre xterm dans lequel tourne top. Il suffit alors d'utiliser top pour tuer le processus java AVANT qu'il remplisse la memoire virtuelle et bloque le systeme). Java semble necessiter d'importantes ressources. Il est donc conseille de restreindre au maximum le nombre d'applications ouvertes ou qui s'executent. Il parvient a se charger sur un 486DX-2-75 avec 8 Mo de RAM et 16 Mo de swap (cela prend tout de meme une minute). L'auteur a ainsi reussi a faire tourner deux applets animees simultanement (ou a peu pres) avant que le systeme se retrouve a court de memoire virtuelle et se bloque. 77..66.. bbiinn//jjaavvaa,, bbiinn//jjaavvaacc,, oouu bbiinn//aapppplleettvviieewweerr vvoouuss rreennvvooiiee uunn mmeessssaaggee dd''aaiiddee Vous avez oublie des parametres de la ligne de commande. 77..77.. LLeess aapppplleettss aappppaarraaiisssseenntt bbiieenn ddaannss ll''aapppplleettvviieewweerr,, mmaaiiss ppaass lloorrssqquu''eelllleess ssoonntt ppllaacceeeess ssuurr uunn sseerrvveeuurr WWeebb.. Une erreur classique ayant cette consequence est d'associer aux applets un type MIME incorrect. Votre serveur doit renvoyer avec l'applet un en-tete indiquant qu'elle est du type MIME text/plain, application/octet-stream ou tout autre type pour lequel le client ne dispose pas d'un module de traitement special. La maniere de remedier a cela depend du serveur que vous utilisez. (John Franks) Il semble egalement que tinyhttpd, un serveur HTTP ecrit en Perl, renvoie un content type incorrect. Apache, en revanche, semble fonctionner relativement correctement. 77..88.. FFiicchhiieerr ddee ttrraacceess Selon Joey Oravec, HotJava conserve un fichier de traces des actions qu'il accomplit et des eventuels problemes qu'il rencontre. Si vous devez etablir un diagnostic par vous-meme, examinez le fichier $HOME/.hotjava/weblog, dans le repertoire racine de l'utilisateur. Ce fichier vous permettra de reperer plus aisement s'il vous manque une bibliotheque ou s'il s'agit d'un probleme similaire. 88.. RReessssoouurrcceess aassssoocciieeeess Les informations generales concernant Java peuvent etre trouvees dans la FAQ publiee dans le newsgroup comp.lang.java et disponible a l'adresse http://www.city-net.com/~krom/java-faq.html. Un autre document du type FAQ, plus ancien, a ete ecrit par Joey Oravec joey@sun.science.wayne.edu. On peut le trouver a l'adresse http://www.science.wayne.edu/~joey/java/linux.html. Il traite principalement de la version alpha, mais il se pourrait qu'il fusionne avec la FAQ citee ci-dessus. Voici une liste de quelques pages WWW traitant de Java : +o Karl Asha's General Linux Java Page ; +o LinuxJava Mailing List ; +o Netrek for Java ; +o Blue-Skies for Java ; +o Java Hints Page. 99.. AA aajjoouutteerr...... +o Plus de recettes propres aux differentes declinaisons de Linux. 1100.. RReemmeerrcciieemmeennttss L'auteur adresse ses plus vifs remerciements a tous ceux qui ont contribue a ce document, en particulier a : +o John Franks ; +o Zachary DeAquila ; +o Steve Greene ; +o Dave Dittrich ; +o Dave Flanagan ; +o Joey Oravec ; +o Adam Smith ; +o Joe Buck ; +o Omar Loggiodice ; +o Stefan Middendorf . La presente version de ce document inclut le mini-HOWTO de Steve Greene pour Red Hat/Caldera, souvent annonce mais jamais publie. L'auteur a egalement peche quelques informations utiles sur la page WWW de Joey Oravec -- graces lui en soit rendues. La liste des autres HOWTOs et FAQs maintenus par l'auteur peut etre consultee sur sa page d'accueil http://www.locke.ccil.org/~esr/home.html. La liste des HOWTOs en francais peut etre consultee sur http://www.loria.fr/linux/. Le traducteur, enfin, souhaite remercier Pierre Vassellerie (Pierre.Vassellerie@obspm.fr) et Bernard Choppy (choppy@imaginet.fr) pour leur aide dans la mise en forme et la correctionde ce document. .