Le Java premiers pas
Le menu La notion de portabilité Rappel aux compilateurs “classiques“ La machine virtuelle de Java Microsoft Visual J++ (l’IDE utilisé) Les classes sous Java Types, identificateurs, variables 11/16/2018 cours 2
Le plate-forme (définition préalable à la portabilité) La plate-forme est une notion vague. On dira qu’une plate-forme est un ensemble du matériel (CPU, mémoire, bus, unités d’entrée-sortie, etc.) et un système d’exploitation Exemple 1: ordinateur PC + Win 95 Exemple 2: ordinateur Apple + Mac OS 10 Exemple 3: station de travail SUN + Solaris 11/16/2018 cours 2
La portabilité (hordozhatóság) On peut parler de la portabilité d’une application. Une application est dite portable si on peut la lancer sur une plate-forme différente sans modification et si on obtient un comportement identique sur les différentes plate-formes. 11/16/2018 cours 2
Les avantages de portabilité On écrit le code une seule fois. On teste le code une seule fois. On élimine les erreurs une seule fois. On gagne du temps. On gagne de l’argent. Comment écrire des applications portables? On utilisera Java. 11/16/2018 cours 2
Compilateurs classiques Compilateur classique d’un langage de haut niveau (le cas du C) Code du langage haut niveau compilateur Code machine dépende de la machine et du SE dépende de la machine et du SE Exécutable sur une plate-forme 11/16/2018 cours 2
Compilateurs classiques Il faut un compilateur différent pour chaque architecture et pour chaque système d’exploitation différent il faut une nouvelle compilation sur chaque “plate-forme” d’un code différent l’exécutable n’est pas réutilisable sur un nouveau plate-forme: un programme 11/16/2018 cours 2
La machine virtuelle de Java – la clé de la portabilité on cache les particularités des plate-formes par une machine virtuelle la machine virtuelle est un interpréteur la machine virtuelle accepte des instructions standards indépendamment de la plate-forme le code tournant sur la machine virtuelle est le « code byte » (bájtkód) 11/16/2018 cours 2
La machine virtuelle de Java compilateur + interpréteur machine virtuelle Compilateur Java Interpréteur Java Code JAVA Code byte Code machine Indépendant de la plateforme 11/16/2018 cours 2
La machine virtuelle de Java une machine virtuelle est fournie avec Windows pour des autres plate-formes, vous pouvez la télécharger gratuitement de http://java.sun.com/ Java Virtual Machine = JVM 11/16/2018 cours 2
Une application Java le code est un ensemble des classes chaque classe correspond à un fichier texte (extension par défaut : .java) lors de la compilation, chaque fichier .java est compilé en code byte, le fichier correspondant est un fichier .class Les fichiers .class sont portables 11/16/2018 cours 2
Environnements de développement de Java Jpad – sans éditeur de GUI Sun Java Studio Creator (avec editeur, payant) Oracle Jdeveloper (avec editeur GUI, gratuit) Microsoft Visual J++ (avec éditeur GUI, les contribuables payent à votre place) 11/16/2018 cours 2
Environnement de développement JAVA utilisé Microsoft Visual J++ (version 6.0) membre de la famille MS Visual Studio disponible au HSZK le même environnement (enfin presque) est utilisé pour C, C++, Basic, (Fortran) les autres logiciels de développement visuel (Borland C Builder, Delphi, etc.) suivent les mêmes principes 11/16/2018 cours 2
Un projet en Java Un programme est composé de plusieurs classes et donc fichiers. Chaque classe est un fichier Le projet est l’ensemble de tous les fichiers avec du code, avec des interfaces graphiques d’utilisateur (GUI), etc… un élément du projet est un “item” 11/16/2018 cours 2
Lancer VS J++ sln - extension d’un fichier décrivant un projet 11/16/2018 cours 2
Lancer VS J++ (suite) 11/16/2018 cours 2
Le premier programme sous Java Une seule classe, une seule méthode La seule classe s’appelle Class1 public class Class1 { public static void main (String[] args) /* Ce programme ne fait rien */ } La seule méthode est main C’est un commentaire Ouverture d’un bloc { Fermeture d’un bloc } 11/16/2018 cours 2
Règles générales pour une application (non valables pour les applettes) Dans chaque programme, il y a une classe avec une méthode main. Quand on lance le programme, l’exécution de cette méthode est commencée. Le code d’un programme est composé des blocs (comme en C!). Les blocs sont limités par { }. (comme en C!) 11/16/2018 cours 2
Commentaires et couleurs Commentaires: à les utiliser abondamment! Dans une ligne : // Dans plusieurs lignes : /* */ Couleurs mots clés : bleu commentaires : vert 11/16/2018 cours 2
Compiler et lancer un programme Compiler = Build (raccourci - Ctrl+Shift+B) Lancer = Debug/Start (raccourci - F5) 11/16/2018 cours 2
Deuxième programme Ecriture sur le console: println public class PP { public static void main (String[] args) System.out.println("Bonjour tous le monde!"); } Fenêtre de console (Java View) 11/16/2018 cours 2
Troisième programme programme précédent plus attente sur Enter public class PP { public static void main (String[] args) System.out.println("Bonjour tous le monde!"); /* on attend le lecteur de qqc. */ try {System.in.read();} catch (java.io.IOException e) {/* on ne fait rien */ } } try {instruction} = essayer d’éxecuter l’instruction qui peut causer des erreurs catch (erreur) {gestion d’erreur} = en cas d’erreur, le code dans la partie gestion d’erreur est executé 11/16/2018 cours 2
Différences par rapport au C? boucles for do .. while exécution conditionnelle if .. else switch .. case sous-programmes 11/16/2018 cours 2
Une bonne nouvelle? Il n’y a pas de pointeurs en Java! on élimine une source d’erreur potentielle mais comment réaliser la gestion dynamique de la mémoire (listes) ? On donnera la réponse à la question plus tard. 11/16/2018 cours 2
boucle for public class Class1 initialisation de la boucle { public static void main (String[] args) System.out.println("\n Les dix nombres premiers"); for (int i=0; i<11 ; i++ ) { System.out.print(i+", ");} System.out.println("fin"); try {System.in.read();} catch (java.io.IOException e) {/* on ne fait rien */} } initialisation de la boucle condition d’exécution du noyau expression noyau i est un variable du type entier 11/16/2018 cours 2
la boucle for la plus simple noyau vide s’exécute indéfiniment (la condition d’exécution est vraie par défaut) pour sortir de la boucle, on peut utiliser l’instruction break; 11/16/2018 cours 2
exercices écrivez une boucle for qui affiche tous les nombres paires plus petits que 100 écrivez une boucle for qui calcule 6! et affiche le résultat aide: int fact = 1 indtroduit la variable fact et l’initialise à 1 11/16/2018 cours 2
Solution du calcul de 20! public class Class1 { public static void main (String[] args) { // calcul de 20! long fact = 1; for (int i=1; i<21; i++){fact = fact*i;} System.out.println(fact); try {System.in.read();} catch (java.io.IOException e){} } 11/16/2018 cours 2
boucle do .. while test au début test à la fin condition condition public class Class1 { public static void main (String[] args) byte i = 20; while (i>0) { System.out.print("*"); i--;} try {System.in.read();} catch (java.io.IOException e){} } public class Class1 { public static void main (String[] args) byte i = 20; do {System.out.print("*"); i--;} while (i>0); try {System.in.read();} catch (java.io.IOException e){} } condition condition 11/16/2018 cours 2
exécution conditionnelle if .. else public class Class1 { public static void main (String par[]) long b = 10L; if (b>100L) System.out.println("grand nombre"); else System.out.println("petit nombre"); try{System.in.read();} catch(java.io.IOException e){} } 11/16/2018 cours 2
exécution conditionnelle case public class Class1 { public static void main (String[] args){ int a = 4; switch (a) { case 6 : System.out.print("*"); case 5 : System.out.print("*"); case 4 : System.out.print("*"); case 3 : System.out.print("*"); case 2 : System.out.print("*"); case 1 : System.out.print("*"); } try{System.in.read();} catch(java.io.IOException e){} point d’entrée : tous les instructions qui suivent sont exécutées 11/16/2018 cours 2
Sous-programmes Type_de_retour nom(paramètres) {code} public class Class1 { public static void main (String[] args){ int a = 2; int b = 3; int c =0; c = multiplie(a,b); affiche(c); } public static int multiplie(int x, int y) { return x*y; public static void affiche(int z) { System.out.print(z); Type de retour : int Résultat du SP : return SP sans retour : void 11/16/2018 cours 2
les types (primitifs) de Java Tous les autres types sont des classes (types non-primitifs) 11/16/2018 cours 2
identificateurs un identificateur peut contenir des lettres, des chiffres et les caractères $, _ sous Java, les minuscules et les majuscules sont distingués Ident # ident un identificateur commence par une lettre un identificateur ne peut pas être un mot clé 11/16/2018 cours 2
variables Les variables doivent être décarées. Une variable peut être déclarée partout. On ne peut pas effectuer des opérations sur une variable non-initialisée. Le domaine de validité d’une variable est le bloc où elle est déclarée. 11/16/2018 cours 2
tableaux exemples int nombres[][]; int vecteur = new int[13]; tableaux des entiers de deux dimensions (sans limite sur les indices) exemples int nombres[][]; int vecteur = new int[13]; long[] donnees = new long[100]; tableaux des entiers ayant 13 éléments tableaux des entiers longues ayant 100 éléments 11/16/2018 cours 2