Java - JEE - Introduction & Rappels24
Java - JEE - Introduction & Rappels24
COURS DE
Java - JEE
Séances de théorie
Séances de TP sur ordinateur
Évaluation pratique sur ordinateur
Examen sur le contenu du cours
Projet par groupes de 2 ou 3.
2
Software Requirement
[Java Environment]
Java (SE) 6 or higher http://www.java.com/
[Web application container]
Apache Tomcat 5.x or higher
http://tomcat.apache.org/
[Database]
Microsoft Access 2003 or higher
[Integrated Development Environment]
Eclipse
http://www.eclipse.org/downloads/
Introduction & Rappel
Fichier
de Librairies
code
Programme
Compilation Code objet Edition de liens
exécutable
7
Langage interprété
Cas de Java
Avant exécution Exécution
Fichier
Byte code Machine virtuelle
de code Compilation
Java (JVM)
Java
javac MaClasse.class java
MaClasse.java
8
L’API de Java
9
L’API de Java (2)
10
L’API de Java (3)
11
L’API de Java (4)
12
L’API de Java (5)
13
L’API de Java (6)
14
The Java 2 Platform
(91-94)
Plateforme Java2
Java embarqué
•Java 1.0.2
•Java 1.1.1 , 1.1.2, 1.1.3, 1.1.8
•Java 1.2.2
ENSEM Java - JEE 1
Les différents types d’applis
Applications autonomes
Exécutable Données
Les différents types d’applis
Applications déportées
Terminal ou Gestionnaire
d'écrans Données
émulateur
Les différents types d’applis
Applications client/serveur
Exécutable Données
Les différents types d’applis
Navigateur Serveur
HTML/Javascript d'applications Données
Evolution du Web : Applications web
HTML
Technologies du web dynamique
3 solutions :
ASP (.Net) :
Active Server Page
fonctionne uniquement avec un serveur MS Windows
PHP :
PHP Hypertext Processor
gratuit : communauté libre
fonctionne avec tout type de serveur
simple à apprendre
limité (mais nouvelles versions…)
ASP
PHP
Technologies du web dynamique
3 solutions :
Java : Servlets/JSP :
gratuit , mais sous la houlette de Jakarta
fonctionne avec tout type de serveur
programmation objet structurée, modulaire et évolutive
richesse des interfaces
répandu dans les entreprises
peu d’hébergements disponibles
servlet
JSP
25
Les applications Web en Java
26
Web dynamique : principes
2 : le serveur accepte la
1 : le navigateur rassemble connexion reçoit la
les informations du requête, retrouve les
formulaire, il se connecte au informations transmises
serveur et lui transmet ces et recherche les données
informations dans une correspondantes
requête HTTP
4 : le navigateur
affiche la page et 3 : le serveur génère
rompt la connexion dynamiquement une page
avec le résultat, l'envoie
en réponse HTTP au
navigateur
Rappel sur JAVA
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Documentation:
http://docs.oracle.com/javase/11/docs/api/index.html
L'interpréteur java/javaw
Ces deux outils sont les interpréteurs de byte code : ils lancent le JRE, chargent les classes nécessaires et
executent la méthode main de la classe.
java ouvre une console pour recevoir les messages de l'application alors que javaw n'en ouvre pas.
L'outil JAR/WAR
JAR est le diminutif de Java ARchive. C'est un format de fichier qui permet de regrouper des fichiers
contenant du byte-code Java (fichier .class) ou des données utilisées en temps que ressources (images,
son, ...). Ce format est compatible avec le format ZIP : les fichiers contenus dans un jar sont compressés
de façon indépendante du système d'exploitation.
Erreurs…
public class Toto {
1001 1101
Pas d’erreurs… 1110 1101
public static void main (String[] 0011 0110
args){ Compilateur
int i; 0000 0001
for (i = 0 ; i<10 ; i++) JAVA …
System.out.println("Hello World");
} Byte code
}
Hello World
Hello World
Hello World
…
Machine
virtuelle
ENSEM Introduction(JàVJMEE) 6 9
Environnements de
développement
Editeur de texte + lignes de commande
Les éditeurs simples : Jcreator, Emacs, JEdit
Les éditeurs avancés
o Eclipse http://www.eclipse.org/
o NetBeans http://www.netbeans.org/
o IntelliJ IDEA
o RAD
o JDeveloper
o JBuilder
o BlueJ
⚫ Attention
⚫ La méthode main ne peut pas retourner d’entier comme en C.
possible de redéfinir :
–toString()
–clone()
–finalize()
Object
● Mais son implémentation test les références
Point p1=new Point(2,2);
Point p3=new Point(2,2);
p1==p3; // false
p1.equals(p3); // false
Pourquoi equals ?
●
méthode equals
public class Point {
private final int x,y;
public Point(int x,int y) {
this.x=x;
this.y=y;
}
public boolean equals(Point p) {
return x==p.x && y==p.y;
}
} // est ce que c’est bon ?
Object.equals(Object) et Point.equals(Point)
Object o1=p1;
Object o3=p3;
o1.equals(o3); // false : Object.equals(Object)
Object
equals(…) {
public Personne { // comparer par
String noSecu; identité
… }
public boolean equals(Object autre)
{
if(autre instanceof Personne) {
Personne p2 = (Personne) autre; Personne
if(noSecu.equals(p2.noSecu)) String
equals(…) { equals(…) {
return true; // comparer par // comparer
} contenu (no de sécurité par contenu
sociale) }
return false; }
}
}
65
super
⚫ une méthode static, ne peut être redéfinie.
66
Polymorphisme
⚫ Si l'on considère le diagramme de classes suivant :
67
Polymorphisme
⚫ Définition : la capacité de choisir dynamiquement la
méthode qui correspond au type réel de l'objet.
System.out.println(anim1.mange());
System.out.println(anim2.mange());
69
Polymorphisme
⚫ Quelle méthode mange() sera invoquée dans ce cas ?
70
Polymorphisme
⚫ C'est seulement à l'exécution que la machine virtuelle
déterminera la méthode à invoquer selon le type effectif de
l'objet référencé à ce moment là.
71
Polymorphisme
⚫ On pourrait définir le polymorphisme comme la propriété
permettant à un programme de réagir différemment à
l'envoi d'un même message (invocation de méthode) en
fonction des objets qui reçoivent ce message.
72
Polymorphisme
// Déclaration et création du tableau
Animal[ ] menagerie = new Animal[6];
// Alimentation du tableau
menagerie[0] = new Poisson(...);
menagerie[1] = new Chien(...);
menagerie[2] = new Chien(...);
menagerie[3] = new Animal(...);
menagerie[4] = new Poisson(...);
menagerie[5] = new Chien(...);
73
Polymorphisme
74
Upcasting : classe fille →
classe mère
⚫ surclassement ou upcasting est le fait d'enregistrer une
référence d'une instance d'une classe B héritant d'une
classe A dans une variable de type A.
75
Downcasting : classe mère →
classe fille
⚫ déclassement ou downcasting est le fait de convertir une
référence « surclassée » pour «libérer» certaines
fonctionnalités cachées par le surclassement.
76
Downcasting
⚫ Attention : Le downcasting ne permet pas de convertir une
instance d'une classe donnée en une instance d'une sous-
classe !
77
Interface: type abstrait
<<Interface>> AdaptateurWifi
⚫ Une interface est un type
{ envoyerDonner(..)
abstrait, censé être recevoirDonner(..) }
implémenté par des classes.
⚫ Il ne contient que les
méthodes sans corps.
⚫ Ces méthodes sont à redéfinir
dans les classes AdaptateurWifiImpl1 AdaptateurWifiImpl2
d'implémentation envoyerDonner(..) { envoyerDonner(…)
⚫ On ne peut pas créer une .. } {.. }
recevoirDonner(..) recevoirDonner(...)
instance d'une interface mais { .. }
on peut créer une instance { .. }
d'une classe
d'implémentation.
// autres méthodes …
}
class C2 {
void m3() {
class C1 { C1 c1 = new C1();
public String a1; c1.a1 = "hello"; // OK
private String a2; // c1.a2 = "hello"; illégal
public void m1(); c1.m1(); // OK
private void m2(); // c1.m2(); illégal
} }
}
⚫ Principe d'encapsulation :
• Une classe devrait cacher des attributs et exposer ses
méthodes au monde extérieur (aux autres classes)
• Protéger le contenu (les attributs) de la modification illégale
• Masquer les détails internes de la classe
→ simplification