Chapitres traités  

Choix des chapitres Historique

Le langage Java fut développé par Sun Microsystems en 1991 dans le cadre du projet Green, groupe de recherche spécialisé dans le développement de logiciels conçus pour contrôler des appareils électroniques. Les chercheurs souhaitaient développer un langage de programmation qui permette de contrôler les appareils du futur : des téléviseurs interactifs, des grillepains interactifs, des systèmes d'éclairage intelligents, etc. Les chercheurs de Sun voulaient aussi que ces appareils soient capables de communiquer entre eux, de telle sorte que la tondeuse à gazon puisse indiquer au mixeur de vous avertir dès que les voisins sont rentrés du travail et qu'ils sont de nouveau en train de bronzer dans le jardin. Pour mettre en pratique les résultats de leurs travaux, les chercheurs du projet Green développèrent un prototype appelé Star7, gadget qui ressemblait à une télécommande de téléviseur, capable de communiquer avec ses semblables. L'idée de départ était de développer le système d'exploitation de la télécommande Star7 en C++, langage de programmation orienté objet développé par Bjarne Stroustrup, qui est aujourd'hui l'un des langages les plus utilisés. Toutefois, l'un des membres du projet Green, James Gosling, en eut rapidement assez des contraintes que posait C++. Il s'enferma dans son bureau et conçut un nouveau langage mieux adapté aux spécificités de Star7. Le langage fut d'abord nommé Oak, mais le groupe Green s'aperçut ensuite que ce nom était déjà utilisé dans le domaine de l'informatique. Etant destiné à être utilisé avant tout avec des appareils électroniques, et non avec des PC modernes, Java se devait d'être un langage peu encombrant, performant et facile à porter pour un large éventail d'appareils. Il se devait aussi d'être fiable. Certes, le public a appris à s'accommoder d'un logiciel qui plante de temps en temps alors qu'il occupe 5 Mo d'espace disque, mais il est beaucoup plus difficile de rester indifférent face à un grille pain mal programmé qui a la fâcheuse habitude de calciner le pain au lieu de le faire dorer. Bien que Java ait été conçu initialement comme un outil destiné aux appareils électriques et au développement d'une télévision interactive, les caractéristiques qui le rendaient intéressant pour le standard Star7 le rendirent aussi intéressant pour le World Wide Web :

  1. Java est peu encombrant. Il faut donc peu de temps pour télécharger un programme en Java à partir d'une page Web.
  2. Java est sûr. II ne peut pas être utilisé par des individus malintentionnés pour créer des dégâts sur le système de l'utilisateur du navigateur.
  3. Java est portable. Il peut donc être utilisé sous Windows, sur Macintosh et sur d'autres plates formes, sans aucune modification.
  4. En outre, Java présentait l'intérêt de pouvoir être utilisé comme un langage de programmation polyvalent pour développer des logiciels capables de fonctionner sur différentes plates-formes.

Afin de mettre en évidence le potentiel de Java et d'éviter que le fruit de leurs recherches finisse dans un placard, les membres du projet Green créèrent en 1994 un navigateur Web capable de faire fonctionner des applets Java. Ce navigateur mit en évidence deux choses à propos de Java : ce qu'il offrait au World Wide Web et le type de programmes que Java permettait de créer. Les programmeurs Patrick Naughton et Jonathan Peayne utilisèrent Java pour créer ce navigateur, initialement appelé WebRunner, mais qui fut rebaptisé HotJava.

Bien que Java et le navigateur HotJava soient parvenus à attirer l'attention de la communauté du Web, le langage ne commença vraiment à s'imposer que quand Netscape, la première société à s'intéresser concrètement à ce langage, signa au mois d'août 1995 un contrat de licence l'autorisant à l'utiliser. Marc Andreesen, cadre dirigeant de Netscape et multimillionnaire, fut l'un des premiers décideurs étrangers à Sun à percevoir l'intérêt de Java, et il gratifia ce langage d'un soutien marqué lors de la conférence Java0ne de mai 1996. "Java est une opportunité très intéressante pour nous tous", déclara t-il aux participants. Peu après la sortie publique de la première version de Java, la société Sun cibla ses efforts de développement pour Java et elle recruta plusieurs centaines de nouveaux employés pour continuer à développer le langage.


Choix des chapitres Possibilités offertes par Java

Choix du chapitre Conçu pour fonctionner sur le Web : Applet

Java est surtout connu pour sa capacité à fonctionner sur des pages du World Wide Web. Les navigateurs Web Navigator de Netscape et Internet Explorer de Microsoft, permettent de télécharger un programme Java sur le Web et de le faire fonctionner localement sur le système de l'utilisateur du Web.

Ces programmes, appelés Applets, se présentent comme des images sur une page Web. Contrairement aux images, toutefois, les applets peuvent être interactives - c'est-à-dire admettre des données entrées par l'utilisateur, y répondre et présenter du contenu capable d'évoluer en permanence. Les applets peuvent servir à créer des animations, des figures, des jeux, des formulaires capables de réagir à des informations entrées par l'utilisateur, ou tout autre type d'effets interactifs sur une même page Web, au milieu d'éléments de texte et de graphismes.

La Figure suivante illustre une Applet fonctionnant sous Internet Explorer.
Java permet à une personne de jouer contre trois adversaires informatiques dans une partie de dominos.

Les applets peuvent être téléchargées depuis le World Wide Web de la même manière que des pages HTML, des images ou n'importe quel élément de site Web. Si le navigateur Web utilisé est équipé pour traiter les applets Java, l'applet téléchargée commence à s'exécuter dès qu'elle a fini de se télécharger.

Les applets sont écrites en langage Java, compilées sous une forme qui leur permet d'être exécutées ensuite comme programmes, puis placées sur un serveur Web. La plupart des serveurs Web sont capables de distribuer des fichiers Java sans qu'il faille modifier leur configuration.

Les applets Java sont presque toutes écrites en Java 1.0.2, la première version vraiment populaire de ce langage, car les principaux fabricants de navigateurs ont tardé à rendre leurs produits compatibles avec les applets Java 1.1 et Java 2. A l'heure actuelle, les principaux navigateurs comme Netscape et Internet Explorer utilisent la version Java 1.1.

Les utilisateurs du Web dont le navigateur est incompatible avec Java peuvent voir du texte, une image, ou même rien du tout à la place d'une applet Java, suivant que le concepteur de la page Web a prévu un élément de substitution ou non pour l'applet Java.

Contrairement aux ActiveX, Java dispose d'un modèle de sécurité avec une granularité élevée. Le système garantit à l'utilisateur un niveau de protection élevé pour son système.

Le poste client est totalement sécurisé en utilisant les Applets

D'autre part, les applets java sont téléchargées dynamiquement en même temps que la page qui les référence avant d'être lancées sous le contrôle du navigateur Web. Ce téléchargement en mémoire vive est effectué à chaque visite de la page. Rien n'est installé physiquement sur le poste client. Ce mode de fonctionnement diminue les performances et provoque un démarrage plus long par rapport à un contrôle ActiveX, mais il évite toute pollution du système par du code non désiré par l'utilisateur.

Si les applets Java constituent sans doute l'une des applications les plus répandues de Java, elles ne constituent que l'une des nombreuses possibilités d'utilisation que ce langage offre. Comme Visual C++, Visual Basic et Delphi, Java est un langage robuste qui peut être exploité pour développer un large éventail de programmes utilisant une interface utilisateur graphique, pouvant être appliqués en réseau et se connecter à des bases de données, et offrant d'autres fonctionnalités toutes plus sophistiquées les unes que les autres. Par opposition aux applets, les programmes Java ne fonctionnant pas sous un navigateur Web sont appelés applications.

Choix du chapitre Un langage indépendant de toute plate-forme : Application

Java est un langage indépendant de toute plate-forme, ce qui signifie qu'un même programme peut fonctionner sur différentes plates-formes et sous différents systèmes d'exploitation. C'est là l'un des principaux atouts de Java par rapport à d'autres langages de programmation.

Quand vous compilez un programme écrit en C ou dans la plupart des autres langages, le compilateur traduit le fichier source en code machine - des instructions spécifiques au processeur que votre ordinateur utilise. Si vous compilez le code source sur un ordinateur reposant sur un processeur Intel, le programme résultant fonctionnera sur d'autres ordinateurs reposant eux aussi sur un processeur Intel, mais il ne fonctionnera en aucun cas sur des Macintosh, sur des Commodore VIC-20, ou sur d'autres types d'ordinateurs. Pour utiliser le même programme sur une autre plate-forme, vous devrez transférer le code source vers la nouvelle plate-forme et le recompiler pour produire du code machine spécifique à ce système. Le plus souvent, il faut modifier le code source avant de le compiler sur la nouvelle machine, compte tenu des différences que présentent les différents ordinateurs au niveau de leur processeur et d'autres facteurs (notamment l'interface graphique qui est propre au système d'exploitation "Interface Propiétaire").

La Figure suivante montre le résultat d'un système dépendant d'une plate-forme précise :
plusieurs programmes exécutables doivent être réalisés pour les différents systèmes.

Programmes compilés traditionnels

Si les programmes Java sont indépendants de toute plate-forme, c'est parce qu'ils reposent sur une machine virtuelle, qui est une sorte d'ordinateur installé à l'intérieur de l'ordinateur physique dont se sert l'utilisateur. Cette machine virtuelle prend les programmes Java compilés et convertit leurs instructions en commandes intelligibles pour un système d'exploitation. Le même programme compilé, qui se présente sous un format appelé pseudo-code, peut fonctionner sur n'importe quelle plate-forme et sous n'importe quel système d'exploitation possédant une machine Java virtuelle.

Le pseudo-code est similaire au code machine produit par d'autres langages, mais il n'est pas propre à un processeur donné. Il ajoute un niveau entre la source et le code machine.

Programmes multi-plates-formes Java.

On remarque que dans ce système, il faut qu'il y ait impérativement une machine virtuelle Java (JVM) pour chacune des plate-formes utilisées, ce qui est le cas pour la plupart des systèmes d'exploitations récents. Le cas échéant, il est possible de récupérer la machine virtuelle Java gratuitement sur le site de "Sun micosystems".

La machine virtuelle Java est aussi appelée interpréteur Java.

Le µprocesseur à l'intérieur d'un ordinateur ne peut comprendre que le code binaire pour effectuer ses opérations élémentaires (code objet). La difficulté, c'est que le programmeur ne comprend pas directement ce langage. il est donc judicieux d'utiliser un langage qui soit proche de la pensée humaine (code source). Du coup, il est évident qu'il est nécessaire d'avoir une traduction pour passer d'un code à l'autre.
Soit on utilise une traduction définitive grâce à la compilation. Le résultat obtenu est très performant au niveau de la rapidité d'exécution (on utilise toutes les compétences du processeur) au détriment de la portabilité puisque la compilation s'est effectuée pour un processeur spécifique.
Soit on effectue la traduction au fur et à mesure de la lecture du code source, on utilise pour cela un interpréteur. on se rend compte qu'avec ce système, à chaque fois que l'on exécutera le programme, il faudra relire le code source, ce qui donne, on l'imagine, de très faible performances en terme de rapidité. Le langage Java utilise les deux concepts.

Java est aussi indépendant de toute plate-forme au niveau de la source. Les programmes Java sont enregistrés sous forme de fichiers texte avant d'être compilés, et ces fichiers peuvent être créés sur n'importe quelle plate-forme supportant Java. Ainsi est il possible de créer un programme Java sur un Macintosh, puis de le compiler en code d'octets sur un ordinateur fonctionnant sous Windows 98.

La source, aussi appelée code source, est l'ensemble des instructions de programmation que le programmeur entre dans un éditeur de texte lorsqu'il crée un programme. Le code source est compilé en pseudo-code afin de pouvoir être exécuté par une machine virtuelle Java.

La machine virtuelle Java peut être trouvée à différents endroits. Pour les applets, elle est soit intégrée à un navigateur compatible Java, soit installée séparément et utilisable par le navigateur. Le programmeur d'applets n'a pas à se soucier de savoir si elle est présente sur l'ordinateur de l'utilisateur ou non.

Les applications Java, en revanche, ne peuvent fonctionner que sur un système sur lequel une machine virtuelle Java adéquate a été installée. Pour exécuter des applications Java 2 sur votre ordinateur, vous devrez donc d'abord installer la machine virtuelle correspondante.

Si vous êtes habitués à la façon dont les langages de programmation tels que Visual Basic et Delphi créent du code spécifique à une plate-forme, vous pouvez considérer que l'interpréteur de pseudo-code ajoute une couche non indispensable entre votre source et le code machine compilé.

Cela a des incidences sur les performances du système : les programmes Java s'exécutent plus lentement que les langages compilés dépendants d'une plate-forme donnée, telle le C. Et la différence de rapidité est l'un des premiers arguments que mettent en avant les détracteurs de Java. Certains outils de développement en Java incluent des compilateurs juste à temps, qui peuvent exécuter le pseudo-code Java à une vitesse beaucoup plus élevée.

Exemple d'application fonctionnant sur n'importe quelle plate-forme (GUI: Interface utilisateur Metal)

Le fait qu'un même fichier de pseudo-code puisse être exécuté sur plusieurs plates-formes est crucial pour l'utilisation de Java sur le World Wide Web, car le Web lui même est indépendant de toute plate-forme. De même que les fichiers HTML peuvent être lus sur n'importe quelle plate-forme, les applets Java peuvent être exécutées sur n'importe quelle plate-forme disposant d'un navigateur compatible Java.

Pour beaucoup de programmes Java de base, la rapidité n'est pas vraiment un problème. Néanmoins, si vous écrivez un programme qui nécessite une vitesse d'exécution supérieure à la vitesse que la machine virtuelle peut offrir, vous pouvez recourir à différentes solutions, qui consistent à :

  1. utiliser dans votre programme des appels à du code machine spécifique à la machine utilisée, ce qui rendra le programme dépendant de votre plate-forme ;
  2. utiliser des compilateurs juste à temps, qui convertissent le pseudo-code Java en code spécifique au système.

Le gain de rapidité obtenu à l'aide de l'une de ces deux solutions se fera au détriment de la portabilité de Java. Une application qui utilise des appels Windows pour accéder au disque ne fonctionnera pas sur un Macintosh sans modifications préalables.

Choix du chapitre Java est multitache : Thread

Le terme thread définit une tâche spécifique et indépendante généralement prise en charge par le système d'exploitation. Un thread peut être assimilé à une unité d'exécution de programme. Un thread est généralement matérialisé par une portion de code s'exécutant en parallèle des autres parties d'une application.

Evoluer dans un environnement réseau, sur le Web par exemple, engendre souvent la nécessité d'exécuter plusieurs tâches simultanément : jouer un son, produire une animation, exécuter une requête importante sur une base de données, etc. Java est nativement doté d'un ensemble complet de primitives de gestion du multitâche - ou multithreading - simplifiant grandement l'écriture de programmes s'appuyant sur ce type de fonctionnalités.

Choix du chapitre Java permet l'exécution dynamique :

Java permet l'exécution dynamique du code grâce à son interpréteur. L'interpréteur Java exécute le bytecode et autorise le chargement de code additionnel à la volée. Cette caractéristique pourra particulièrement être mise à contribution dans le cadre des applications Internet et Intranet : des portions complètes de code seront chargées au fur et à mesure des besoins de l'application.

En outre, Java rend aujourd'hui possible le transport des objets entre différents programmes. Ce mécanisme puissant permet de décider de l'endroit où s'exécute le code lors du déroulement du programme et ouvre la porte à de vastes possibilités (optimisation, répartition de charge).

Choix du chapitre Java est totalement adapté au réseau : Distribution - Socket, Servlet, RMI

Java possède une importante bibliothèque de routines permettant de gérer les protocoles TCP/IP tels que HTTP et FTP. Les applications Java peuvent charger et accéder à des pages Web sur Internet via des URL avec la même facilité qu'elles accèdent à un fichier local sur le système.

Les fonctionnalités réseau de Java sont à la fois fiables et d'utilisation aisée. Toute personne ayant essayé de faire de la programmation pour Internet avec un autre langage se réjouira de la simplicité de Java lorsqu'il s'agit de mettre en oeuvre des tâches lourdes, comme l'ouverture d'une connexion avec un Socket. De plus, Java rend plus facile l'élaboration des scripts CGI (Common Cateway Interface), et un mécanisme élégant, nommé Servlet, augmente considérablement l'efficacité du traitement côté serveur, assuré par Java. De nombreux serveurs Web, parmi les plus courants, supportent les servlets. Le mécanisme d'invocation de méthode à distance (RMI) autorise la communication entre objets distribués.

Choix du chapitre Composants logiciels réutilisables : Javabeans

Un principe tend à s'imposer de plus en plus dans le domaine des logiciels : celui de la réutilisabilité des composants. L'idée est en effet que les éléments d'un programme doivent pouvoir être utilisés avec plus d'un package logiciel.

Un composant logiciel est un morceau de logiciel isolé au sein d'une structure discrète et facile à réutiliser.
.

Si vous développez les différentes parties d'un programme sous forme de composants parfaitement autonomes, vous devriez avoir la possibilité de réassembler ces composants pour créer d'autres programmes avec une plus grande efficacité de développement. Cette notion de réutilisabilité a, dans une certaine mesure, été empruntée au concept de chaîne de production, qui a connu son heure de gloire durant la révolution industrielle, bien avant l'ère de l'informatique moderne. Appliquée aux logiciels, cette idée consiste à ne construire qu'une seule fois des composants de petite taille, et à les réutiliser autant de fois que possible, en rationalisant ainsi l'ensemble du processus de développement.

Développement à deux étages par la conception de composants logiciels

L'obstacle le plus important à ce principe de réutilisabilité est sans doute la multiplicité et la disparité des microprocesseurs et des systèmes d'exploitation utilisés aujourd'hui. De nombreux efforts d'uniformisation ont été effectués dans le domaine des logiciels conçus sous forme de composants, mais ils ont toujours été limités par un système d'exploitation spécifique. Les architectures de composants MxVBX et OCX de Microsoft connaissent un grand succès dans le modèle des PC Intel, mais elles n'ont que peu contribué à combler l'écart existant entre les PC Intel et les autres plates-formes.

La technologie ActiveX de Microsoft, qui repose sur la technologie OCX, vise à Fournir une technologie de composants polyvalente compatible avec un large éventail de plates-formes. Toutefois, si l'on considère la dépendance qui lie la technologie ActiveX au code Windows 32 bits, il est indéniable que le problème de la dépendance vis-à-vis de la plateforme demeure entier.

Un certain nombre de technologies de composants existantes présentent également l'inconvénient d'avoir été développées dans un langage de programmation particulier ou pour un environnement de développement spécifique. De la même manière que la dépendance vis-à-vis de la plate-forme peut rendre des composants inexploitables au moment de l'exécution du programme, le fait de limiter le développement des composants à un langage de programmation ou un environnement de développement précis peut rendre les composants inexploitables à la fin de la phase de développement. Bien entendu, les développeurs de logiciels veulent être libres de décider eux-mêmes du langage à adopter pour telle ou telle tâche, mais les analystes programmeurs veulent eux aussi être libres de déterminer quel environnement de développement est le plus adapté à leurs besoins au lieu d'être obligés d'utiliser un environnement précis sur la base des contraintes que pose une technologie de composants donnée. Toute technologie de composants qui se place sur le long terme doit donc permettre de s'affranchir des problèmes de dépendance vis-à-vis de la plate-forme, mais aussi vis-à-vis du langage.

Phylosophie du système à base de composant logiciel

Java a joué un rôle prépondérant dans la mutation qui a permis de faire des projets de développement de logiciels vraiment indépendants de toute plate-forme une réalité, et c'est plus particulièrement la technologie JavaBeans qui permet de développer des composants logiciels. JavaBeans est un ensemble de classes, indépendant de toute architecture et de toute plateforme, qui permet de créer et d'utiliser des composants logiciels Java. JavaBeans prend le relais des autres technologies de composants au point même où celles-ci avaient échoué, en utilisant la plate-forme portable Java comme base de travail pour fournir une solution de composants logiciels vraiment complète.


Choix des chapitres Les avantages de Java

L'un des avantages évidents de ce langage est une bibliothèque d'exécution qui se veut indépendante de la plate-forme: en théorie, il vous est possible d'utiliser le même code pour Windows 95/98/NT, Solaris, UNIX, Macintosh, etc. Cette propriété est indispensable pour une programmation sur Internet (cependant, par rapport à la disponibilité sur Windows et Solaris, les implémentations sur d'autres plates-formes ont toujours un léger décalage).

Un autre avantage de ce langage de programmation réside dans le fait que la syntaxe de java est analogue à celle de C++, ce qui le rend économique et professionnel. Les programmeurs Visual Basic (VB) risquent néanmoins de trouver cette syntaxe déplaisante, et regretteront certaines constructions de VB, telles que Select Case. Java est un langage "à objets", par opposition au C++ qui lui, est "orienté objet" et qui autorise la programmation procédurale. Tous les éléments de Java, à l'exception de quelques types de base tels que les nombres, sont des objets. (La conception orientée objet présentant de nombreux avantages pour les projets sophistiqués, elle a remplacé les techniques structurées précédentes).

Le fait de créer une autre version d'un langage C++ n'est cependant pas suffisant. Le point clé est le suivant : il est beaucoup plus facile d'obtenir du code sans erreur à l'aide de Java qu'avec C++.

Pourquoi ? Les concepteurs de Java ont beaucoup réfléchi à la raison pour laquelle le code C++ contenait autant d'erreurs. Cette réflexion les a amenés à ajouter dans Java des fonctions destinées à éliminer la possibilité de créer du code contenant les types d'erreurs les plus courants (selon certaines estimations, le code C++ contient au moins une erreur toutes les cinquante lignes).

  1. Les concepteurs de Java ont supprimé l'allocation et la libération de mémoire manuelles. La mémoire dans Java est allouée et libérée automatiquement. Vous n'avez jamais à vous préoccuper de pertes de mémoire.
  2. Ils ont éliminé l'arithmétique des pointeurs introduisant du même coup une vraie gestion de tableau. La notion de référence sur une zone mémoire remplace avantageusement celle de " pointeur", car elle supprime la possibilité d'écraser toute zone mémoire à cause d'un compteur erroné.
  3. Ils ont éliminé toute possibilité de confusion entre une affectation et un test d'égalité dans une instruction conditionnelle. L'instruction if (ntries = 3) ne pourra pas franchir l'étape de la compilation (les programmeurs VB ne comprendront pas le problème, mais il s'agit réellement d'une source de confusion importante dans le code C/C++).
  4. Ils ont supprimé l'héritage multiple en le remplaçant par une nouvelle notion d'interface dérivée d'Objective C. Les interfaces vous offrent tout ce que vous pouvez obtenir à partir de l'héritage multiple, sans la complexité de la gestion de hiérarchie d'héritage multiple.

Choix des chapitres La machine virtuelle et le JDK

Cette section détaille le JDK et ses outils. Les différentes versions et leurs principales caractéristiques sont abordées.

Choix du chapitre La machine virtuelle

La machine virtuelle développée par Sun représente le conteneur dans lequel le code Java est exécuté. Afin de garantir la possibilité de s'exécuter sur de nombreux systèmes existants ou à venir, la machine virtuelle définit une architecture d'exécution complète :

  1. un jeu d'instructions précis ;
  2. des registres ;
  3. une pile.

Il s'agit donc d'un véritable processeur virtuel qui définit et implémente les éléments nécessaires au bon fonctionnement des programmes Java : allocations mémoire, format des programmes Java compilés, interpréteur, etc.

La sécurité est primordiale dans le cadre de l'utilisation de programmes provenant de l'Internet. Sun a donc doté la machine virtuelle de mécanismes de sécurité de façon à protéger le poste de l'utilisateur des programmes malveillants codés en Java. La sécurité est assurée par :

  1. Le langage et le compilateur Java, qui gèrent entièrement pointeurs et références.
  2. Un programme de vérification de bytecode veillant à l'intégrité du code Java.
  3. Un chargeur de classes (class loader), véritable arbitre chargé d'autoriser ou de refuser le chargement d'une classe en fonction de sa provenance (disque local, Intranet, Internet).
  4. Une classe chargée d'effectuer la vérification des appels aux API (Application Programming Interface) Java.

Une API regroupe un ensemble de fonctions utilitaires à partir desquelles le développeur construit son application. Java est doté de nombreuses API, chacune remplissant un rôle précis.

Les machines virtuelles sont mises à disposition des développeurs à travers le JDK , les navigateurs, ou encore des environnements de développement spécifiques tels que Borland JBuilder.

Les machines virtuelles Java sont aujourd'hui disponibles sous diverses formes. Dans le cadre des applets, les navigateurs incorporent leurs propres versions de la machine virtuelle. Dans le cas d'applications, l'environnement d'exécution Java doit être installé sur le poste au préalable (JRE ou Java Runtime Environment). Des solutions telles que Java Plug-in de Sun sont également susceptibles de fournir des machines virtuelles capables d'exécuter du code Java. Pour obtenir un JRE, référez-vous aux instructions fournies à l'adresse http://java.sun.com/products.

Choix du chapitre Le Java Developpement Kit (JDK)

Le JDK regroupe l'ensemble des éléments permettant le développement, la mise au point et l'exécution des programmes Java.

Le JDK inclut de nombreux outils de développement ainsi que l'ensemble de l'API Java dont le développeur dispose pour construire ses programmes. Le JDK peut donc être perçu comme :

  1. un ensemble d'outils,
  2. un jeu de classes et de services ;
  3. un ensemble de spécifications.

Le JDK est en évolution constante et différentes versions sont mises à la disposition des développeurs. Connaître la version du JDK employée est extrêmement important : les classes disponibles peuvent être sensiblement différentes d'une version à une autre. La dernière mouture du JDK est la 1.3 beta 1 (vous trouverez dans les sections suivantes le détail des principales versions).

Bien qu'un développement Java puisse être entièrement réalisé à l'aide du JDK, les outils fournis sont de type ligne de commande - portabilité oblige. Ils n'autorisent donc pas une approche visuelle ni une automatisation du développement comme c'est le cas avec JBuilder.

Le Tableau suivant recense les principaux outils livrés avec le JDK.
.

Nom
Description
java.exe

Machine virtuelle Java, permet l'exécution des programmes (redistribuable en version Java 2).

jre.exe

Machine virtuelle Java redistribuable (Java Runtime Engine), permet l'exécution des programmes. Attention, ce programme n'existe plus en plate-forme Java 2. Il est remplacé par java.exe.

javac.exe

Compilateur Java.

appletviewer.exe

Machine virtuelle Java permettant l'exécution des applets.

jar.exe

Permet la création et la manipulation d'Archives Java (JAR).

javadoc.exe

Générateur de documentation Java, au format HTML.

javap.exe

Désassembleur de classes Java compilées.

jdb.exe

Débogueur Java en ligne de commande.

Choix du chapitre Les versions et les technologies du JDK

Les versions majeures du JDK sont les suivantes

  1. JDK 1.0
  2. JDK 1.1
  3. JDK 1.2 (plate-forme Java 2).
  4. JDK 1.3 (nouvelle plate-forme Java 2, beta)

Les navigateurs Netscape Communicator 4.x, Internet Explorer 4.x et 5.x .supportent totalement ou partiellement le JDK 1.1.
.

La plupart des spécifications des différents JDK sont accessibles sur Internet http://java.sun.com/ products/JDK. Les différences essentielles entre les versions sont détaillées dans les sections suivantes. La numérotation de Sun est codifiée sur trois chiffres, par exemple 1.0.2. La première position représente la version majeure, la deuxième représente l'ajout de nouvelles fonctionnalités, le troisième chiffre identifie une version corrective.

Le JDK 1.0

La version la plus aboutie du JDK 1.0 est la version de maintenance 1.02 en date de mai 1996. Le JDK 1.0 représente réellement les fondations de Java :

  1. spécifications originales du langage ;
  2. API et classes élémentaires (objets, entrées-sorties, applets ...) ;
  3. première version de la bibliothèque AWT ou Abstract Windowing Toolkit.

AWT est un élément important de la majorité des applications Java 1.0. Cette bibliothèque fournit une interface de programmation de fenêtres et d'interfaces graphiques. AWT met à la disposition des développeurs Java un ensemble d'éléments graphiques portables : fenêtres, boutons de commande, zones de liste, cases à cocher, listes déroulantes, etc. Bien que ce JDK soit largement supporté par les navigateurs, son manque de fonctionnalités est un frein important à l'écriture d'applications importantes. Il n'est utilisé aujourd'hui que lors d'une recherche de compatibilité maximale avec différents environnements Java.

Le JDK 1.1

La version 1.1 du JDK constitue une version extrêmement importante. Elle fut mise à disposition des développeurs au début de l'année 1997. Elle marque l'apparition d'un grand nombre de nouveautés ou d'améliorations par rapport à la version précédente (passage de 200 classes à 500 classes environ). La dernière version est la 1.1.8.

Les apports essentiels de cette version sont :

  1. de nombreuses améliorations et extensions au langage et aux classes (classes internes...) ;
  2. l'amélioration des classes AWT existantes ;
  3. l'apparition des composants Java, les JavaBeans ;
  4. l'apparition de l'API JDBC (Java Database Connectivity) pour la connexion aux bases de données ;
  5. l'apparition du modèle RMI (Remote Method Invocation) pour la communication entre programmes Java s'exécutant dans des machines virtuelles différentes ;
  6. le codage modifié des événements ;
  7. l'amélioration de la sécurité par le support de signatures digitales pour les applets ;
  8. l'amélioration des performances ;
  9. la création d'applications Java exécutées sur les serveurs (les Servlets) ;
  10. l'apparition de JNI ou Java Native Interface ;
  11. l'apparition du plug-in pour les navigateurs.

Le JDK 1.2

Le JDK 1.2 apparaît début 1998. Globalement, la version 1.2 améliore et étend l'ensem ble des fonctionnalités citées dans la section précédente. Les points les plus significatifs sont :

  1. l'intégration officielle d'une nouvelle bibliothèque de composants Java (Swing, faisant partie d'un ensemble baptisé JFC ou Java Foundation Classes) ;
  2. l'amélioration des JavaBeans ;
  3. l'intégration de l'API Java 2D (regroupant la gestion des couleurs, des fontes, des images, de l'imprimante...) ;
  4. l'apparition de l'API d'accessibilité (reconnaissance vocale, terminaux en Braille...) ;
  5. l'intégration en standard du langage IDL Interface Definition Langage pour le support natif des objets CORBA ;
  6. l'intégration en standard de bibliothèques CORBA ;
  7. le support natif du glisser-déposer ;
  8. l'amélioration des performances.

La plate-forme Java 2 repose entièrement sur le JDK 1.2. La version actuellement disponible de Java2 est la 1.2.2.

Choix du chapitre Les Kits de développement