Plan de cours
Introduction JAVA Concept Objet:
Classe, Objet, Hritage, abstraction, interfaces Exceptions et Entres/sorties Gnriques (types paramtrs) Programmation concurrente (threads, synchronisation) JDBC et API Java pour XML Java Servlet, JSP & JSLT JSF (JavaServer Faces) Hebirnate et JPA Maven,
Introduction : un peu d'histoire Compilateur et Interprteur Bytecode et VMJ Normes de nommage en Java Types de base et Type String Tableaux Interactivit (cran/clavier) Mthode et passage des arguments Oprateurs Structures de contrle et Boucles Premier programme JAVA
But : dtudier limpact de la convergence entre les systmes embarqus et les ordinateurs. 1956 une dmonstration trs importante dun navigateur capable de montrer du contenu html mlang des applets.
Versions JAVA
Les versions se succdrent alors :
1996 : JDK 1.0 1997 : JDK 1.1 1998 : JDK 1.2, appel Java 2 2000 : JDK 1.3 2002 : JDK 1.4 2004 : JDK 1.5, appel Java 5 2007 : JDK 1.6, appel Java 6. 2011 : JDK 1.7, appel Java 7. Java 8 est attendu en Mars 2014
JAVA aujourd'hui
Trois environnements d'excutions diffrents
1. Java SE (Standard Edition) pour desktop 2. Java EE (Entreprise Edition) pour serveur
Servlet/JSP/JSTL/JSF JTA/JTS, EJB, JMS, JavaMail, etc.
Classe:
24/09/2013
Vehicule
FormeGeometrique
R. Ezzahir
Animal
7
Programme JAVA
Tout programme a au moins une classe.
class Animal {
//
fonction main.
24/09/2013 R. Ezzahir 8
Compilateur et Interprteur
traducteurs de langage de programmation de haut niveau en sries dinstructions-machine directement excutables par lordinateur.
ensemble : tout le programme doit tre fourni en bloc au compilateur pour la traduction
linterprteur traduit les programmes instruction
Editeur de lien
010
Plateforme + OS
Le code est compil dans un code intermdiaire (byte-code) La Machine Virtuelle charge les classes et interprte le code VM
Plateforme + OS
Salam.class b- ! p qs tu twxy<iit>b()
Salam.java public class Salam { public static void main (String[] args) { System.out.println("Salam Alaykom!"); } } commande : java Salam Salam Alaykom!
Linterprteur Java sappelle la machine virtuelle Java (Java Virtual Machine (JVM))
Bytecode
Bytecodes Java langage intermdiaire entre
compilation et excution.
Le terme bytecode vient de byte car chaque instruction
de la VMJ est code laide dun byte ( chaque instruction correspond un opcode de 8 bits).
Exemple : laddition de deux entiers est reprsent par
Indpendance de la plateforme
Le byte-code assure la portabilit entre
bytecode
VM MacOS
VM Linux
VM Windows
Indpendance de la plateforme
JVM JVM Atari JVM Macintosh JVM Sun Sparc JVM DEC Alpha JVM PC Pentium
Java : La JVM pour processeurs Intel ou AMD peut interprter du bytecode gnr sur C++ : le code sur Pentium est inutilisable sur Sparc (sauf ventuelle cross-compilation)
Nom de classe :
HelloWorld
Types de base
Sont utiliss pour dclarer les variables
int i = 121; char car = C; double x = 12.98705;
Types de base
Type de base
boolean byte short int long float double char
Type
boolen entier entier entier entier virgule flottante virgule flottante caractre
Nombre de bits
32 (effectifs) 8 16 32 64 32 64 16
Valeurs possibles
true et false signes signes signes signes IEEE 754 IEEE 754 Unicode
Convention de nommage pour les constantes : on utilise des lettres majuscules, au besoin spare par les _.
Typage fort
type diffrent
Pourquoi?
Utilisation efficace de la mmoire Vrification de la logique du programme
Le type String
Une chane de caractres est dclare avec le mot-cl String Ce nest pas un type de base Il se manipule comme un type de base Ce nest pas quivalent un tableaux de caractres
Les tableaux
Deux syntaxes pour lallocation :
int[] monTableau = new int[10]; int monTableau[] = new int[10];
Initialisation dynamique :
int[] monTableau = new int[10]; for (int i = 0; i < param.lenght ; i++){ param[i]= i; }
Type volu
String s = "Salam!"; int [] t = {1, 2, 3};
S t
/0xFF0D
/0xAF01
Salam!
Entres-Sorties
Un minimum dinteractivit...
Affichage : System.out.print(...) / System.out.println(...) : prdfinis dans Java Lecture (dun entier) :
import java.util.Scanner ;
Mthodes statiques
Avant ltude du concept dobjets on ne peut utiliser que des variables et mthodes statiques dans une classe. Toute mthode statique dune classe peuvent tre invoque depuis nimporte quelle autre mthode statique de la classe
Pour invoquer mthode dune autre classe il faut la prfixer par NomClasse.
Ne pas oublier import pour les classes dun autre package que java.lang import java.util.Arrays
Surcharge (exemple) :
void affiche (int arg) ; void affiche (double arg) ; void affiche (int arg1, int arg2) ;
Mais il est possibilit davoir des mthodes avec des signatures identiques dans des classes diffrentes
la faon suivante
La mthode m est souvent appele mthode auxiliaire
Passage par valeur : type m(typedeBase arg) ; m(x) x ne peut pas tre modifi par m
Passage dune rfrence (par valeur aussi) : type m(typeObjet arg) ; m(x) la rfrence x ne peut pas tre modifie par m m(x) lobjet rfrenc par x peut tre modifi par m
Quiz
Soit la situation suivante (pseudo-code) o Type
Quiz
Quiz
1 tab \xFD0A
class Test { public static void main(String[] args) { int[] tab = {1}; m(tab); System.out.println(" tab[0]= " + tab[0]); } static void m(int[] x) { int[] t = {100}; x = t; //Modification de la rfrence //(on met une autre adresse dans x) System.out.print("x[0]= " + x[0]); } }
100
x \xFFCC
t \xFFCC
Quiz
Quaffiche le code suivant ?
class Test { public static void main(String[] args) { int[] tab = {1}; m(tab); System.out.println(" tab[0]= " + tab[0]); } static void m(int[] x) { x[0] = 100; // modification de lobjet rfrenc System.out.print("x[0]= " + x[0]); } }
Oprateurs
Priorits (par ordre dcroissant, tous les oprateurs dun mme groupe sont de priorit gale) : ! ++ --, * / %, + -, < <= > >=, == !=, ^ &&, ||
Notation abrge : x = x <op> y, o <op> est un oprateur arithmtique, peut aussi scrire : x <op>= y (exemple : x += y)
Test conditionnel
class Test { public static void main (String args[]) { int compteur = 0; if (compteur == 0) { debut = true; System.out.println("Dbut de la partie"); } else if (compteur ==10) System.out.println("Fin de la partie"); else System.out.println("Partie en cours"); } }
Boucles while
class Test { public static void main (String args[]) { int c; do { System.out.println("Entrez un nombre < 10"); c= lireUnInt(); } while (c>10); while (c>0) afficher (c--); } } public static int lireUnInt() {} public static void afficher (char c) {} }
Boucles for
class Test { public static void main (String args[]) { int i; for (i=0 ; i <=5 ; i++) { System.out.println (i); } for (int j=0 ; j <=5 ; j++) { System.out.println (i); } // i est accessible // j nest pas accessible }}
Switch
import java.io.IOException; class Test { public static void main (String args[]) throws IOException { char c = (char) System.in.read(); switch(c) { case 'o': case 'O' : System.out.println("Oui"); break; case 'n' : case 'N' : System.out.println("Non"); break; default : System.out.println("Mauvaise rponse"); break; } Le switch ne sapplique
}}
Quiz
1. Quel est le rsultat du segment de code suivant : short unShort = 0xA000; unShort = unShort>>2; 2. Combien de fois est excute la boucle suivante : for (int i=0; i < 10; i++) i++; 3. Que gnre le segment de code suivant ? double x, y; float z; x = y = 2.0; z = x*y; 4. En C++, le code suivant est lgal, mme sil ne gnre pas forcment les rsultats attendus par le programmeur. Ce code est-il lgal en Java, et comment le transcrire sinon ? int x, y=2; if (x=y) { // ... }
Quiz
5. Que vaut la variable x dans lexemple suivant, selon que la valeur initiale de x est 0, 1 ou 4 ? int x; // ... switch(x) { case 0 : x++; break; case 1 : x++; case 2 : x++; case 3 : x++; break; default : x++; }
la norme de nommage!
Quiz
Donner la ligne de command permettant la compilation
du programme Equation2? Quel est le fichier gnr? Donner la ligne de command pour lexcuter? Vrai ou Faux :
Equation2.java est portable Equation2.class est portable Equation2.class peut tre excuter sur autre machine mme
selle ne dispose pas de JVM. Sur chaque machine (microprocesseur) sinstalle une JVM diffrente. On peut affecter une variable qui nest pas statique lintrieur de la fonction main.