Upload
yassine-badri
View
81
Download
2
Embed Size (px)
Citation preview
POO en Java
Ch. II
Vue d’ensemble de la plate-forme Java
Prof. Hakim ALLALILicences EEA & RTT. Fév 2013
1. Introduction2. Quelques chiffres et faits (2011) 3. Caractéristiques4. La plateforme Java5. Java : de l’édition à l’exécution6. Le Java SE Development Kit7. Java : évolution des versions8. Java : les éditions9. Génération de code exécutable dans les langages de programmation10. Génération de code en java11. Principe Machine Virtuelle12. Différents modes de compilation13. Avantages de la JVM pour Internet14. Avantages/Inconvénients du bytecode15. Exemple d’application: Mon premier programme en Java
PLAN
Java est un langage de POO créé par les ingénieursde 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
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
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
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
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
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
PortableLes 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
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
DynamiqueLes classes Java peuvent être modifiées sans avoir à modifier le programme qui les utilise.
Caractéristiques
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
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 ProgrammingInterface): ensemble de bibliothèques contenant des classes et interfaces organisées en Packages.
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
Java : de l’édition à l’exécution (2)
Remarque:
La JVM est contenue dans un frameworkd’exécution appelé JRE (Java RuntimeEnvironment)
Elle est disponible pour plusieurs systèmes d’exploitation (Microsoft Windows, Solaris OS, Linux ou Mac OS)
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
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
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
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
Les principales éditions de Java sont:
Java ME : Java Micro EditionPrévu pour le développement d'applications embarquées (assistants personnels et terminaux mobiles..)
Java SE : Java Standard EditionDestiné au développement d'applications pour ordinateurs personnels
Java EE : Java Entreprise EditionDestiné à un usage professionnel avec la mise en oeuvre de serveurs (serveurs d’applications et serveurs Web)
Java : les éditions
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
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?
22
Génération de code en java
23
Principe Machine Virtuelle
Différents modes de compilation
Code source
Compilation
Programme objet
Edition de lien
Programme.Exe
Code source
Compilation
Byte Code
Interprétation parLa JVM en mode byte code(Traduit en code machineet exécute instruction par
Instruction )
Code source
Compilation
Byte Code
Interprétation parLa JVM en mode JIT
(Traduit tout le programmeByte Code en programmemachine puis l’exécute )
Natif Byte Code JIT
25
Avantages de la JVM pour Internet
Grâce à sa portabilité, le bytecode d’une classepeut être chargé depuis une machine distante duréseau, et exécutée par une JVM localeLa JVM fait de nombreuses vérifications sur lebytecode avant son exécution pour s’assurer qu’ilne va effectuer aucune action dangereuseLa 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
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
Fichier Bonjour.java Accolades délimitant ledébut et la fin de la définitionde la class Bonjourpublic class Bonjour
{
public static void main(String args[])
{
System.out.println("bonjour");
}
}
Accolades délimitant le débutet la fin de la méthode main
Les instructions se terminentpar des ;
Exemple d’application
27
Le nom de la classe et du fichier doivent être identiques
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
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
De manière générale, dans tout programme autonome destinéà être exécuté doit contenir une méthode particulièrenommée main() définie de la manière suivante:
Le paramètre args de la méthode main() est un tableaud’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 estré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 */
}
Un fichier source peut contenir plusieurs classes maisune seule doit être public (ici MonPremProg).
Le nom du fichier source est identique au nom de laclasse 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
Fichier: First.javapublic class First{
public static void main (String args []){
System.out.println ("Premier programme Java") ;}
}
Compilation: javac First.javaCré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