  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.

  11..  IInnttrroodduuccttiioonn

  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.

  22..  QQuueessttiioonnss dd''oorrddrree ggeenneerraall ssuurr JJaavvaa eett HHoottJJaavvaa

  Cette partie est une introduction generale (non specifique a Linux)  a
  Java et HotJava.

  22..11..  QQuuee ssoonntt JJaavvaa eett HHoottJJaavvaa ?? EEnn qquuooii ssoonntt--iillss iinntteerreessssaannttss ??

  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.
  22..22..  DD''oouu vviieennnneenntt JJaavvaa eett HHoottJJaavvaa ?? QQuuii aa llee ddrrooiitt ddee lleess uuttiilliisseerr ??

  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.

  22..33..  QQuueellllee eesstt llaa mmaattuurriittee ddee JJaavvaa ??

  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).

  22..44..  OOuu ppeeuutt--oonn ttrroouuvveerr ddee llaa ddooccuummeennttaattiioonn ssuurr JJaavvaa eett HHoottJJaavvaa ??

  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).

  22..55..  CCeerrtteess,, mmaaiiss oouu ttrroouuvveerr uunnee ddooccuummeennttaattiioonn ppaappiieerr ??

  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.

  22..66..   OOuu  ppeeuutt--oonn  ttrroouuvveerr  ddeess  ccoolllleeccttiioonnss ddee ccooddee JJaavvaa ddiissppoonniibblleess
  oonn--lliinnee ??

  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.

  33..   JJaavvaa,, llooggiicciieell lliibbrreemmeenntt ddiiffffuussaabbllee ((FFrreeeellyy RReeddiissttrriibbuuttaabbllee SSoofftt--
  wwaarree))

  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.)

  33..11..  PPeeuutt--oonn rreeddiissttrriibbuueerr lliibbrreemmeenntt ddeess pprrooggrraammmmeess eeccrriittss eenn JJaavvaa ??

  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.

  33..22..   QQuueelllleess ssoonntt lleess ddrrooiittss eett oobblliiggaattiioonnss aassssoocciieess aauuxx eexxeeccuuttaabblleess
  ddee JJaavvaa ??

  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.
  33..33..   QQuueelllleess  ppaarrttiieess  ddeess  ssoouurrcceess  ddee  JJaavvaa  ppeeuutt--oonn  rreeddiissttrriibbuueerr
  lliibbrreemmeenntt ??

  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.

  33..44..  QQuueellllee eesstt ll''aattttiittuuddee ddee SSuunn vviiss--aa--vviiss  ddeess  iimmpplleemmeennttaattiioonnss  eett
  oouuttiillss JJaavvaa ggrraattuuiittss ??

  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.

  33..55..  PPeeuutt--oonn ttrroouuvveerr ddeess cclloonneess  ddee  JJaavvaa  ddoonntt  lleess  ssoouurrcceess  ssooiieenntt
  lliibbrreemmeenntt rreeddiissttrriibbuuaabblleess ??

  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).

  33..66..  PPeeuutt--oonn ttrroouuvveerr ddeess oouuttiillss JJaavvaa lliibbrreemmeenntt rreeddiissttrriibbuuaabblleess ??

  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.

  44..  QQuueessttiioonnss ccoonncceerrnnaanntt JJaavvaa ssoouuss LLiinnuuxx

  Vous apprendrez ici les astuces de  base  permettant  d'utiliser  Java
  sous Linux.

  44..11..  PPeeuutt--oonn ttrroouuvveerr JJaavvaa eett HHoottJJaavvaa ddaannss uunnee ddiissttrriibbuuttiioonn LLiinnuuxx ??

  Pas pour l'instant, mais cela  ne  devrait  etre  qu'une  question  de
  semaines.

  44..22..  OOuu ttrroouuvveerr llaa ddeerrnniieerree ddiissttrriibbuuttiioonn ddee JJaavvaa ppoouurr LLiinnuuxx ??

  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).

  44..33..  QQuueell eesstt ll''eennvviirroonnnneemmeenntt rreeqquuiiss ppoouurr eexxeeccuutteerr JJaavvaa ??

  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 :

     lliibbcc..ssoo..55 ==>> //lliibb//lliibbcc..ssoo..55..22..1188
        (La bibliotheque C standard)

     lliibbXX1111..ssoo..66 ==>> //uussrr//XX1111//lliibb//lliibbXX1111..ssoo..66..00
        (La bibliotheque de base de X11R6)

     lliibbXXtt..ssoo..66 ==>> //uussrr//XX1111//lliibb//lliibbXXtt..ssoo..66..00
        (La bibliotheque de la boite a outils Athena)

     lliibbXXeexxtt..ssoo..66 ==>> //uussrr//XX1111//lliibb//lliibbXXeexxtt..ssoo..66..00
        (La bibliotheque d'extensions X)

     lliibbXXppmm..ssoo..44 ==>> //uussrr//XX1111//lliibb//lliibbXXppmm..ssoo..44..33
        (La bibliotheque X de gestion des pixmaps)

     lliibbddll..ssoo..11 ==>> //lliibb//lliibbddll..ssoo..11..77..99
        (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.

  44..44..  AAii--jjee bbeessooiinn ddee NNeettssccaappee ?? PPuuiiss--jjee ll''uuttiilliisseerr ??

  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.

  44..55..   QQuueellss ssoonntt lleess nneewwssggrroouuppss eett mmaaiilliinngg lliissttss ttrraaiittaanntt ddee JJaavvaa ssuurr
  LLiinnuuxx ??

  +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.

  55..  MMiissee eenn ppllaaccee ddee JJaavvaa ssuurr lleess pprriinncciippaalleess ddiissttrriibbuuttiioonnss  LLiinnuuxx  dduu
  mmaarrcchhee

  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.

  55..11..  DDiissttrriibbuuttiioonn SSllaacckkwwaarree EELLFF nnooyyaauu 11..22..1133..

  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.

  55..22..  RReeddHHaatt 22..11//CCaallddeerraa PPrreevviieeww 22

  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 !

  55..33..  UUnniiffiixx

  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/<votre_Repertoire_Netscape> ;

  +o  Creez       un       lien       de       /usr/local/bin        vers
     ../<votre_Repertoire_Netscape>/netscape ;

  +o  Placez    /usr/local/<votre_Repertoire_Netscape>/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
     <votre_Repertoire_HTML> $

     ou,  si  vous  etes  l'utilisateur jrandom, <votre_Repertoire_HTML>
     correspond a  jrandom/.java-html.

  66..  VViissuuaalliissaattiioonn ddeess aapppplleettss

  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/<nom_repertoire>/exampleN.html

  ou <nom_repertoire> 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 :

     <HTML>
     <HEAD>
     <TITLE> Programme Test Hello </TITLE>
     </HEAD>
     <BODY>
     Ceci est un test de l'appletviewer
     <APPLET CODE="Hello1.class" WIDTH=150 HEIGHT=25>
     </APPLET>
     </BODY>
     </HTML>

  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.

  77..  PPrroobblleemmeess ccoonnnnuuss

  77..11..  GGNNUU mmaakkee nnee ffoonnccttiioonnnnee pplluuss aapprreess ll''iinnssttaallllaattiioonn ddee JJaavvaa

  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.

  77..22..  VVoouuss aavveezz ddeess eerrrreeuurrss ddiirrnnaammee:: ttoooo mmaannyy aarrgguummeennttss

  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.

  77..33..  VVoouuss aavveezz ddeess eerrrreeuurrss dduu ttyyppee ccaannnnoott ffiinndd ccllaassss jjaavvaa//llaanngg//TThhrreeaadd

  Votre  variable  d'environnement  CLASSPATH  n'est   pas   initialisee
  correctement. Voir plus haut.

  77..44..  UUnn mmeessssaaggee dd''eerrrreeuurr ffaaiitt rreeffeerreennccee aa //ddeevv//zzeerroo

  Passez root et faites un  chmod 666 /dev/zero.

  77..55..  SSEEGGFFAAUULLTT

  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.

  77..66..  bbiinn//jjaavvaa,, bbiinn//jjaavvaacc,, oouu bbiinn//aapppplleettvviieewweerr vvoouuss rreennvvooiiee uunn mmeessssaaggee
  dd''aaiiddee

  Vous avez oublie des parametres de la ligne de commande.

  77..77..   LLeess  aapppplleettss  aappppaarraaiisssseenntt  bbiieenn  ddaannss ll''aapppplleettvviieewweerr,, mmaaiiss ppaass
  lloorrssqquu''eelllleess ssoonntt ppllaacceeeess ssuurr uunn sseerrvveeuurr WWeebb..

  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.

  77..88..  FFiicchhiieerr ddee ttrraacceess

  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.

  88..  RReessssoouurrcceess aassssoocciieeeess

  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.

  99..  AA aajjoouutteerr......

  +o  Plus de recettes propres aux differentes declinaisons de Linux.

  1100..  RReemmeerrcciieemmeennttss

  L'auteur  adresse  ses  plus  vifs  remerciements  a tous ceux qui ont
  contribue a ce document, en particulier a :

  +o  John Franks <john@math.nwu.edu> ;

  +o  Zachary DeAquila <zachary@zachs.place.org> ;

  +o  Steve Greene <sgreene@access.digex.net> ;

  +o  Dave Dittrich <dittrich@cac.washington.edu> ;

  +o  Dave Flanagan <dave@ora.com> ;

  +o  Joey Oravec <joey@sun.science.wayne.edu> ;

  +o  Adam Smith <aws@cs.brown.edu> ;

  +o  Joe Buck <jbuck@Synopsys.com> ;

  +o  Omar Loggiodice <ologgio@netdepot.com> ;

  +o  Stefan Middendorf <mdorf@stud.fh-heilbronn.de>.

  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.

