2. Questions d'ordre général sur Java et HotJava

Contenu de cette section

Cette partie est une introduction générale (non spécifique à Linux) à Java et HotJava.

2.1 Que sont Java et HotJava~? En quoi sont-ils intéressants~?

Java est un langage orienté réseau. Similaire au C++, il est plus compact et a été conçu plus proprement. Il met en oeuvre une gestion mémoire semblable à celle du Lisp (ramasse-miettes), mais dispose en plus d'une vérification statique des types, raison pour laquelle il est parfois décrit avec ironie comme un "Smalltalk doté d'une syntaxe cohérente". Les processus légers (threads) y sont intégrés et il dispose de nombreuses possibilités en termes de sécurité réseau. Jusqu'à présent, la principale application réalisée grâce à Java est le navigateur WWW HotJava, mais l'avenir de Java comme langage de développement d'applications de tous types semble prometteur.

HotJava est un navigateur WWW écrit en Java. Son principal avantage sur ses concurrents est de pouvoir traiter une nouvelle construction HTML appelée "APPLET". Une applet est un programme Java qui s'exécute sur la machine cliente. Les documents WWW peuvent par conséquent contenir des objets "vivants" et non plus de simples données.

La possibilité de transférer des objets exécutables représente le progrès le plus significatif de la technologie du World Wide Web depuis l'apparition de Mosaic. L'application la plus immédiate en est de pouvoir concevoir un navigateur Web qui ne nécessite plus d'incessantes mises à jour pour être capable de traiter les nouveaux formats d'images et les nouvelles constructions.

Un programme Java est transformé par compilation en un pseudo-code appelé "J-code" que l'interpréteur Java a pour rôle d'exécuter. Il se pourrait bien que le J-code soit en passe de devenir une référence universelle en matière de code indépendant s'exécutant sur une machine virtuelle, ou encore comme langage de compilation intermédiaire. Des rumeurs courent à propos de l'existence d'un compilateur ADA-95 générant du J-code et sur le développement d'un tel compilateur pour le langage C. Il est probable qu'en fin de compte, de nombreux langages de haut niveau permettront d'écrire des applets ou des programmes complets sur toute machine disposant d'un interpréteur Java. On peut aussi signaler l'apparition de microprocesseurs Java dont le jeu d'instruction est le J-code.

2.2 D'où viennent Java et HotJava~? Qui a le droit de les utiliser~?

Java et HotJava ont été développés chez Sun Microsystems, par une équipe conduite par James Gosling (déjà largement connu pour Gosling Emacs et NeWS).

La dernière tentative menée par Sun pour imposer un standard technique majeur a été NeWS, son système de fenêtrage réseau (Network Window System). Bien que la supériorité de NeWS sur X ait été reconnue presque unanimement, X a gagné la bataille pour la simple raison que les sources en étaient gratuitement disponibles. Cet échec a été formateur pour Sun~: Java et HotJava sont aisément accessibles, les fichiers source peuvent être téléchargés 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 déjà capable d'interpréter du Java. Microsoft a acquis la licence de la technologie en Décembre 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 à lui dénommé WebRunner.

2.3 Quelle est la maturité de Java~?

Le 12 Décembre 1995, Sun mettait à disposition du public la version 'Bêta~2' de Java. Un mois plus tard venait le tour de la version 1.0, première version dite de "production". L'API (Application Programmers Interface) de l'environnement Java, qui définit son accès au système d'exploitation et au système de fenêtrage de la machine hôte, semble avoir été "gelée" : elle pourra être étendue, mais ne sera pas rendue incompatible avec la version actuelle.

La version 1.0 de ce document a été rendue publique en même temps que la version bêta~1.0 du kit de développement Java (JDK) pour Linux, dont le portage a été réalisé par Randy Chapman.

C'est un fait connu que de sérieux trous de sécurité existent dans l'implémentation de Java. Ce n'est donc pour l'instant pas une très bonne idée que d'utiliser Java pour des applications sensibles. Ces problèmes seront certainement résolus dans les versions de production (post-beta).

2.4 Où peut-on trouver de la documentation sur Java et HotJava~?

Sun tient à jour un serveur Web complet proposant des documents sur Java et HotJava à 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.5 Certes, mais où trouver une documentation papier~?

La série officielle des manuels Java de SunSoft Press est en cours de production chez Addison-Wesley. On peut trouver quelques détails sur ces ouvrages dans comp.lang.java FAQ .

Certains des pionniers de Java ont recommandé l'ouvrage "Hooked on Java", écrit par les membres de l'équipe de développement de Java. L'un des commentaires qui ont été faits sur ce livre est~: "Bien écrit, mais j'aurais apprécié quelque chose de moins basique".

O'Reilly & Associates travaille actuellement sur sa propre série d'ouvrages traitant de Java, en collaboration avec Sun. On trouvera (au moins) un "Nutshell Guide to Java", un manuel de référence du langage, un manuel de référence des bibliothèques de classes et un ouvrage traitant de la machine virtuelle sous-jacente à Java (celle qui exécute le J-code).

Information tout à fait non confidentielle~: l'auteur de ce HOWTO a été prié par O'Reilly & Associates de servir de principal relecteur technique de ces ouvrages et il est rémunéré pour ce travail.

SamsNet a publié un livre intitulé "Learning Java in 21 Days". Aucun commentaire n'en a été fait pour l'instant.

Un des contributeurs de ce document a trouvé dans des librairies proches de chez lui trois ouvrages déjà publiés~:

Notre informateur poursuit~: "J'ai acheté le troisième (écrit par Tim Ritchey). Les délais d'impressions étant ce qu'ils sont, le CD-ROM ne contient que des versions alpha, bien qu'il signale que la version bêta est probablement disponible au moment de la publication, et que les informations les plus à jour se trouvent sur java.sun.com. Cela mis à part, c'est un bon ouvrage et il juge même nécessaire 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 évolution, et ces informations se trouvent on-line..."

Dave Dittrich indique~: "Je dirais que "Java in 60 minutes" peut certes être 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 à la pointe de l'actualité. On n'y trouve apparemment pas grand'chose de plus que ce qui est disponible sur le Web et une grande quantité de texte donne l'impression d'avoir été reproduite telle quelle à partir du document "Java Language Specification" http://java.sun.com/JDK-beta2/psfiles/javaspec.ps ."

Dave poursuit~: "Il en va de même avec "Java!", mais ce dernier détaille beaucoup plus les concepts de la programmation orientée objet. Quelqu'un m'a signalé un autre ouvrage qui traite assez bien de l'abstraction données/méthodes et des autres concepts de la programmation orientée objet. Il s'agit de "Structure and Interpretation of Computer Programs", par Abelson, Sussman et Sussman (MIT Press)."

Dernière mise en garde : à l'heure actuelle (Janvier 1996), c'est probablement une bonne idée que d'éviter le livre de Ritchey ou tout ce qui peut être basé sur l'API alpha. L'API bêta est substantiellement différente et Java 1.0, qui devrait bientôt être disponible, aura encore ses propres différences.

2.6 Où peut-on trouver des collections de code Java disponibles on-line~?

On trouve des archives d'applets sur le WWW, aux adresses suivantes~:

La plupart des applets présentées sur ces pages sont accompagnées de leur code source et les programmeurs sont encouragés à les utiliser.

Des pointeurs vers d'autres ressources peuvent être trouvés dans le comp.lang.java FAQ .


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre