Langage Java Plan du cours Historique du
Transcription
Langage Java Plan du cours Historique du
Plan du cours Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin • • • • • • • Historique du langage Nouveautés de Java 7 http://www.oracle.com/technetwork/java/index.html • Java 1.0 (1995) : Oak . . . • Java 1.5.0 (2004) ou Java 5.0 : Tiger • Java 1.6.0 (2006) ou Java 6 : Mustang • Java 7 (2012) : Dolphin • Java 8 (2014) Sous licence GPL depuis 2006 ! Sun est racheté par Oracle en 2010 Trois versions : JavaEE, JavaME et JavaSE Java Runtime Environment (JRE) et Java SDK (JDK) Notions de Génie Logiciel Introduction au langage Java Programmation Orientée Objet Notions complémentaires Quelques API standards Interface graphique en Java FX API pour la recherche d’information • Améliorations de la machine virtuelle • Petites améliorations du langage – ex. : switch sur les chaînes (String), expressions litérales binaires (0b101000101), multi-catch (IOException | SQLException)… • • • • Support des langages dynamiques Nouveau package d’accès aux données API de concurrence (framework Fork/Join) AWT/Swing (transparence, Nimbus…) Nouveautés de Java 8 • Programmation fonctionnelle avec les « lambdas » (paramètres) -> {code} • Ajout de méthodes par défaut pour beaucoup d’interfaces (permet par ex. l’ajout d’une méthode de tri direct pour les collections) • Nouveaux packagex « java.util.function » et « java.util.stream » pour réaliser des opérations fonctionnelles sur des flux (en ligne ou parallèles) • De nouvelles annotations (ex. @FunctionalInterface pour les interfaces dites « fonctionnelles ») • Gestion améliorée des dates et du temps Mon premier programme Dans le fichier Hello.java, écrire : public class Hello { public static void main(String [] arg) { System.out.print(" Hello world "); } } • • • • Ouvrir la ligne de commande (DOS, bash) Se placer dans le répertoire de travail (cd nom_repertoire) Tapez javac Hello.java (création du pseudo code) Puis java Hello (interprétation du pseudo code) Caractéristiques • Langage interprété (bytecode) WORA : Write Once Run Anywhere Code Byte-Code Pseudo compilateur javac Machine virtuelle (JVM) java ! haut niveau ! portabilité Exécution • Langage orienté objet • Gestion des exceptions • Garbage collector ! réutilisabilité ! extensibilité ! robustesse ! intégrité Variables d environnement Sous Windows : • Mise à jour du chemin de la JVM : set path=%path%;c:\Program Files\Java\jdk1.5.0_06\bin • Mise à jour du chemin de recherche des classes : set classpath=%classpath%;. Sous Linux ou MacOS (architecture UNIX) : • Mise à jour du chemin de recherche des classes : export CLASSPATH=$CLASSPATH:. Environnement NetBeans (1) Environnement NetBeans (2) Organisation du projet Code source Environnement NetBeans (3) Environnement NetBeans (4) • Quelques raccourcis TRES utiles : Exécution (texte) du programme – Ctrl + Shift/Cmd + i : import automatique – Cmd + Shift + C : toggle comments – Clic droit + Insert Code – St + tab : String – sout + tab : System.out.println… – ifelse : if (cond.) {} else {} Types de données simples (2) Types de données simples (1) • Entiers (1, 2, 3, …) : int Opérateurs : + - * / % (reste de la divistion) Exemple : 5/2 = 2 et 5%2 = 1 • Réels (2.4, 3.1416, …) : double Opérateurs : + - * / Exemple : 5.0/2.0 = 2.5 • Booléens (true, false) : boolean Opérateurs : && (and), || (or), ! (not) Exemple : !true = false Note : pas de type simple pour les chaines de caractères Caractères spéciaux \ caractère d échappement pour introduire caractères spéciaux '\t' tabulation '\n' nouvelle ligne '\r' retour chariot retour arrière '\f' saut de page … '\\' '\ ' '\" \u03a9 ( \u suivi du code hexadécimal à 4 chiffres d un caractère Unicode) Type Codage Domaine Char 2 octets caractère Unicode int 4 octets [-231, 231-1] long 8 octets [-263, 263 -1] byte 1 octet [-27 , 27 -1] short 2 octets [-215, 215-1] float 4 octets [3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets [1.7 10-308 , 1.7 10+308] en valeur absolue boolean 1 bit true, false String référence d'objet chaîne de caractères Date référence d'objet date Types de données simples (3) • Déclaration de variables : int i; i Nom de la variable, représente un espace mémoire. Type de la variable, ce que peut contenir l’espace mémoire. • i Affectation : i = 10; i = i + 1; int j = 11; 10 Valeurs i 11 Types de données simples (4) • Opérateurs de comparaison : Opérateurs d entrées / sorties • <, <=, >, >=, !=, == ! ne pas confondre avec = System.out.print("Ecrit à l'écran"); System.out.println("Et passe à la ligne"); boolean ← var_type_1 opérateur var_type_1 • Exemple : commentaire Classe Lire (fichier Lire.java) : • Lecture d’un entier : Lire.i(); • Lecture d’un réel : Lire.d(); Enregistrer dans le même répertoire que votre programme. Structures de contrôle (1) Branchement conditionnel : Structures de contrôle (2) Exemple (saisie d’information) : Syntaxe : if (condition) { instructions } else { instructions } Entrée : System.in.read( … ); boolean b = (5<2); // b = false • Sortie : public class Saisie { if (condition) public static void main(String [] arg) { System.out.println(“Pause ?"); int reponse = Lire.i(); if (reponse==1) System.out.println(“Non, continuons."); else System.out.println(“Oui, dans 1 heure."); } instruction else instruction (facultatif) } Structures de contrôle (3) • Branchement multiple : Syntaxe : Structures de contrôle (4) • Nouveauté Java 7 : String supportée switch (variable_énumérable) { case valeur_1 : instructions break; Ne pas oublier ! case valeur_2 : instructions break; default : Tous les autres cas instructions } L exécution est contrôlée par un indice ⇒ nombre d itérations connu à l avance. Syntaxe : Exécuté 1 fois Exemple : for (indice=0; indice<30; indice++) { System.out.println(indice); // réalisée 30 fois } L exécution est contrôlée par une condition ! nombre d itérations inconnu par avance. Syntaxe : (On peut ne pas rentrer) Problème : o Programme trop long o Copier/Coller • Solution : Créer des blocs isolés réutilisables = fonctions et procédures Continue tant que condition = vrai while ( condition ) { instructions; } Fonctions et procédures (1) • Boucles conditionnelles : Exécuté à chaque fois for ( initialisation ; condition_de_boucle ; évolution ) { instructions; } Continue tant que condition = vrai Structures de contrôle (5) • Boucles indicées : do { instructions; } while ( condition ) (On rentre au moins une fois) Syntaxe : public class nom_classe { … public static type_retour nom_fonction(type_param nom_param1, …) { instructions; return valeur; } … } Fonctions et procédures (2) Fonctions et procédures (3) Exemple : • public class UneFonction { public static double la_fonction(int param_1) { System.out.println("Paramètre de la fonction: "+ param_1); return param_1*2; } public static void main(String arg[]) { System.out.println("Avant l'appel"); int pour_fonction = 23; int resultat_fct = la_fonction(pour_fonction); System.out.println("Résultat de la fonction: "+resultat_fct); } Procédure : o Type retour vide ! void o Pas d’instruction return Exemple : public static void main( … ) } Avant l’appel Paramètre de la fonction: 23 Résultat de la fonction: 46 Tableaux (1) Tableaux (2) • Déclaration : • Autres : type[] nom_tableau; ⇔ type nom_tableau []; t_d ∅% Ex.: double[] t_d; t_d.length t_d Exemple : Ex.: t_d = new double[4]; • Accès aux cellules du tableau : o Ecriture : o Lecture : t_d[0] = 3.2; double d = t_d[0]; double t_d[] = {0.3,9.0,1.2,4.6 }; o Taille du tableau : • Instanciation : nom_tableau = new type [taille]; o Instanciation à la volée : t_d t_d[0] 3.2 d 3.2 t_d[3] for (int i=0;i<t_d.length;i++) { System.out.println("valeur case ” + i + ":" + t_d[i]); } Projet : une base d’actualité • Objectif des TDs : – Construire un système d’information pour stocker et interroger des news – Noyau du projet qui sera demandé pour l’évaluation de cet enseignement • Plusieurs étapes : – TD1 : squelette du SI sans interface graphique – TD2 : héritage, flux, manipulation de chaînes de caractères, ajout d’une interface graphique – TD3 : indexation des textes avec Lucene Plan du cours • • • • • • • Notions de Génie Logiciel Introduction au langage Java Programmation Orientée Objet Notions complémentaires Quelques API standards Interface graphique en Java FX API pour la recherche d’information Petite démonstration