KHARKIV National University of Economic Université Lumière...

9
Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin Université Lumière Lyon 2 KHARKIV National University of Economic Plan du cours 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 Historique du langage https://www.baeldung.com/oracle-jdk-vs-openjdk 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 Oracle JDK Java SE 8 (2014) free public updates -> 2020 ... Java SE 11 (sept. 2018) (dernière LTS) OpenJDK (JDK project) OpenJDK 8 (2014) ... OpenJDK 9 (2017) JDK 10 (mars 2018) JDK 11 (sept 2018) 2010 Et aussi Trois versions : JavaEE, JavaME et JavaSE Différence entre Java Runtime Environment (JRE) et Java SDK (JDK) Oracle JDK Oracle Binary Code License Agreement -> GPL v2 + CPE besoin d’une licence commerciale plus stable Open JDK GNU General Public License (GNU GPL) complètement open source, utilisable librement développé par Oracle, JDK et la communauté Java

Transcript of KHARKIV National University of Economic Université Lumière...

Page 1: KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

Introduction au

Langage JavaMaster Informatique 1ère année

Julien Velcinhttp://mediamining.univ-lyon2.fr/velcin

Université Lumière Lyon 2KHARKIV National University of Economic Plan du cours

• 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

Historique du langagehttps://www.baeldung.com/oracle-jdk-vs-openjdk

• 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

Oracle JDK• Java SE 8 (2014)

free public updates -> 2020...

• Java SE 11 (sept. 2018)(dernière LTS)

OpenJDK(JDK project)• OpenJDK 8 (2014)...• OpenJDK 9 (2017)• JDK 10 (mars 2018)• JDK 11 (sept 2018)

2010

Et aussi

• Trois versions : JavaEE, JavaME et JavaSE

• Différence entre Java Runtime Environment(JRE) et Java SDK (JDK)

• Oracle JDK– Oracle Binary Code License Agreement -> GPL v2 + CPE

– besoin d’une licence commerciale

– plus stable

• Open JDK– GNU General Public License (GNU GPL)

– complètement open source, utilisable librement

– développé par Oracle, JDK et la communauté Java

Page 2: KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

Caractéristiques

• Langage interprété (bytecode)WORA : Write Once Run Anywhere

• Langage orienté objet• Gestion des exceptions• Garbage collector

Code Byte-Code

Pseudo compilateurjavac

Machine virtuelle(JVM) java

Exécution

â haut niveauâ portabilité

â réutilisabilitéâ extensibilité

â robustesseâ intégrité

Dans le fichier Hello.java, écrire :

• 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)

public class Hello{

public static void main(String [] arg){System.out.print(" Hello world ");}

}

Mon premier programme

Variables d�environnementSous 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)

Organisation du projet

Page 3: KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

Environnement NetBeans (2)

Code source

Environnement NetBeans (3)

Exécution (texte) du programme

Environnement NetBeans (4)

• Quelques raccourcis TRES utiles :

– 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 {}

Environnement ECLIPSE (1)

Organisation du projet

Page 4: KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

Environnement ECLIPSE (2)

Code source

Environnement ECLIPSE (3)

Organisation de la classe

Environnement ECLIPSE (4)

Exécution (texte) du programme

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, …) : doubleOpérateurs : + - * /Exemple : 5.0/2.0 = 2.5

• Booléens (true, false) : booleanOpérateurs : && (and), || (or), ! (not)Exemple : !true = false

Note : pas de type simple pour les chaînes de caractères

Page 5: KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

Types de données simples (2)

Type Codage DomaineChar 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

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�uncaractère Unicode)

Types de données simples (3)

i

10i

11i

Valeurs

• Déclaration de variables :

int i; Nom de la variable,représente un espace mémoire.

Type de la variable,ce que peut contenir l’espace mémoire.

• Affectation :i = 10;i = i + 1;

int j = 11;

Types de données simples (4)• Opérateurs de comparaison :<, <=, >, >=, !=, ==

boolean ¬ var_type_1 opérateur var_type_1

Exemple :

boolean b = (5<2); // b = false

â ne pas confondre avec =

commentaire

Page 6: KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

Opérateurs d�entrées / sorties• Sortie :System.out.print("Ecrit à l'écran");System.out.println("Et passe à la ligne");

• Entrée :System.in.read( … );

Utiliser la classe Scanner du package java.util :Scanner scan = new Scanner(System.in);int i = scan.nextInt();String s = scan.nextLine();

Structures de contrôle (1)• Branchement conditionnel :

Syntaxe :

(facultatif)

if (condition){

instructions}else{instructions}

if (condition)

instruction

else

instruction

Structures de contrôle (2)Exemple (saisie d’information) :

public class Saisie {

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.");}

} Tous les autres cas

Ne pas oublier !

Structures de contrôle (3)• Branchement multiple :

Syntaxe :

switch (variable_énumérable) {case valeur_1 :

instructionsbreak;

case valeur_2 :instructionsbreak;

default :instructions

}

Nouveauté Java 7 : String supportée

Page 7: KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

• Boucles indicées :L�exécution est contrôlée par un indice Þ nombre d�itérations

connu à l�avance.Syntaxe :

Exemple :

Structures de contrôle (4)

for (indice=0; indice<30; indice++) {System.out.println(indice); // réalisée 30 fois}

Exécuté 1 fois Exécuté à chaque fois

Continue tant que condition = vrai

for ( initialisation ; condition_de_boucle ; évolution ) {instructions;}

Structures de contrôle (5)• Boucles conditionnelles :L�exécution est contrôlée par une condition

â nombre d�itérations inconnu par avance.Syntaxe :

while ( condition ){instructions;}

Continue tant que condition = vrai

do {instructions;} while ( condition )

(On peut ne pas rentrer) (On rentre au moins une fois)

Fonctions et procédures (1)• Problème :

o Programme trop longo Copier/Coller

• Solution :Créer des blocs isolés réutilisables = fonctions et procédures

Syntaxe :public class nom_classe {

…public static type_retour nom_fonction(type_param nom_param1, …){

instructions; return valeur;

}…

}

Fonctions et procédures (2)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);

}}

Avant l’appelParamètre de la fonction: 23Résultat de la fonction: 46

Page 8: KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

Fonctions et procédures (3)• Procédure :

o Type retour vide â voido Pas d’instruction return

Exemple :

public static void main( … )

Tableaux (1)• Déclaration :

type[] nom_tableau; Û type nom_tableau [];

Ex.: double[] t_d;

• Instanciation :nom_tableau = new type [taille];

Ex.: t_d = new double[4];

• Accès aux cellules du tableau :o Ecriture : t_d[0] = 3.2;

o Lecture : double d = t_d[0];

3.2

d

t_d

t_d

t_d

3.2

t_d[3]t_d[0]

Æ

Tableaux (2)• Autres :

o Instanciation à la volée :double t_d[] = {0.3,9.0,1.2,4.6 };

o Taille du tableau :t_d.length

Exemple :

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

Page 9: KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

Petite démonstration Plan du cours

• 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