1. POO en Java
Ch. II
Vue d’ensemble
de la plate-forme Java
Prof. Hakim ALLALI
Licences EEA & RTT. Fév 2013
2. 1. Introduction
2. Quelques chiffres et faits (2011)
3. Caractéristiques
4. La plateforme Java
5. Java : de l’édition à l’exécution
6. Le Java SE Development Kit
7. Java : évolution des versions
8. Java : les éditions
9. Génération de code exécutable dans les langages de programmation
10. Génération de code en java
11. Principe Machine Virtuelle
12. Différents modes de compilation
13. Avantages de la JVM pour Internet
14. Avantages/Inconvénients du bytecode
15. Exemple d’application: Mon premier programme en Java
PLAN
3. Java est un langage de POO créé par les ingénieurs
de la société SUN Microsystems en 1995.
SUN a été rachetée par Oracle en 2009.
Java est présent dans de très nombreux domaines
d’application des serveurs d’applications aux
téléphones portables, cartes à puces et des
systèmes de diffusion télévisuelle.
Exemples d’applications : jeux enlignes, images 3D,
solutions de banques, etc…
Introduction
4. 4
97% des machines d'entreprises ont une JVM (Java Virtual
Machine) installée
Java est téléchargé plus d'un milliard de fois chaque année
Il y a plus de 9 millions de développeurs Java dans le monde
Java est un des langages les plus utilisé dans le monde
Plus de 3 milliards d'appareils mobiles peuvent mettre en
oeuvre Java
Plus de 1,4 milliards de cartes à puce utilisant Java sont
produites chaque année
Quelques chiffres et faits (2011)
5. 5
Java est devenu l’un des langages de programmation les plus utilisés
Des études comparatives de développements montrent une diminution
du coût de développement de 30 à 35 %
Caractéristiques
6. 6
Définition de SUN
Java est un langage:
1)simple,
2)orienté objet,
3)distribué,
4)robuste,
5)sûr,
6)indépendant des architectures matérielles,
7)portable,
8)de haute performance,
9)multithread
10)dynamique
Caractéristiques
7. 7
Simple
Apprentissage facile
Inspiré du C++, Fortran, Lisp, Smalltalk
Pas de pointeur; pas de surcharge d'opérateurs; pas
d'héritage multiple
Présence d'un «garbage collector» (ramasse-miettes)
Orienté objet
Les grandes idées reprises sont : encapsulation, dualité
classe /instance, attribut, méthode / message,
visibilité, dualité interface/implémentation, héritage
simple, redéfinition de méthodes, polymorphisme
Un des intérêts de Java est de disposer de nombreuses
classes déjà faites. Toute ligne de code JAVA se
trouve obligatoirement dans une méthode à l’intérieur
d’une classe
Caractéristiques
8. 8
Distribué
Les fonctions d'accès au réseau et les protocoles internet les
plus courants sont intégrés.
Robuste
Typage des données très strict
Pas de pointeur
Sûr
Java n’est pas compilé à destination d’un processeur
particulier mais en « byte code » qui pourra être ensuite
interprété sur une machine virtuelle Java (JVM = Java
Virtual Machine). Le "byte code" généré est vérifié par les
interprétateurs java avant exécution.
Un débordement de tableau déclenchera automatiquement
une exception.
L’absence d’arithmétique de pointeur évite les
malversations.
Caractéristiques
9. 9
Portable
Les types de données sont indépendants de la plateforme
(par exemple les types numériques sont définis
indépendamment du type de plateforme sur laquelle le
byte code sera interprété).
Haute performance
Java est un langage pseudo interprété
Techniques de "Just in Time" (JIT) améliorent ces
performances
Caractéristiques
10. 10
Multi thread
Une application peut être décomposée en unités
d'exécution fonctionnant simultanément
La gestion des multi-threads est intégrée dans le
langage et dans la Machine Virtuelle
Dynamique
Les classes Java peuvent être modifiées sans avoir à
modifier le programme qui les utilise.
Caractéristiques
11. 11
Une plateforme est un environnement matériel
et/ou logiciel dans lequel un programme tourne.
La plupart des plateformes peuvent être décrites
comme une combinaison du système d’exploitation
et du matériel sous-jacent.
La plateforme Java est une plateforme de
développement purement logiciel qui tourne sur
d’autres plateformes basées sur le matériel.
La plateforme Java
12. 12
La plateforme Java
La plateforme Java a deux composants :
La Machine Virtuelle Java (Java Virtual Machine):
programme permettant d'interpréter et d'exécuter
le bytecode Java (proche du langage machine).
L’API Java (Java Application Programming
Interface): ensemble de bibliothèques contenant des
classes et interfaces organisées en Packages.
13. 13
Code source : fichier texte avec
extension .java
Compilation avec javac: fichier
avec extension .class
Contenu : code intermédiaire
bytecode indépendant de toute
plateforme
Exécution : bytecode est
traduit en code natif, par la
machine virtuelle java, selon le
système d’exploitation
Java : de l’édition à l’exécution (1)
14. 14
Java : de l’édition à l’exécution (2)
Remarque:
La JVM est contenue dans un framework
d’exécution appelé JRE (Java Runtime
Environment)
Elle est disponible pour plusieurs
systèmes d’exploitation (Microsoft
Windows, Solaris OS, Linux ou Mac OS)
15. 15
Le Java SE Development Kit
Pour exécuter une application développée avec
Java, il faut télécharger le JRE
Cependant, pour les développeurs il faut
télécharger le kit de développement Java (JDK)
Le JDK est le kit de développement de référence,
distribué gratuitement sur Internet par Sun
La version courante du JDK est JDK SE 7 Update1
16. 16
Le Java SE Development Kit
Le JDK SE est composé d'un certain nombre d'outils:
Javac : C'est le compilateur Java
Java : Exécute le ou les fichiers compilés par Javac
AppletViewer : Ce programme permet d'exécuter
une Applet Java sans nécessité d'utiliser un
navigateur web
Javadoc : Outil permettant de construire, à partir
des commentaires insérés dans des sources Java, une
documentation HTML
Le JDK contient aussi le JRE
Des environnements de développement:
http://www.eclipse.org
http://www.netbeans.org
17. 17
JDK 1.0 (23 janvier 1996 - 211 classes et interfaces)
— Version initiale
JDK 1.1 (19 février 1997 - 477 classes et interfaces)
— De nombreux ajouts
J2SE 1.2 (9 décembre 1998 - 1524 classes et interfaces)
— Nom de code Playground
Remarque : Cette version et les suivantes jusque J2SE
5.0 sont rebaptisées Java2 et la version nommée J2SE
remplace JDK pour distinguer la plateforme de base de
la version J2EE et J2ME
J2SE 1.3 (8 mai 2000 - 1840 classes et interfaces)
— Nom de code Kestre
J2SE 1.4 (6 février 2002 - 2723 classes et interfaces)
— Nom de code Merlin
Java : évolution des versions
18. 18
J2SE 5.0 (30 septembre 2004 - 3270 classes et interfaces)
— Nom de code Tiger
Remarque : initialement numérotée 1.5, qui est toujours utilisé
comme numéro de version interne
Java SE 6 (12 décembre 2006 - 3777 classes et interfaces)
— Nom de code Mustang
Remarque : Avec cette version, Sun remplace le nom J2SE par
Java SE et supprime le .0 au numéro de version
Java SE 7 (28 juillet 2011 - 4024 classes et interfaces)
— Nom de code Dolphin
C’est une version OpenSource et sous l’ère Oracle.
Java SE 8 (version prévue pour cette année 2013)
Java : évolution des versions
19. 19
Les principales éditions de Java sont:
Java ME : Java Micro Edition
Prévu pour le développement d'applications embarquées
(assistants personnels et terminaux mobiles..)
Java SE : Java Standard Edition
Destiné au développement d'applications pour ordinateurs
personnels
Java EE : Java Entreprise Edition
Destiné à un usage professionnel avec la mise en oeuvre de
serveurs (serveurs d’applications et serveurs Web)
Java : les éditions
20. 20
Le code est généré par un compilateur en
plusieurs étapes :
Vérification syntaxique.
Vérification sémantique (typage).
Production de code dans un langage plus proche
de la machine.
Production de « briques » de code assemblables.
Génération de code exécutable
dans les langages de programmation
21. 21
Génération de code exécutable
dans les langages de programmation
Avantages/inconvénients du code natif
Rapidité d’exécution
Nécessité de recompiler lors du portage d’un logiciel sur
une autre architecture/système d’exploitation
Choix de la distribution du logiciel : source ou binaire?
24. Différents modes de compilation
Code source
Compilation
Programme objet
Edition de lien
Programme.Exe
Code source
Compilation
Byte Code
Interprétation par
La JVM en mode byte code
(Traduit en code machine
et exécute instruction par
Instruction )
Code source
Compilation
Byte Code
Interprétation par
La JVM en mode JIT
(Traduit tout le programme
Byte Code en programme
machine puis l’exécute )
Natif Byte Code JIT
25. 25
Avantages de la JVM pour Internet
Grâce à sa portabilité, le bytecode d’une classe
peut être chargé depuis une machine distante du
réseau, et exécutée par une JVM locale
La JVM fait de nombreuses vérifications sur le
bytecode avant son exécution pour s’assurer qu’il
ne va effectuer aucune action dangereuse
La JVM apporte donc:
de la souplesse pour le chargement du code à exécuter
mais aussi de la sécurité pour l’exécution de ce code
26. 26
Code portable au niveau binaire
Moins efficace que du code natif (mais
compensé par la technologie JIT
permettant de ne traduire qu’une seule
fois en code natif les instructions qui
sont exécutées)
Avantages/Inconvénients du bytecode
27. Fichier Bonjour.java Accolades délimitant le
début et la fin de la définition
de la class Bonjour
public class Bonjour
{
public static void main(String args[])
{
System.out.println("bonjour");
}
}
Accolades délimitant le début
et la fin de la méthode main
Les instructions se terminent
par des ;
Exemple d’application
27
Le nom de la classe et du fichier doivent être identiques
28. Mon premier programme en Java
Considérons le code source suivant:
public class MonPremProg {
public static void main(String args[]) {
System.out.println("Bonjour: mon premier programme Java" );
}
}
Important:
1. Ce code doit être sauvegardé obligatoirement dans le Fichier
source nommé « MonPremProg.java »
2. Une classe exécutable doit posséder une méthode ayant la
signature public static void main(String[] args).
28
29. Dans le cas de l’environnement JDK de SUN.
Pour compiler il suffit d’utiliser la commande javac :
javac MonPremProg.java
Pour exécuter, il suffira d’utiliser la commande:
java MonPremProg
qui interprète le bytecode de la méthode main()
de la classe MonPremProg
Mon premier programme en Java
L’exécution du programme MonPremProg affiche à l’écran,
comme résultat, la chaîne de caractères:
Bonjour: mon premier programme Java
grâce à l’instruction:
System.out.println ("Bonjour: mon premier programme Java");
29
30. 30
De manière générale, dans tout programme autonome destiné
à être exécuté doit contenir une méthode particulière
nommée main() définie de la manière suivante:
Le paramètre args de la méthode main() est un tableau
d’objets de type String. Il n’est pas utilisé mais, il est exigé
par le compilateur Java.
La classe contenant la méthode main() doit obligatoirement
être public afin que la machine virtuelle y accès.
Dans l’exemple, le contenu de la classe MonPremProg est
réduit à la définition d’une méthode main().
Mon premier programme en Java
public static void main(String args[]) {
/* corps de la méthode */
}
31. Un fichier source peut contenir plusieurs classes mais
une seule doit être public (ici MonPremProg).
Le nom du fichier source est identique au nom de la
classe publique qu'il contient, suivi du suffixe .java,
dans l’exemple MonPremProg.java
Mon premier programme en Java
31
Java est sensible à la casse: NomClasse ≠ Nomclasse
32. 32
Fichier: First.java
public class First
{
public static void main (String args [])
{
System.out.println ("Premier programme Java") ;
}
}
Compilation: javac First.java
Création de First.class
Exécution: java First
Attention !!!
1. Le nom de la classe et du fichier doivent être identiques.
2. Java est sensible à la casse Bonjour ≠ bonjour
Exemple (1) d’application