Jose M. Fernández Table des matières: Introduction Origine Obtention et installation de JAVA Environment de développement Caractéristiques Premier programme en JAVA Résumé |
Java. 1ère PartieRésumé:
Voici le premier article d'une série sur la programmation Java.
Cette première partie décrira Java en tant que langage, ces
caractéristiques générales, et l'emplacement des sources
d'information les plus intéressantes.
IntroductionCet article est le premier d'une série décrivant le langage de programmation Java et son environnement de développement. Comme premier objectif, j'essaierai d'éviter les sujets concernant l'histoire du langage, les micro-ondes, et les machines à laver (si quelqu'un est vraiment intéressé par ces sujets, de nombreuses publications les traitent, même dans la bibliothèque rose). Je resterai aussi éloigné de Duc (Duke, la mascotte de Java), un petit gars avec un gros nez, et un corps triangulaire, qui agite sa main au rythme d'un maracas, et me rappelle ces vieux films de science fiction américains.Il y a un peu de snobisme dans ce phénomène Java. Tous les magazines sur l'informatique écrivent à propos de Java, de nombreuses sociétés vendent des outils pour développer des applettes, et peu de sites n'ont pas une ou deux applettes Java à montrer. A travers cette série, j'essaierai autant que possible de décrire et d'approfondir ce langage de programmation, qui est simple pour les tâches de base, mais en même temps devient très complexe pour les projets importants. Il est aussi difficile à maîtriser à cause de sa constante évolution. L'objectif de cette première série d'articles est de fournir une description générale du langage, afin de pouvoir dans la suite approfondir certains sujets comme les applettes, les projets orientés réseaux, JDBC, les beans, etc. Je voudrais insister sur le caractère général du langage Java; il n'est pas utilisé exclusivement pour écrire des applettes pour les pages Web, bien que cette application l'ait rendu populaire. Nous ne pouvons pas nous limiter à cet aspect, car il en existe de nombreux autres qui peuvent être plus intéressants que les applettes Java. Ce premier article est plus descriptif que pratique. D'abord, nous explorerons
les caractéristiques fondamentales du langage, et l'environnement
de développement. Ensuite, nous verrons un premier exemple de programmation
Java.
OrigineJava a été conçu par James Gosling, Patrick Naughton, Chis Warth, Ed Frank et Mike Sherindan chez Sun Microsystems Inc. en 1991, lors de ses 18 premiers mois d'existence. Entre 1992 et 1995 Bill Joy, Arthur Van Hoff, Jonathan Payne, Frank Yellia, Tim Lindolm ont collaboré pour amener le prototype initial à maturité.>Ces dates montrent que Java a précédé ou au moins est simultané au WWW -- Tim Berners Lee n'a pas développé le langage HTML avant 1991. La syntaxe de Java est très similaire à celle de C, et ses caractéristiques orientées objet sont aussi très similaires à celles de C++. Java est un langage de programmation très cohérent et logiquement uniforme. Les similarités avec C et C++ peuvent donner l'impression que Java est une version de C++ pour Internet, mais il y a des différences théoriques et pratiques. En particulier, Java améliore et rafine le comportement objet par rapport à C++. Internet a lancé Java et en a fait un langage universellement
connu, et simultanément Java a eu un effet notable sur Internet,
puisqu'il a élargi le champ des objets librement transportables
dans le cyberespace (programmes dynamiques s'exécutant automatiquement).
Obtention et installation de JavaIl y a plusieurs outils indispensables pour la programmation Java. Je ferai toujours référence à l'environnement GNU/ LINUX (au cas où quelqu'un serait perdu):J'utiliserai l'environnement JDK (Java Development Kit), Netscape version 2.0.14 ou plus récent, et un éditeur de texte comme Xemacs. Nous travaillerons toujours sous environnement Xwindows. Bien que ça ne soit pas toujours nécessaire, c'est indispensable si l'application a une interface graphique ou si vous développez une applette. De ce site, il est possible de sélectionner un site mirroir pour télécharger les fichiers plus rapidement. Il y a quelques mois, la dernière version était JDK-1.1.3 (j'utiliserai cette version), mais à ma dernière visite j'ai vu que la version 1.1.9 étatit déjà prête. Remarquez qu'un téléchargement complet implique 24 Mo! Néanmoins, le stric nécessaire comporte environ 12 Mo (patiente!). Après décompression de l'archive avec gunzip, le travail peut commencer. La distribution est normalement installée dans le répertoire /usr/local, avec la création d'un sous répertoire JDK1.1.3, et dans celui-ci: /doc Documentation officielle au format HTML /demo Demonstration de programmes Java /lib Bibliothèques /bin Ici se trouvent réellement les outils du JDK. Le répertoire /lib comporte le fichier "classes.zip" (ne le décompressez pas), qui renferme toutes les classes (compilées) utilisées par le JDK. A l'intérieur du répertoire de base, se trouve le fichier
"src.zip", qui contient le source des classes de "classes.zip". Elles ne
peuvent être compilées, et sont seulement fournies à
titre de dcumentation.
Environnement de développementComme indiqué précédemment, les outils de développement se trouvent dans le répertoire bin:java : interprêteur java, exécute le bytecode java. jre : environnement d'exécution de Java. appletviewer: pour tester and lancer des applets. jdb: debogueur. javap: désassemble le bytecode des classes compilées. javadoc : générateur de documentation, produit un ensemble de pages HTML décrivant les classes publiques et protégées, les interfaces, les constructeurs, les méthodes et les champs. Il produit aussi une description de la hiérarchie des classes, et un index de tous les membres. javah : outil pour ajouter des méthodes en C aux programmes Java. jar: archive plusieurs classes Java vers un fichier d'archive Jar. javakey : outil pour maintenir des signatures numériques. updateAWT : met à jour les méthodes AWT1.02 de l'application. CaractéristiquesAvant de poursuivre, posons-nous la question: qu'est-ce que Java? On peut répondre, comme dans le manuel JDK, que Java est deux choses, un langage de programmation et une plateforme d'exécution.Comme langage de programmation, Java est un langage évolué disposant des caractéristiques principales suivantes (nous les examinerons en détail plus avant):.
Grâce au Bytecode Java, on peut "écrire une fois et exécuter toujours". On peut compiler un programme Java sur une plate-forme, puis l'exécuter sur une autre d'architecture totalement différente, pour peu qu'elle dispose d'une Machine Virtuelle Java (JVM). Par exemple, un programme Java peut être compilé sur une plate-forme Windows NT et tourner sans problème (au moins en théorie) sur un Solaris Sun Ultra. En règle générale, une plate-forme est un environnement matériel et logiciel sur lequel fonctionne des applications. Pour Java, une plate-forme est un environnement uniquement logiciel, toute plate-forme Java doit disposer d'une JVM, qui tourne sur une plate-forme matérielle. Une plate-forme Java est constituée de deux composants:
L'API Java est une grande collection de composants logiciels qui fournissent des utilitaires, comme une interface utilisateur graphique (GUI, Graphical User Interface). Grâce à cet ensemble, on peut utiliser Java pour de nombreuses applications au delà des applettes Web bien connues, on peut par exemple développer des serveurs Web, proxies, et pratiquement tout ce qu'on peut imaginer en relation avec Internet. On peut répartir l'API en plusieurs groupes:
Examinons plus précisément les caractéristiques
de Java:
Il y a des outils sous licence GPL tel le compilateur GUAVAC, qui permettent de compiler n'importe quel source Java sans problème. Il faut aussi mentionner la machine virtuelle KAFFE sous licence Berkeley. Ces deux projets sont déjà très avancés, mais ils utilisent toujours les bibliothèques de classes de Sun (distribuées gratuitement pour l'instant) pour fournir un environnement de développement complet. Plusieurs autres projets récents tendent à fournir des environnements de développement rapides et viisuels. Enfin, je voudrais signaler l'important mouvement sur Internet concernant
les technologies Java et GNU, particulièrement le développement
d'une boîte à outils Java complète, librement distribuable
et indépendante de Sun. Nous pouvons déjà comprendre
l'importance de Java, et quand la mode sera retombée, je suis convaincu
qu'il en restera quelque chose (je parie que beaucoup restera).
Premier programme en JAVAAprès avoir décrit quelques caractéristiques générales du langage, jetons un oeil à un vrai programme. Comme mentionné en introduction, je souhaite autant que possible m'éloigner des choses communes, comme le fameux programme "Hello, world"; à la place, nous allons commencer par un programme dessinant un carré de n'importe quelle dimension à l'écran (un peu compliqué mais pas trop): Fichier Cuadro.Javaclass Cuadro { public static void main (String args[]) { int l ,a; if (args.length == 2) { l = Integer.valueOf(args[0]).intValue(); a = Integer.valueOf(args[1]).intValue(); } else { l= 20; a= 15; } for (int i=l; i>0; i--){ System.out.print("*"); } System.out.print("\n"); for (int i= a-2; i>0; i--){ System.out.print("*"); for(int j=l-2; j>0; j--) { System.out.print(" "); } System.out.print("*\n"); } for (int i=l; i>0; i--){ System.out.print("*"); } System.out.print("\n"); } }En Java, le nom donné au fichier source est très important car il définit une "unité de compilation". Le fichire peut contenir une ou plusieurs définitions de classes. Le compilateur attend un nom de la forme *.java (4 caractères), ce qui implique que certains systèmes ne le supporte pas (DOS ou Windows 3.1). Dans l'exemple fourni, le nom de la classe définie coïncide avec le nom du fichier source. Ca n'est pas par hasard. En Java, tout le code doit être dans une classe; par convention, le nom de la classe est le même que le nom du fichier source correspondant. Remarquez que Java distingue la casse (majuscules/ minuscules). Pour compiler l'exemple, tapez à la ligne de commande:
Le compilateur Java (s'il ne rencontre pas d'erreur) génère
le fichier Cuadro.class qui contient naturellement le code binaire (bytecode),
et il peut être immédiatement exécuté par l'interprêteur
en entrant:
Lorsque le code source est compilé, chaque classe est individuellement placée dans un fichier avec le même nom que la classe. C'est donc une bonne habitude de donner aux fichiers source le nom de la classe principale qu'ils contiennent, de sorte que le fichier source ("foo.java") coïncide avec le fichier du bytecode ("foo.class"). Malgré sa simplicité, notre exemple Cuadro.java aide à comprendre les bases de Java, et en particulier de voir la structure typique d'un programme Java. D'abord réalisez que cet exemple n'est pas une applette et ne peut donc pas être intégré dans un fichier HTML. Il s'agit d'un programme indépendant à exécuter par l'interprêteur Java depuis la ligne de commande. La première ligne du programme est: class Cuadro {Le premier terme est un mot réesrvé du langage, il indique la définition d'une nouvelle classe nommée ici "Cuadro" -- carré en espagnol. La définition exacte de la classe et de tous ces membres suit entre les deux crochets {}. Notez qu'avec Java, toute l'activité d'un programme réside dans une classe. Ligne suivante: public static void main (String args[]) {Elle définit une méthode appelée main(). Toutes les applications Java doivent implémenter une méthode main() (similaire à C/C++). Laissez-moi maintenant commenter quelques détails nécessaires à la compréhension de l'exemple (nous les reverrons plus précisémment dans d'autres articles). Le mot clé public contrôle la visibilité des méthodes membres de la classe. Quand une classe est déclarée public, alors la classe peut être utilisée par du code en dehors de la classe. Le mot clé static permet d'appeler la méthode main() sans avoir à créer une instante de la classe. Le mot clé void indique que la méthode ne renvoie pas de valeur. Les pararmètres passés à une fonction ou méthode sont indiqués entre parenthèses après le nom de la méthode; dans notre exemple, main prend comme paramètres une matrice d'instances de la classe String. Evidemment, tout le code appartenant à la méthode est enfermé par les crochets. Ensuite vient la ligne: int l, a ;nous déclarons deux variables entières. En Java, chaque variable doit être définie avant d'être utilisée. Remarquez que chaque instruction se termine par un point virgule ";". Le reste du code est un petit algorithme qui:
If (args.length==2)
l = Integer.valueOf(args[0]).intValue(); a = Integer.valueOf(args[1]).intValue();
l = 20; a = 15;
System.out.print()print() affiche la chaîne de caractères passée en argument. System est une classe prédéfinie qui donne accès au système, et out représente le flux de sortie connecté à la console. Ensuite, for (int i=l; i>0; i--)Comme attendu, l'instruction for se comporte comme en C/C++ ou d'autres langages. Un bon exercice pour le lecteur, consiste à compiler puis exécuter ce petit programme, mais aussi de tester sa portabilité en exécutant l'objet Cuadro.class sur différentes plates-formes: Linux, Windows 95 (ne prenez pas ça pour un cadeau!) et vérifier qu'il s'exécute à l'identique. RésuméNous avons décrit les fonctionnalités générales de Java en tant que langage de programmation. Nous venons juste de commencer à programmer, et il reste un long chemin à parcourir. Les articles futurs donneront une description plus approfondie du langage. Le prochain article en particulier décrira les définitions et les types des variables, les instructions de base, les classes, en bref les spécifications principales du langage.Dans chaque article, je donnerai les références, publications et URL sur lesquelles je me suis basé pour cette série d'articles:
|
Ce site web est
maintenu par Miguel Angel Sepulveda
© Jose M. Fernandez 1998 LinuxFocus 1998 |