HUBBARD-chaps Page 2 Mardi, 27. juin 2006 12:08 12 2 Débuter LE LANGAGE DE PROGRAMMATION JAVA Le langage de programmation Java a été développé par James Gosling chez Sun Microsystems en 1991. Son nom provient d’un terme d’argot désignant le café. Lorsque le World Wide Web a fait son apparition sur internet en 1993, ce langage s’est vu apporter quelques améliorations afin de s’adapter à la programmation sur le web. Depuis lors, il est devenu l’un des langages les plus populaires, notamment pour la programmation réseau. Afin de mieux vous rendre compte de ce qui a pu contribuer au succès de Java, considérez un réseau de plusieurs ordinateurs différents, comme ceci : Station de travail IBM AIX Motorola PowerPC PC Dell Windows NT Intel Pentium II PC Unicent Linux AMD K6 Réseau PC portatif Toshiba Windows Intel Pentium Pro Station de travail SGI IRIX MIPS R10000 PC réseau Sony Windows 2000 Intel Celeron Ces ordinateurs peuvent être réunis dans une même pièce, au sein d’un réseau local ou dispersés à travers le monde et reliés via internet. Ce qu’il faut retenir, c’est qu’ils tournent sur différents systèmes d’exploitation et utilisent des processeurs différents. Supposons que vous souhaitiez écrire un programme sur la station de travail IBM qui puisse tourner sur chacun de ces six ordinateurs. Avant qu’un programme informatique puisse être exécuté, il doit être converti dans le langage machine du processeur de l’ordinateur sur lequel il doit tourner. Dans le cas des langages de programmation comme le Pascal ou le C++, cette conversion est effectuée par un HUBBARD-chaps Page 3 Mardi, 27. juin 2006 12:08 12 Le langage de programmation JAVA 3 compilateur, qui produit une version langage machine du programme appelée image exécutable. Malheureusement, les processeurs possèdent chacun leur propre langage machine. Ainsi, l’image exécutable produite sur la station de travail IBM ne pourra tourner sur aucun des autres ordinateurs du réseau présenté précédemment. Pour qu’un programme puisse tourner sur chacun de ces ordinateurs, il faudrait que le programmeur le compile séparément sur chacune de ces machines. Pour résoudre ce problème, Java propose pour chaque système informatique non seulement un compilateur, mais également un système logiciel appelé Java Virtual Machine (JVM ou machine virtuelle Java). Le compilateur Java, appelé javac, convertit le code source Java en un langage de niveau intermédiaire, appelé bytecodes. Les bytecodes, comme le code source lui-même, sont indépendants du type d’ordinateur. Tous les ordinateurs utilisent le même fichier bytecode. Lorsqu’un ordinateur souhaite exécuter un programme Java écrit sur un autre ordinateur, il télécharge le fichier bytecode du programme et le transmet à sa propre JVM. La JVM traduit les bytecodes dans le langage machine de son propre système et exécute la version convertie. Le schéma ci-après présente à nouveau le réseau de l’exemple précédent. Trois fichiers apparaissent cette fois sur l’ordinateur IBM : un fichier de code source Java appelé Hi.java, le compilateur java et le fichier bytecode Hi.class. Le compilateur a produit ce fichier bytecode lorsque le programmeur a exécuté la commande javac Hi.class sur l’ordinateur IBM. Par la suite, un utilisateur de l’ordinateur Sony (à droite) a cliqué sur une page web qui contenait des instructions pour exécuter Hi.class. Automatiquement, la machine Sony a téléchargé le bytecode Hi.class et l’a fait tourner sur sa propre JVM locale. La JVM de l’ordinateur Sony sait comment traduire le bytecode dans le langage machine du processeur afin que ce dernier puisse l’exécuter. Tout le travail préalablement effectué sur l’ordinateur IBM est entièrement indépendant de celui réalisé sur l’ordinateur Sony. En fait, le fichier Hi.class aurait pu avoir été produit bien avant que l’ordinateur Sony ou son processeur n’aient même été inventés. La plupart des navigateurs web (Netscape Communicator, Internet Explorer) intègrent JVM. Lorsque vous chargez une page web qui contient des instructions pour exécuter un programme Java, le navigateur télécharge automatiquement le bytecode et lance la JVM.