INTRODUCTION A JAVA
Transcription
INTRODUCTION A JAVA
S. Laporte Java intro Lycée Louise Michel BTS IG DA INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du code et gestion des variables). L’avantage principal de Java par rapport aux autres langages c’est sa PORTABILITE, le fait qu’un programme Java puisse théoriquement être exécuté sur n’importe quelle plate-forme (type de processeur et système d’exploitation) Pour comprendre cette caractéristique, nous devons faire quelques rappels. Rappels sur l’interprétation et la compilation Quelque soit le langage utilisé pour écrire un programme, ce dernier devra toujours être traduit en langage machine pour pouvoir être exécuté par le processeur. En effet, un ordinateur ne connaît qu’une seule langue : celle de son processeur. Les langages de programmation ne sont pas écrits dans un langage directement exécutable par le processeur : pour exécuter un programme, il faut toujours que le code soit préalablement traduit en langage machine. Le moment où la traduction s’effectue diffère selon les langages. Traditionnellement on distingue deux grands types de langages : - les langages compilés tels que C/C++ , Pascal… - les langages interprétés tels que Basic Dans les langages compilés, il est nécessaire de traduire tout le code préalablement à l'exécution, pendant une étape appelée compilation pour pouvoir ensuite exécuter le programme. Un fichier du programme traduit en langage machine est généré (souvent, un .exe), et c’est ce fichier qui sert de base à l’exécution. Code compilateur Fichier en langage machine Exécutable Compilation Exécution Dans les langages interprétés au contraire, l’exécution se base sur le fichier du code, mais chaque ligne du fichier est traduite en langage machine juste avant d’être exécutée. C’est l’interprétation. Code intepréteur Interprétation 1/7 S. Laporte Java intro Lycée Louise Michel BTS IG DA Programmes compilés Avantages - rapides à l’exécution - code source inutile pour l’exécution (on peut vendre un programme compilé sans donner le code : on ne risque pas (ou moins) de se faire copier) Inconvénient un programme est compilé dans un langage machine donné : il ne va fonctionner que sur les ordinateurs dont le processeur connaît ce langage machine. Ex : un programme compilé pour Mac ne marchera pas sur PC. On dit qu’un programme compilé n’est pas portable. - Programmes interprétés Avantage - un programme interprété peut être exécuté sur n’importe quelle machine qui possède un interpréteur du langage, quelque soit le type de langage machine (puisque c’est l’interpréteur qui traduit dans le langage de la machine) Inconvénients - lents car chaque instruction doit d’abord être traduite par l’interpréteur avant d’être exécutée. - l'exécution est basée sur le code source donc celui-ci doit être fourni au client qui peut s’en servir à mauvais escient Et Java dans tout ça ? Java est un langage hybride, à la fois compilé et interprêté. On dit qu’il est semi-compilé. Pour simplifier, disons qu’un programme Java est compilé dans un langage qui devra ensuite être interprété. Le résultat de la compilation n’est pas du langage machine directement exécutable (propre au processeur), mais un code intermédiaire appelé byte-code. Le byte-code est intermédiaire entre le code source et le langage machine. Pour exécuter le programme, le byte-code est interprété par un interpréteur appelé machine virtuelle Java (MVJ). Toutes les machines actuelles possèdent une MVJ. Ainsi, le byte-code d’un programme peut être exécuté sur n’importe quel ordinateur (possédant une MVJ) alors qu’un programme compilé en langage machine n’est exécutable que sur un seul type de processeur. C’est pour cela que le langage Java est un langage portable. En outre, le langage Java a été conçu pour être utilisable avec Internet. Il existe deux types de programmes java pour internet : - les applets, petit programme incorporé aux pages web et exécuté localement par le navigateur du client (les applets se rapprochent des scripts Javascript) - les servlets, qui sont des programmes Java s'exécutant côté serveur et qui permettent de répondre à des requêtes http envoyées par un navigateur client. Cycle de vie d’un programme Java - Pour écrire le code source d’un programme Java, n’importe quel éditeur de texte convient, pourvu que le texte ne soit pas formaté. Le Bloc Note est bien adapté car il est chargé très rapidement et ne permet pas le formatage du texte. - Le fichier source doit être enregistré avec l’extension .java (au lieu de .cpp en C++) et porter le même nom que la classe (ou la classe qui contient la fonction principale main s’il y en a plusieurs) - Le compilateur s’appelle javac. Pour compiler un programme java, on utilise une fenêtre DOS (ou du langage de commande de NT) et on tape la commande : javac NomDuProg.java 2/7 S. Laporte Java intro Lycée Louise Michel BTS IG DA - La compilation génère des fichiers de byte-code avec l’extension .class, dans le même répertoire que le fichier source. Chaque classe du fichier donne lieu à la création d’un fichier .class Ensuite, l’exécution diffère selon que le programme écrit est une application, une applet ou une servlet - une application Java est un programme indépendant du Web, exécuté en local (comme tous les programmes C++ que l’on a écrit ), lancé localement sur la machine - une applet Java est un programme destiné à être inséré dans une page Web. Une applet est exécutée par le client (comme les programmes). C’est le fichier compilé en byte code qui est envoyé au client (et non le fichier source comme dans le cas de javascript). Dans une page Web, une applet est considérée comme une image - une servlet Java est un programme exécuté sur le serveur, qui permet de répondre à une requête d'un client http. Une servlet reçoit une requête http avec des données (paramètres), elle traite ses données (souvent accès à une BD) et la plupart du temps elle renvoie une réponse sous la forme d'une page web dynamique. Exécution d’une application Pour exécuter une application Java (un programme indépendant du Web), on peut utiliser la MVJ qui s’appelle java, avec la commande : java NomDuProg Eventuellement, le nom du programme peut être suivi de paramètres (chaînes) à passer au programme Editeur de texte : Bloc-Note Ecriture du code source *.java Compilateur en ligne de commande: javac Compilation *.class Interprétation et exécution Machine virtuelle java Exécution d’une applet Pour exécuter une applet, il faut évidemment qu’elle soit intégrée dans une page Web.. L’exécution de l’ applet se fait automatiquement après chargement de la page Web. Ce qui est intégré dans la page, c’est le nom fichier semi-compilé(.class). Au moment du chargement de la page, le fichier semi-compilé est envoyé au client, et c’est la MJV du 3/7 S. Laporte Java intro Lycée Louise Michel BTS IG DA navigateur qui exécute le byte code. L’applet est donc exécutée par le client et non par le serveur (contrairement aux programmes en ASP ou PHP). Pour intégrer un applet dans une page Web , il faut l’avoir préalablement semi-compilé. Dans la section BODY, à l’endroit où l’on veut insérer l’applet, on intègre le .class avec les balises suivantes : <APPLET CODE = « NomDuProg.class » WIDTH = largeur HEIGHT = hauteur> </APPLET> Excécution d'une servlet C'est le serveur web, recevant une requête http, qui va lancer automatiquement la servlet chargée de traiter la requête http. On peut dire que c'est l'internaute qui lance la servlet. Structure d’un programme Java Un programme Java est constitué d'un ensemble de classes. Aucune partie de code ne peut être écrite en dehors d’une classe. Cela vient du fait que, contrairement au C++, Java est un PUR langage orienté-objet. Même la fonction main( ), point d’entrée des applications Java est incluse dans une classe. Le fichier .java doit obligatoirement porter le nom de la classe (ou si il en a plusieurs, le nom de celle qui est publique). Une application Java (programme non inclus dans un page Web) doit toujours posséder une classe contenant une méthode appelée main . Cette fonction est celle qui est exécutée en premier et qui appelle toutes les autres (c’est le programme principal en quelque sorte). Plus précisément elle commence ainsi : public static void main (String args[ ]) tableau de chaînes qu'on peut passer en paramètre du programme principale dans la commande d'exécution. Exemple d’une application Java Cette application se contente d’afficher Bonjour à l’écran public class Bonjour //le fichier doit s’appeler Bonjour.java { public static void main (String args[ ]) //fonction principale { System.out.println(“Bonjour”); } } Une applet quand à elle doit contenir une fonction appelée paint, chargée de dessiner l’image du résultat de l’applet dans la page Web. Une applet ne doit pas contenir de fonction main( ). C’est la fonction paint qui est cherchée en premier par la MVJ intégrée au navigateur et pas la fonction main( ). 4/7 S. Laporte Java intro Lycée Louise Michel BTS IG DA Exemple d’une applet Java // importation des packages (ensembles de classes) nécessaires pour écrire des //applets import java.awt.Graphics; import java.applet.Applet; public class Bonjour extends Applet { public void paint(Graphics g) { //Le fichier doit s’appeler Bonjour.java // fonction principale pour une applet g.drawString("Bonjour ! ,10, 10); //chaque affichage se fait dans une //« fenêtre » avec une largeur et une hauteur en pixels } } Cette applet, pour être exécutée, devra être insérée dans une page Web qui pourrait ressembler à ceci : <HTML> <HEAD> <TITLE>Page HTML support de l'applet Bonjour</TITLE> </HEAD> <BODY> <APPLET CODE="Bonjour.class" WIDTH=100 HEIGHT=50> Votre navigateur ne supporte pas les applets ! (ceci est le message qui s’affiche par défaut dans le cas où le navigateur ne sait pas exécuter les applets) </APPLET> </BODY> </HTML> SYNTAXE DU LANGAGE JAVA Comparaison avec le C++ Principaux points communs - Les instructions sont terminées par un ; - Les blocs sont délimités par des accolades { } - Les commentaires sur une ligne commencent par // et ceux qui sont sur plusieurs lignes sont délimités par /* */ - Distinction majuscules-minuscules - Les opérateurs sont les mêmes : o = (affectation) o +-*/ o ! (non) &&(et) ||(ou) o != (différent) == (égal) <= >= < > o ++ incrémentation - Les boucles et les structures conditionnelles sont les mêmes o for(initialisation ; condition de continuation ; incrémentation) { … } o while (condition d’entrée) {…} o do {…} while (condition de continuation) 5/7 S. Laporte o o o Java intro Lycée Louise Michel BTS IG DA if (condition) … if (condition) … else … switch (expression) { case valeur : …; break; … default …; } - Les types de bases communs sont: o char : caractère o short : petit entier (2 octets) o int : entier (4octets) o long : entier long (8 octets) o float: reel (4 octets) o double : reel long (8 octets) o void : pas de type Principales différences avec le C++ - Le programme principal est une méthode d’une classe (celle qu’on exécute) et pas une fonction séparée. Tout est classe en Java. - La saisie et l’affichage se font totalement différemment. (Voir paragraphe suivant) - Il existe deux types de base supplémentaires: un type byte entier sur un octet et un type boolean prenant pour valeurs true ou false - Les constantes nommées sont précédées du mot clé final au lieu de const - Il n’existe pas de variables globales. Elles sont inutiles car elles peuvent toujours être remplacées par des valeurs d'attribut. - Il n’y a pas de directives de précompilation #include. On utilise import … Afficher et Saisir en Java L’affichage en Java ne se fait pas comme en C++ avec cout. L’instruction d’affichage est la fonction : System.out.print(...) Entre parenthèses, on met ce qu’on veut afficher. L’opérateur de concaténation ‘+’ permet de concaténer l’affichage de plusieurs « choses » différentes (chaines littérales, contenu de variables ou valeurs d’attributs...). Pour passer à la ligne automatiquement après l’affichage, il suffit d’ajouter ln à print. C’est cette fonction que l’on utilise le plus souvent. System.out.println(...) La saisie en Java n’est pas aisée, du moins si l’on ne veut pas utiliser de librairie. En effet, de base, Java ne sait saisir qu’un caractère à la fois. Il n’est pas capable de saisir une chaine de caractère entière. 6/7 S. Laporte Java intro Lycée Louise Michel BTS IG DA Pour communiquer des données à un programme Java, le plus simple est encore d’utiliser les arguments (paramètres) en ligne de commande ou alors d’utiliser une classe qui permet de saisir des chaines de caractères, comme la classe Console. Utiliser les arguments en ligne de commande La signature de la fonction principale est public static void main(String args[ ]) Entre parenthèses, on trouve un paramètre qui est un tableau appelé args de String. Ce tableau, comme tous les tableau en Java, n’a pas de nombre d’élément prédéterminé. Il est créé automatiquement à l’exécution du programme, et chacun de ses éléments est valorisé par les chaines que l’on écrit après la commande d’exécution (par exemple java Bonjour). Si on ne met rien après cette commande d’exécution, le tableau restera vide, tout simplement. Si on écrit par exemple : Java Bonjour toto 22 Bobigny alors le tableau args sera valorisé comme suit : args[0] = « toto » args[1] = « 22 » args[2] = « Bobigny » et la propriété args.length est valorisée à 3 7/7