Vous êtes sur la page 1sur 13

08/04/2020

POO en Java
Ch. II

Vue d’ensemble
de la plate-forme Java

MAJ 10/03/20

PLAN
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

haaaaaa 1
08/04/2020

Introduction
 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…

Quelques chiffres et faits


 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

 Beaucoup d'applications et de sites Web ne fonctionnent


pas si Java n'est pas installé

 Plus de 5 milliards de cartes à puce utilisant Java sont


produites chaque année
4

haaaaaa 2
08/04/2020

Caractéristiques
 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 %

http://www.tiobe.com/tiobe_index?page=index 5

Caractéristiques
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
6

haaaaaa 3
08/04/2020

Caractéristiques
 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
 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 (erreurs/mauvaises actions). 8

haaaaaa 4
08/04/2020

Caractéristiques
 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

 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.

10

haaaaaa 5
08/04/2020

La plateforme Java

 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.

11

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.

12

haaaaaa 6
08/04/2020

Java : de l’édition à l’exécution (1)

 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

13

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)

14

haaaaaa 7
08/04/2020

Le Java SE Development Kit

 Pour exécuter une application développée avec Java,


il faut télécharger le JRE (Java Runtime Environment)

 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

 Le JDK désigne un ensemble de bibliothèques


logicielles de base du langage Java, ainsi que les
outils avec lesquels le code Java peut être compilé,
transformé en bytecode destiné à la JVM

 La version courante du JDK est JDK SE 8 Update241


14/01/2020 15

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
16

haaaaaa 8
08/04/2020

Java : évolution des versions


 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
17

Java : évolution des versions

 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 (18 mars 2014)


— Nom de code Kenaï
Java SE 8 Update 241 (14 Janvier 2020)
18

haaaaaa 9
08/04/2020

Java : évolution des versions

https://en.wikipedia.org/wiki/Java_version_history 19

Java : les éditions


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 œuvre de
serveurs (serveurs d’applications et serveurs Web)

20

haaaaaa 10
08/04/2020

Génération de code exécutable


dans les langages de programmation

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.

21

Génération de code en java

22

haaaaaa 11
08/04/2020

Exemple d’application
Le nom de la classe et du fichier doivent être identiques
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[])
{
Accolades délimitant le début
System.out.println("bonjour"); et la fin de la méthode main

}
} Les instructions se terminent
par des ;

23

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).

24

haaaaaa 12
08/04/2020

Mon premier programme en Java


 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:

public static void main(String args[]) {


/* corps de la méthode */
}
 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().
25

Mon premier programme en Java

 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

Java est sensible à la casse: NomClasse ≠ Nomclasse

26

haaaaaa 13