Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
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
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
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
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
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
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
• 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
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
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