chap 02 poo en java

32
POO en Java Ch. II Vue d’ensemble de la plate-forme Java Prof. Hakim ALLALI Licences EEA & RTT. Fév 2013

Upload: yassine-badri

Post on 21-Jul-2015

81 views

Category:

Education


2 download

TRANSCRIPT

Page 1: Chap 02 poo en java

POO en Java

Ch. II

Vue d’ensemble de la plate-forme Java

Prof. Hakim ALLALILicences EEA & RTT. Fév 2013

Page 2: Chap 02 poo en java

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

Page 3: Chap 02 poo en java

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

Page 4: Chap 02 poo en java

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)

Page 5: Chap 02 poo en java

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

Page 6: Chap 02 poo en java

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

Page 7: Chap 02 poo en java

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

Page 8: Chap 02 poo en java

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

Page 9: Chap 02 poo en java

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

Page 10: Chap 02 poo en java

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

Page 11: Chap 02 poo en java

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

Page 12: Chap 02 poo en 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.

Page 13: Chap 02 poo en java

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)

Page 14: Chap 02 poo en java

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)

Page 15: Chap 02 poo en java

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

Page 16: Chap 02 poo en java

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

Page 17: Chap 02 poo en java

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

Page 18: Chap 02 poo en java

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

Page 19: Chap 02 poo en java

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

Page 20: Chap 02 poo en java

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

Page 21: Chap 02 poo en java

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?

Page 22: Chap 02 poo en java

22

Génération de code en java

Page 23: Chap 02 poo en java

23

Principe Machine Virtuelle

Page 24: Chap 02 poo en java

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

Page 25: Chap 02 poo en java

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

Page 26: Chap 02 poo en java

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

Page 27: Chap 02 poo en java

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

Page 28: Chap 02 poo en java

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

Page 29: Chap 02 poo en java

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

Page 30: Chap 02 poo en java

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 */

}

Page 31: Chap 02 poo en java

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

Page 32: Chap 02 poo en java

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