Chap 02 poo en java

POO en Java
Ch. II
Vue d’ensemble
de la plate-forme Java
Prof. Hakim ALLALI
Licences EEA & RTT. Fév 2013
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
 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
 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
 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
 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
 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 Programming
Interface): 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 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
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 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
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 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
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
 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 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
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è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 */
}
 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
 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
1 de 32

Recomendados

Formation POO & Java (2ème séance) por
Formation POO & Java (2ème séance)Formation POO & Java (2ème séance)
Formation POO & Java (2ème séance)G²FOSS ENIT
919 vistas26 diapositivas
Java 110605092007-phpapp02 por
Java 110605092007-phpapp02Java 110605092007-phpapp02
Java 110605092007-phpapp02Eric Bourdet
694 vistas216 diapositivas
POO Java Introduction por
POO Java IntroductionPOO Java Introduction
POO Java IntroductionMouna Torjmen
2K vistas21 diapositivas
Support POO Java Deuxième Partie por
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième PartieENSET, Université Hassan II Casablanca
25.7K vistas99 diapositivas
Java uik-chap1-intro java por
Java uik-chap1-intro javaJava uik-chap1-intro java
Java uik-chap1-intro javaAmel Morchdi
1.1K vistas49 diapositivas
Java uik-chap2-dev java por
Java uik-chap2-dev javaJava uik-chap2-dev java
Java uik-chap2-dev javaAmel Morchdi
858 vistas23 diapositivas

Más contenido relacionado

La actualidad más candente

Introduction java por
Introduction javaIntroduction java
Introduction javaFouad Root
873 vistas47 diapositivas
J2EE vs .NET por
J2EE vs .NETJ2EE vs .NET
J2EE vs .NETGhazouani Mahdi
3.1K vistas20 diapositivas
Java 2015 2016_zied_elleuch por
Java 2015 2016_zied_elleuchJava 2015 2016_zied_elleuch
Java 2015 2016_zied_elleuchTarek Halloul
226 vistas294 diapositivas
Formation JAVA (1) por
Formation JAVA (1)Formation JAVA (1)
Formation JAVA (1)Ahmed Charef
120 vistas50 diapositivas
Les dessous du framework spring por
Les dessous du framework springLes dessous du framework spring
Les dessous du framework springAntoine Rey
11.9K vistas29 diapositivas
Spring Meetup Paris - Back to the basics of Spring (Boot) por
Spring Meetup Paris - Back to the basics of Spring (Boot)Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)Eric SIBER
4.3K vistas109 diapositivas

La actualidad más candente(20)

Introduction java por Fouad Root
Introduction javaIntroduction java
Introduction java
Fouad Root873 vistas
Java 2015 2016_zied_elleuch por Tarek Halloul
Java 2015 2016_zied_elleuchJava 2015 2016_zied_elleuch
Java 2015 2016_zied_elleuch
Tarek Halloul226 vistas
Les dessous du framework spring por Antoine Rey
Les dessous du framework springLes dessous du framework spring
Les dessous du framework spring
Antoine Rey11.9K vistas
Spring Meetup Paris - Back to the basics of Spring (Boot) por Eric SIBER
Spring Meetup Paris - Back to the basics of Spring (Boot)Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)
Eric SIBER4.3K vistas
Environnement java por Ines Ouaz
Environnement javaEnvironnement java
Environnement java
Ines Ouaz1.3K vistas
Ces outils qui vous font gagner du temps por Antoine Rey
Ces outils qui vous font gagner du tempsCes outils qui vous font gagner du temps
Ces outils qui vous font gagner du temps
Antoine Rey9K vistas
Java vs .Net por Algeria JUG
Java vs .NetJava vs .Net
Java vs .Net
Algeria JUG8.8K vistas
Programmation orientee aspect 201401 - Ensim por Laurent Broudoux
Programmation orientee aspect 201401 - EnsimProgrammation orientee aspect 201401 - Ensim
Programmation orientee aspect 201401 - Ensim
Laurent Broudoux1.6K vistas
Présentation de JEE et de son écosysteme por Stéphane Traumat
Présentation de JEE et de son écosystemePrésentation de JEE et de son écosysteme
Présentation de JEE et de son écosysteme
Stéphane Traumat5.5K vistas
Application Spring MVC/IOC & Hibernate por Ines Ouaz
Application Spring MVC/IOC & HibernateApplication Spring MVC/IOC & Hibernate
Application Spring MVC/IOC & Hibernate
Ines Ouaz5.7K vistas
Workshop Spring - Session 5 - Spring Integration por Antoine Rey
Workshop Spring - Session 5 - Spring IntegrationWorkshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring Integration
Antoine Rey10.8K vistas
Framework Hibernate por Ines Ouaz
Framework HibernateFramework Hibernate
Framework Hibernate
Ines Ouaz1.8K vistas
Programmation orienté aspect por meriem sari
Programmation orienté aspectProgrammation orienté aspect
Programmation orienté aspect
meriem sari914 vistas
Formation JAVA/J2EE por Ines Ouaz
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
Ines Ouaz8.7K vistas

Similar a Chap 02 poo en java

Java & Etat de l'art por
Java & Etat de l'artJava & Etat de l'art
Java & Etat de l'artInes Ouaz
1.2K vistas14 diapositivas
Objet Direct Formation Java pour devenir autonome por
Objet Direct Formation Java pour devenir autonomeObjet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonomeformationobjetdirect
475 vistas16 diapositivas
Support POO Java première partie por
Support POO Java première partieSupport POO Java première partie
Support POO Java première partieENSET, Université Hassan II Casablanca
30.3K vistas128 diapositivas
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx por
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
1-supportpoojavapremirepartie-140408132307-phpapp01.pptxRihabBENLAMINE
3 vistas128 diapositivas
Base11 por
Base11Base11
Base11Fatma Riahi
640 vistas123 diapositivas

Similar a Chap 02 poo en java(20)

Java & Etat de l'art por Ines Ouaz
Java & Etat de l'artJava & Etat de l'art
Java & Etat de l'art
Ines Ouaz1.2K vistas
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx por RihabBENLAMINE
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
RihabBENLAMINE3 vistas
Java j2ee por izdihara
Java j2eeJava j2ee
Java j2ee
izdihara488 vistas
Lyon JUG 2018 - Java le changement c'est maintenant por Jean-Michel Doudoux
Lyon JUG 2018 - Java le changement c'est maintenantLyon JUG 2018 - Java le changement c'est maintenant
Lyon JUG 2018 - Java le changement c'est maintenant
Jean-Michel Doudoux664 vistas
I le langage java d'una manière avancée introduction por sabrine_hamdi
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introduction
sabrine_hamdi694 vistas
Chap1_PresentationJava.pdf por sayf7
Chap1_PresentationJava.pdfChap1_PresentationJava.pdf
Chap1_PresentationJava.pdf
sayf76 vistas
Apres java 8, java 9 et 10 - BreizhCamp 2018 por Jean-Michel Doudoux
Apres java 8, java 9 et 10 - BreizhCamp 2018Apres java 8, java 9 et 10 - BreizhCamp 2018
Apres java 8, java 9 et 10 - BreizhCamp 2018
Jean-Michel Doudoux2.3K vistas

Más de Yassine Badri

Théorie de normalisation-base de données por
Théorie de normalisation-base de donnéesThéorie de normalisation-base de données
Théorie de normalisation-base de donnéesYassine Badri
2.4K vistas13 diapositivas
Conception des bases de données relationelles por
Conception des bases de données relationellesConception des bases de données relationelles
Conception des bases de données relationellesYassine Badri
1.6K vistas29 diapositivas
exercices Corrigées du merise por
exercices Corrigées du  meriseexercices Corrigées du  merise
exercices Corrigées du meriseYassine Badri
20.9K vistas8 diapositivas
La theorie des dependances et la normalisation des relations-base de données por
La theorie des dependances et la normalisation des relations-base de donnéesLa theorie des dependances et la normalisation des relations-base de données
La theorie des dependances et la normalisation des relations-base de donnéesYassine Badri
1.4K vistas14 diapositivas
base de données -note de cours por
base de données -note de cours base de données -note de cours
base de données -note de cours Yassine Badri
2.8K vistas33 diapositivas
cours j2ee -présentation por
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentationYassine Badri
1.6K vistas20 diapositivas

Más de Yassine Badri(20)

Théorie de normalisation-base de données por Yassine Badri
Théorie de normalisation-base de donnéesThéorie de normalisation-base de données
Théorie de normalisation-base de données
Yassine Badri2.4K vistas
Conception des bases de données relationelles por Yassine Badri
Conception des bases de données relationellesConception des bases de données relationelles
Conception des bases de données relationelles
Yassine Badri1.6K vistas
exercices Corrigées du merise por Yassine Badri
exercices Corrigées du  meriseexercices Corrigées du  merise
exercices Corrigées du merise
Yassine Badri20.9K vistas
La theorie des dependances et la normalisation des relations-base de données por Yassine Badri
La theorie des dependances et la normalisation des relations-base de donnéesLa theorie des dependances et la normalisation des relations-base de données
La theorie des dependances et la normalisation des relations-base de données
Yassine Badri1.4K vistas
base de données -note de cours por Yassine Badri
base de données -note de cours base de données -note de cours
base de données -note de cours
Yassine Badri2.8K vistas
cours j2ee -présentation por Yassine Badri
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentation
Yassine Badri1.6K vistas
exercices base de données - sql por Yassine Badri
exercices  base de données - sql exercices  base de données - sql
exercices base de données - sql
Yassine Badri20.7K vistas
exercices business intelligence por Yassine Badri
exercices business intelligence exercices business intelligence
exercices business intelligence
Yassine Badri28.6K vistas
exercices gestion de stock por Yassine Badri
exercices gestion de stock exercices gestion de stock
exercices gestion de stock
Yassine Badri51.7K vistas
Exercice arbre de décision por Yassine Badri
Exercice arbre de décision Exercice arbre de décision
Exercice arbre de décision
Yassine Badri11.7K vistas
script site e-commerce -php por Yassine Badri
script site e-commerce -php script site e-commerce -php
script site e-commerce -php
Yassine Badri2K vistas
les servlets-java EE por Yassine Badri
les  servlets-java EEles  servlets-java EE
les servlets-java EE
Yassine Badri1.1K vistas
.logistique gestion des stock por Yassine Badri
.logistique gestion des stock .logistique gestion des stock
.logistique gestion des stock
Yassine Badri14.3K vistas
cours base de données por Yassine Badri
cours base de donnéescours base de données
cours base de données
Yassine Badri2.1K vistas
les métiers d'informatique por Yassine Badri
les métiers d'informatiqueles métiers d'informatique
les métiers d'informatique
Yassine Badri1.2K vistas
les métiers d'informatique por Yassine Badri
les métiers d'informatiqueles métiers d'informatique
les métiers d'informatique
Yassine Badri2K vistas
Java chap 04 surcharge des méthodes [mode de compatibilité] por Yassine Badri
Java chap 04 surcharge des méthodes [mode de compatibilité]Java chap 04 surcharge des méthodes [mode de compatibilité]
Java chap 04 surcharge des méthodes [mode de compatibilité]
Yassine Badri1.2K vistas
Chap 03 poo en java partie2 por Yassine Badri
Chap 03 poo en java partie2Chap 03 poo en java partie2
Chap 03 poo en java partie2
Yassine Badri546 vistas

Último

Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 por
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23Newsletter SPW Agriculture en province du Luxembourg du 13-11-23
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23BenotGeorges3
6 vistas17 diapositivas
ONU.pdf por
ONU.pdfONU.pdf
ONU.pdfChristopheFontaine13
32 vistas2 diapositivas
Présentation de lancement SAE105 por
Présentation de lancement SAE105Présentation de lancement SAE105
Présentation de lancement SAE105JeanLucHusson
40 vistas13 diapositivas
La Lettre Formelle.pptx por
La Lettre Formelle.pptxLa Lettre Formelle.pptx
La Lettre Formelle.pptxstudymaterial91010
16 vistas10 diapositivas
Éléments visuels.pdf por
Éléments visuels.pdfÉléments visuels.pdf
Éléments visuels.pdfStagiaireLearningmat
30 vistas2 diapositivas
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2... por
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2...Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2...
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2...BenotGeorges3
24 vistas18 diapositivas

Último(15)

Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 por BenotGeorges3
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23Newsletter SPW Agriculture en province du Luxembourg du 13-11-23
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23
BenotGeorges36 vistas
Présentation de lancement SAE105 por JeanLucHusson
Présentation de lancement SAE105Présentation de lancement SAE105
Présentation de lancement SAE105
JeanLucHusson40 vistas
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2... por BenotGeorges3
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2...Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2...
Newsletter SPW Agriculture en province du Luxembourg du 13-11-23 (adapté au 2...
BenotGeorges324 vistas
Julia Margaret Cameron por Txaruka
Julia Margaret Cameron Julia Margaret Cameron
Julia Margaret Cameron
Txaruka5 vistas
Formation M2i - Cadre réglementaire des IA Génératives : premiers éléments de... por M2i Formation
Formation M2i - Cadre réglementaire des IA Génératives : premiers éléments de...Formation M2i - Cadre réglementaire des IA Génératives : premiers éléments de...
Formation M2i - Cadre réglementaire des IA Génératives : premiers éléments de...
M2i Formation8 vistas
Cours Audit General 2019 (1).prof tatouti .pdf por Abdelghani19
Cours Audit  General 2019 (1).prof tatouti .pdfCours Audit  General 2019 (1).prof tatouti .pdf
Cours Audit General 2019 (1).prof tatouti .pdf
Abdelghani197 vistas
Formation M2i - Augmenter son impact en communication et en management grâce... por M2i Formation
Formation M2i - Augmenter son impact en communication et en management grâce...Formation M2i - Augmenter son impact en communication et en management grâce...
Formation M2i - Augmenter son impact en communication et en management grâce...
M2i Formation50 vistas
Julia Margaret Cameron por Txaruka
Julia Margaret CameronJulia Margaret Cameron
Julia Margaret Cameron
Txaruka70 vistas
Newsletter SPW Agriculture en province de LIEGE du 28-11-23 por BenotGeorges3
Newsletter SPW Agriculture en province de LIEGE du 28-11-23Newsletter SPW Agriculture en province de LIEGE du 28-11-23
Newsletter SPW Agriculture en province de LIEGE du 28-11-23
BenotGeorges326 vistas
MNGTCOUT PROJET 04112023.pptx por HAIDI2
MNGTCOUT PROJET 04112023.pptxMNGTCOUT PROJET 04112023.pptx
MNGTCOUT PROJET 04112023.pptx
HAIDI26 vistas

Chap 02 poo en java

  • 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