0% ont trouvé ce document utile (0 vote)
4 vues42 pages

Introduction à la POO en Java

Transféré par

salma.labidi
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues42 pages

Introduction à la POO en Java

Transféré par

salma.labidi
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Programmation Orientée Objet

POO : Java

JAVA

Sofiane HACHICHA

[Link]@[Link]

Sofiane HACHICHA
CPI2
ISIMG 2025 - 2026 2025/2026 1
Objectifs du cours

Comprendre le paradigme orienté objet et utiliser Java


POO : Java

pour le mettre en œuvre

Maîtriser la syntaxe du langage Java

Modéliser et manipuler des objets du monde réel

Comprendre et utiliser les classes de l’API Java

Compiler et exécuter une application Java

Comprendre et utiliser les exceptions

Sofiane HACHICHA
ISIMG 2025 - 2026
2
Contenu

Introduction générale à Java

Concepts de base de la programmation orientée objet


POO : Java

Syntaxe et éléments de base de Java

Classe et Objet

Héritage et Polymorphisme

Classe abstraite et Interface

Concepts avancés

Classes de base en Java


Sofiane HACHICHA
ISIMG 2025 - 2026
Gestion des exceptions 3
Chapitre
POO : Java

1
Introduction générale à Java

Sofiane HACHICHA
ISIMG 2025 - 2026
4
1- Introduction générale à Java
1.1 Evolution des langages de programmation (1/10)

Dans les programmes informatiques, on distingue deux


aspects : les algorithmes et les données.
Ceci n’a pas changé au cours de l’histoire de
l’informatique.
POO : Java

Ce qui a évolué, c’est la relation existante entre ces


deux aspects, une relation qui est définie par ce que
l'on appelle un paradigme de programmation.
Un paradigme de programmation est une manière
d'aborder la programmation informatique et de traiter les
solutions aux problèmes ainsi que leur formulation dans
un langage de programmation approprié.

Sofiane HACHICHA
ISIMG 2025 - 2026
5
1- Introduction générale à Java
1.1 Evolution des langages de programmation (2/10)

Quelques paradigmes courants :


Programmation impérative
L'un des paradigmes de programmation les plus anciens et les
POO : Java

plus couramment utilisés. Les langages de programmation


comme C, Pascal et Fortran appartiennent à ce paradigme.
La programmation impérative décrit les opérations sous
forme de séquences d'instructions exécutées par
l'ordinateur pour modifier l'état du programme.
Elle se concentre sur la description de la manière
(comment) dont un programme doit fonctionner pour
résoudre un problème donné.
Programmation structurée
Un sous-ensemble de la programmation impérative
qui vise à structurer les programmes impératifs en
garantissant que le code est exécuté instruction par
instruction, de manière séquentielle.
Sofiane HACHICHA
ISIMG 2025 - 2026 Elle recommande d’éviter les instructions de sauts (goto)
6
qui rendent l’exécution du programme non linéaire.
1- Introduction générale à Java
1.1 Evolution des langages de programmation (3/10)

Programmation procédurale
Une extension de la programmation structurée qui
permet de subdiviser les algorithmes en parties plus petites et
POO : Java

plus gérables, appelées procédures. Cela facilite la


compréhension du code et évite les répétitions inutiles.
Elle consiste à découper un programme en procédures,
également appelées routines ou fonctions, qui :
Représentent un ensemble d’étapes.
Peuvent être récursives, c'est-à-dire s’appeler elles-
mêmes.
En programmation procédurale, les fonctions (ou procédures)
peuvent prendre des paramètres en entrée, effectuer des
opérations sur ces paramètres et renvoyer des résultats en
sortie, ce qui améliore la structure et la lisibilité du code.
Sofiane HACHICHA
ISIMG 2025 - 2026
7
1- Introduction générale à Java
1.1 Evolution des langages de programmation (4/10)

Programmation modulaire
Elle est proche de l’approche procédurale et repose sur l'idée
de subdiviser un programme de manière ciblée en blocs
POO : Java

logiques, appelés modules, qui sont indépendants les uns


des autres. Cette approche améliore la clarté du code et
facilite le processus de débogage.
Les différents modules peuvent être testés séparément
avant d'être intégrés dans une application commune et
peuvent être réutilisés dans d'autres applications.
La programmation modulaire n'est pas liée à un paradigme
de programmation spécifique ; elle peut structurer des
éléments selon des approches impératives, orientées objet ou
fonctionnelles.
Elle permet de créer des types de données abstraits
(TDA), qui sont des concepts essentiels dans ce paradigme.
Sofiane HACHICHA
ISIMG 2025 - 2026
8
1- Introduction générale à Java
1.1 Evolution des langages de programmation (5/10)

Un programmeur peut développer une structure de données


personnalisée en utilisant des modules, avec la possibilité de
créer plusieurs variables (ou instances) de ce type.
POO : Java

Les opérations nécessaires pour manipuler ces variables doivent


être définies et disponibles.
Les données associées à ce type doivent être protégées et ne
peuvent être modifiées que par les opérations spécifiées.
Les TDA peuvent être implémentés en utilisant la notion de
classe en programmation orientée objet.
Cette approche favorise la modularité, la réutilisation
et une gestion efficace des données, en permettant de
manipuler ces TDA comme s'ils étaient des types de
données de base du langage.

Sofiane HACHICHA
ISIMG 2025 - 2026
9
1- Introduction générale à Java
1.1 Evolution des langages de programmation (6/10)

Programmation déclarative
Il peut être parfois essentiel d'atteindre un résultat précis sans
se soucier de l'état actuel du programme ou de la machine.
Autrement dit, on souhaite que la machine accomplisse une
POO : Java

tâche sans avoir à décrire les différentes opérations nécessaires


pour y parvenir.
Les langages de programmation déclaratifs permettent de
spécifier le résultat souhaité tout en laissant à la machine le
soin de gérer les détails de l'exécution.
Il existe une correspondance entre les langages de
programmation déclaratifs et la logique mathématique,
car le développeur se concentre sur le "quoi" (le résultat)
plutôt que sur le "comment" (les opérations spécifiques).
Un exemple de langage déclaratif est HTML, qui décrit ce
que doit contenir une page (texte, titres, paragraphes, etc.)
sans indiquer comment ces éléments doivent être affichés.
Sofiane HACHICHA
ISIMG 2025 - 2026
10
1- Introduction générale à Java
1.1 Evolution des langages de programmation (7/10)

Programmation fonctionnelle
Un dérivé de la programmation déclarative qui se
caractérise par l'absence d'état mutable. Les données sont
POO : Java

manipulées uniquement par des évaluations de fonctions


mathématiques, sans modification directe des valeurs.
Ce paradigme permet de décrire des calculs et des
transformations de données à travers des fonctions.
Le développement des applications Big Data nécessite la
maîtrise de la programmation fonctionnelle.
Lisp est considéré comme le premier langage fonctionnel.
Programmation logique
Elle repose sur l'utilisation d'un langage déclaratif où un
programme est composé d'un ensemble de phrases exprimant
des faits et des règles liés à un domaine spécifique.
Sofiane HACHICHA Elle est adaptée aux besoins de l’intelligence artificielle.
ISIMG 2025 - 2026
11
Prolog est un langage de programmation logique.
1- Introduction générale à Java
1.1 Evolution des langages de programmation (8/10)

Programmation orientée objet


Un paradigme qui complète et s'intègre avec la programmation
impérative et la programmation fonctionnelle.
POO : Java

Elle vise à regrouper les types de données manipulés par le


programme avec les traitements qui peuvent s’y appliquer,
organisant ainsi les parties corrélées du programme.
L'objectif est de favoriser la modularité à travers des
concepts comme l'encapsulation.
Les concepts de ce paradigme prennent souvent la forme de
classes (qui définissent le modèle) et d’objets (instances
dynamiquement créées à partir de ces classes).
Ce paradigme est généralement complété par une technique
appelée héritage, qui permet de :
Réutiliser des parties de code déjà écrites.
Sofiane HACHICHA
ISIMG 2025 - 2026 Redéfinir ou compléter ces parties pour les adapter à des
12
contextes différents.
1- Introduction générale à Java
1.1 Evolution des langages de programmation (9/10)

POO : Java

Approche procédurale :
"Que doit faire mon programme ?"

Approche orientée objet :


Sofiane HACHICHA
ISIMG 2025 - 2026
"De quoi doit être composé mon programme ?"
13
1- Introduction générale à Java
1.1 Evolution des langages de programmation (10/10)

Des objets similaires peuvent être informatiquement décrits


par une même abstraction : une classe
même structure de données et méthodes de traitement
POO : Java

valeurs différentes pour chaque objet

Sofiane HACHICHA
ISIMG 2025 - 2026
14
1- Introduction générale à Java
1.2 Historique du langage Java (1/2)

Développé en 1990 chez Sun Microsystems par James


Gosling, Mike Sheridan et Patrick Naughton.

Le nom Oak étant déjà utilisé, le langage est alors appelé


POO : Java

Java (café en argot américain).

En 1993, avec l'intérêt grandissant d'Internet, ce


langage, se métamorphose en langage dédié à Internet :
Sun diffuse le premier browser HotJava qui permet
d'exécuter des programmes Java encapsulés dans des
pages WEB (i.e. des applets Java).

1996 : Java Development Kit (JDK) est disponible


gratuitement pour la plupart des machines du marché.

Sofiane HACHICHA La société SUN a été acquise en janvier 2010 par Oracle
ISIMG 2025 - 2026
qui est devenue le gardien officiel de Java. 15
1- Introduction générale à Java
1.2 Historique du langage Java (2/2)

Java 1.0 publié en janvier 1996 : première version

Java 1.1 publié en février 1997.


POO : Java

Java 1.2 publié en décembre 1998.



Java 8 (JDK 1.8), publié en mars 2014, est une version
LTS (Long-Term Support) : supportée jusqu’en 2030.

Java 9 (JDK 9) publié en septembre 2017.



Java 17, publié en septembre 2021, est une LTS.

Java 21, publié en septembre 2023, est une LTS.

Sofiane HACHICHA
ISIMG 2025 - 2026 Java 25 sera disponible en septembre 2025.
16
1- Introduction générale à Java
1.3 Caractérisation du langage Java (1/7)

Le langage Java est familier :


Java est un langage familier et proche du C++.
POO : Java

Même types de base que C++ (int, float, double, etc.),


Même formes de déclarations que C++,
Même structure de contrôle que C++ (if, while, for, etc.).

Le langage Java est simple :


Java est un langage simple par rapport au langage C
et C++.
Java évite des complexités du C++ comme la gestion manuelle
des pointeurs et la manipulation directe de la mémoire.
Java intègre un ramasse-miettes (garbage collector) qui gère
Sofiane HACHICHA
la libération automatique de la mémoire, ce qui rend la
ISIMG 2025 - 2026 programmation plus simple. 17
1- Introduction générale à Java
1.3 Caractérisation du langage Java (2/7)

Le langage Java est orienté objet :


Paquetages (ou packages) pour la réutilisation :
[Link] : classes de base
POO : Java

[Link] : entrée/sortie
[Link] : gestion des interfaces graphiques
[Link] : interagir avec les bases données relationnelles
[Link] : classes utilitaires

Le langage Java est distribué :


Package [Link] : fournit des classes pour les
applications réseaux.
Classe URL : permet l ’accès à des objets distants.
Classe Socket : facilite la programmation d’applications
Client/Serveur.
Sofiane HACHICHA
ISIMG 2025 - 2026 Il possède des API pour la programmation réseau 18
([Link]) et la gestion d’objets distribués ([Link]).
1- Introduction générale à Java
1.3 Caractérisation du langage Java (3/7)

Java permet la manipulation transparente des


ressources locales ou distantes, facilitant ainsi les
applications réparties.
Le langage Java est interprété :
POO : Java

Un programme Java n'est pas compilé directement en


code machine ;
Il sera compilé en code intermédiaire appelé bytecode.
Lors de l'exécution, ce bytecode sera chargé et interprété
par une machine virtuelle spécifique appelée JVM.
Le langage Java est portable et indépendant des
plateformes :
Le bytecode est indépendant de la plateforme
matérielle et du système d'exploitation.
Il peut être exécuté sur n'importe quelle machine disposant
Sofiane HACHICHA d'une machine virtuelle Java (JVM) adaptée à sa plateforme.
ISIMG 2025 - 2026
19
1- Introduction générale à Java
1.3 Caractérisation du langage Java (4/7)

Production d’une application Java standard

Bytecode
POO : Java

COMPILATEUR
[Link] JAVA [Link]

Code source

[Link]

Bytecode = Pseudo code machine (ou code intermédiaire) qui,


contrairement au code binaire natif, n'est pas exécuté directement par le
processeur, ce qui peut ralentir l'exécution comparé à du code natif.
Sofiane HACHICHA
ISIMG 2025 - 2026
20
1- Introduction générale à Java
1.3 Caractérisation du langage Java (5/7)

Exécution d’une application Java standard


POO : Java

Bytecode
JVM
[Link] INTERPRETEUR Résultats
DE BYTECODE

JVM = Programme capable d'interpréter les instructions contenues


dans les fichiers bytecode Java afin de les exécuter sur n'importe quelle
Sofiane HACHICHA plateforme (Linux, Mac OS, Windows,…) sans aucune modification.
ISIMG 2025 - 2026
21
1- Introduction générale à Java
1.3 Caractérisation du langage Java (6/7)

Le langage Java est robuste et sûr :


Java est un langage fortement typé, ce qui signifie
que le type de chaque variable, paramètre ou attribut
est vérifié à la compilation.
POO : Java

Il permet la détection de nombreuses erreurs de type


dès la compilation.
Seules les conversions sûres sont effectuées
automatiquement par le compilateur.
Fiabilité de la gestion de la mémoire :
Java n’a pas de pointeurs explicites, ce qui élimine de
nombreux risques liés à la manipulation directe des
adresses mémoire.
Il dispose d’un ramasse-miettes automatique (garbage
collector) qui gère la mémoire et évite les fuites.
Il effectue un contrôle automatique des accès aux
Sofiane HACHICHA
tableaux et aux chaînes de caractères pour éviter des
ISIMG 2025 - 2026 dépassements.
22
1- Introduction générale à Java
1.3 Caractérisation du langage Java (7/7)

Le langage Java est multi-thread :


Java permet l’exécution en parallèle de plusieurs
threads, facilitant la programmation concurrente.
POO : Java

La classe [Link] fournit des méthodes


permettant de démarrer, exécuter et stopper les
threads.
La classe ThreadGroup permet de regrouper des
threads pour les gérer collectivement.
Pour une gestion avancée des threads, les classes
du framework Executor (dans [Link])
offrent un contrôle efficace des pools de threads et
facilitent la programmation concurrente complexe, en
gérant le cycle de vie des threads et la parallélisation
des tâches.
La synchronisation en Java permet de contrôler
l’accès concurrent à des ressources partagées pour
Sofiane HACHICHA éviter les conflits entre threads.
ISIMG 2025 - 2026
23
1- Introduction générale à Java
1.4 Java par l’exemple (1/6)

Fichier «[Link] »
// Commentaire
Définition d’une classe XXX
POO : Java

Méthode main ( )

Classiquement, un programme Java contient une classe


qui :

porte le même nom que le fichier ayant l’extension


« .java » dans lequel elle est enregistrée.
comporte (au moins) une méthode appelée main.

Sofiane HACHICHA
ISIMG 2025 - 2026
24
1- Introduction générale à Java
1.4 Java par l’exemple (2/6)

Fichier «[Link] »
// Ce programme affiche le message « Bonjour ISIMG »
class PremierProgramme
POO : Java

{
public static void main(String args[] )
{
[Link]("Bonjour ISIMG");
}
}

La première ligne du programme « PremierProgramme »


est une ligne de commentaire :
Elle commence par //.
Tout ce qui est compris entre ces deux caractères et
Sofiane HACHICHA
ISIMG 2025 - 2026
la fin de la ligne est ignoré par le compilateur.
25
1- Introduction générale à Java
1.4 Java par l’exemple (3/6)

Le mot clé class permet de définir une nouvelle classe


Java, suivi du nom de cette classe.
POO : Java

En Java, les majuscules et les minuscules sont considérés


comme des caractères différents.
PremierProgramme n’est pas identique à
PREMIERProgramme.

Les caractères « { « et « } » marquent le début et la fin


du bloc d’instructions à réaliser par la classe.

main() : représente la méthode principale de la classe.

Un interpréteur Java a pour fonction d’exécuter les


Sofiane HACHICHA instructions contenues dans le bloc d’instruction de la
ISIMG 2025 - 2026
méthode principale main, du programme qu’on lui soumet.
26
1- Introduction générale à Java
1.4 Java par l’exemple (4/6)

Une méthode est une sorte de procédure (ensemble


d’instructions) appartenant à une classe.
Une méthode peut prendre des paramètres de types
POO : Java

précis et renvoie éventuellement une valeur de type


aussi précis.

Le mot clé void signifie que la méthode main ne renvoie


aucune valeur. args est le nom du paramètre d’entrée de
type String[] de la méthode main, qui permet de passer
des arguments à la ligne de commande au programme.

les mots clés public et static décrivent des caractéristiques


de la méthode main.

[Link] est une commande permettant


Sofiane HACHICHA
ISIMG 2025 - 2026
d’afficher la chaîne de caractère « Bonjour ISIMG » sur la
sortie par défaut de votre machine qui est l’écran. 27
1- Introduction générale à Java
1.4 Java par l’exemple (5/6)

Depuis Java 21 (en mode preview) :


La méthode main() peut être une méthode d’instance
(non statique) avec ou sans tableau de chaînes de
POO : Java

caractères en paramètre.
// [Link]
class Exemple {
void main(){
[Link]("Bonjour");
}
}
Il n’est plus obligatoire de définir explicitement une
classe. Dans ce cas, une classe implicite sera définie
par le compilateur dans le package par défaut.
// [Link]
En Java 23 et 24 en mode
void main(){ preview, il est possible d’appeler
Sofiane HACHICHA [Link]("Bonjour"); println() sans préfixe dans les
ISIMG 2025 - 2026
} classes implicites. 28
1- Introduction générale à Java
1.4 Java par l’exemple (6/6)

A partir de Java 25 (en mode standard finalisé) :


La fonctionnalité des classes implicites permettra
d’écrire du code simplifié où la classe [Link] est
POO : Java

implicitement importée. Cette classe fournit des


méthodes comme println(), print() et readln().
En Java 25 standard, il faut désormais utiliser la
syntaxte explicite [Link]() car les méthodes ne
sont plus visibles directement sans qualification.
Dans ces classes implicites, il sera possible d’écrire :
// [Link]

void main(){
[Link]("Bonjour");
}

Sofiane HACHICHA sans avoir besoin d’écrire [Link]() ni de faire


ISIMG 2025 - 2026
un import explicite de [Link]. 29
1- Introduction générale à Java
1.5 Structure d’une application Java standard

Fichier «[Link] »
// Commentaire
Définition d’une classe AAA
POO : Java

// Commentaire

Définition d’une classe BBB

Définition d’une classe XXX


Méthode main ( )

Parmi les classes définies dans le fichier [Link], il ne peut y


avoir qu’une seule classe publique et cette classe doit avoir

Sofiane HACHICHA le même nom XXX que le fichier.


ISIMG 2025 - 2026
30
1- Introduction générale à Java
1.6 Exemple d’une application Java standard

Fichier «[Link] »
// Ce programme affiche le message « Bonjour ISIMG »
POO : Java

class PremierProgramme
{
static void Affiche( )
{
[Link]("Bonjour ISIMG");
}
public static void main(String args[] )
{
Affiche( );
}
}
Sofiane HACHICHA
ISIMG 2025 - 2026
31
1- Introduction générale à Java
1.7 Le Java Development Kit : JDK

Le JDK est l’ensemble d’outils et bibliothèques nécessaires


pour développer et exécuter des applications Java.
POO : Java

Java est également soutenu par la communauté open


source via le projet OpenJDK, lancé en 2006, qui
fournit une implémentation libre et ouverte de la
plate-forme Java.

Les environnements intégrés de développement (IDE)


Java sont actuellement :
commercialisés (Codenvy, IntelliJ IDEA Ultimate,
MyEclipse, …)
distribués gratuitement à travers le Web (Eclipse,
IntelliJ IDEA Community, NetBeans, BlueJ, JDeveloper,
Sofiane HACHICHA
DrJava, …).
ISIMG 2025 - 2026
32
1- Introduction générale à Java
1.8 Outils fournis par le JDK (1/3)

Le compilateur javac :
Compile les fichiers sources java de nom [Link].
Traduit les fichiers sources en bytecode :
POO : Java

Produit autant de fichiers .class que de classes définies dans le


fichier .java
L’interpréteur java/javaw :
Prend en paramètre le nom de la classe principale.
Recherche le ou les fichiers .class corresponds.
Appelle la méthode main de la classe principale.
Le documenteur javadoc :
Génère automatiquement une documentation sous la
forme de fichiers html à partir des fichiers sources
commentés.
L’outil jstat :
Sofiane HACHICHA
ISIMG 2025 - 2026 Un outil pour surveiller les statistiques de la JVM
33
1- Introduction générale à Java
1.8 Outils fournis par le JDK (2/3)

L’outil jconsole :
Un outil graphique permettant de contrôler et de gérer
le comportement des applications.
POO : Java

L’archive jar :
JAR est l’abréviation de Java ARchive. C'est un
format de fichier qui permet de regrouper des fichiers
contenant du bytecode (fichier .class) et des données
utilisées en tant que ressources (images, son, ...).
Depuis Java 9, Il est possible d’utiliser l’archive JMod.
L’outil jlink :
Un outil permettant de produire une nouvelle « JVM
light » dans laquelle on stocke uniquement les codes
des modules utilisés par l’application.
Le désassembleur de classe javap :
Un programme permettant de désassembler les
Sofiane HACHICHA
fichiers compilés en prenant en paramètre les fichiers
ISIMG 2025 - 2026 .class et de produire un texte en clair de la classe afin
34
d’examiner le bytecode.
1- Introduction générale à Java
1.8 Outils fournis par le JDK (3/3)

Le débogueur Java jdb :


Un programme permettant de faciliter la mise au point
des programmes grâce à de nombreuses options
POO : Java

permettant de surveiller leur exécution.


Il est beaucoup plus facile à utiliser lorsqu’il est
intégré à un IDE.
Un serveur web minimaliste jwebserver :
Depuis Java 18, un serveur web minimal est fourni
pour servir uniquement des fichiers statiques.
Les librairies de classe standard :
Classes pour réaliser les entrées sorties.
Classes pour réaliser des applications réseau.
Classes utilitaires (listes, maps, etc.).
Sofiane HACHICHA
La documentation en ligne.
ISIMG 2025 - 2026 … 35
1- Introduction générale à Java
1.9 Compiler et exécuter un programme Java en
ligne de commande (1/3)
Etapes :
Le fichier Java doit porter exactement le même nom
que la classe publique principale, respectant la
POO : Java

casse des caractères. Si la classe est nommée


PremierProgramme, le fichier doit s’appeler
[Link]

Compiler le programme : javac [Link]

Pour compiler en mode preview avec JDK 21 (par exemple) :

javac --enable-preview --release 21 [Link]

Un fichier [Link] contenant du


bytecode sera généré.

Sofiane HACHICHA
ISIMG 2025 - 2026
36
1- Introduction générale à Java
1.9 Compiler et exécuter un programme Java en
ligne de commande (2/3)

Exécuter le bytecode : java PremierProgramme


POO : Java

Pour exécuter le ByteCode généré en mode preview :


java --enable-preview PremierProgramme

Depuis Java 11, possibilité d’exécuter un programme depuis un


fichier source unique (mono-fichier), sans étape de compilation
préalable avec : java [Link]

Pour exécuter un programme depuis un fichier source


unique en utilisant une fonctionnalité preview (comme
les classes implicites) avec JDK 21 (par exemple) :

java --enable-preview --source 21 [Link]


Sofiane HACHICHA
ISIMG 2025 - 2026
37
1- Introduction générale à Java
1.9 Compiler et exécuter un programme Java en
ligne de commande (3/3)

Depuis Java 22, l est possible d’exécuter un programme Java


à partir d’un fichier source principal, et si ce fichier source utilise
POO : Java

une classe définie dans un autre fichier source, ce second fichier


sera aussi automatiquement compilé en mémoire. Seuls les
fichiers sources réellement utilisés par le programme principal
sont compilés en mémoire, ce qui simplifie l’exécution de
programmes multi-fichiers sans avoir à compiler
manuellement tous les fichiers au préalable.
// [Link] // [Link]
public class Prog { public class Utils {
public static void main(String[ ] args){ static void saluer(){
[Link](); [Link]("Hello");
} }
} }
Sofiane HACHICHA > java [Link]
ISIMG 2025 - 2026
Hello 38
1- Introduction générale à Java
1.10 JVM (1/2)

La JVM est une machine abstraite qui permet à la machine


physique (ordinateur) d’exécuter un programme Java.
Le compilateur Java compile d'abord le code Java en
bytecode. La JVM convertit ensuite ce bytecode en code
POO : Java

machine natif (ensemble d'instructions que le processeur


d'un ordinateur exécute directement).
La JVM définit les spécifications hardware de la plate-
forme.
Un compilateur JIT (Just In Time) est intégré à la JVM afin
d’améliorer les performances de l'exécution du bytecode.
L'idée d'un compilateur JIT est de compiler en code natif
le bytecode d'une méthode invoquée plusieurs fois.
Par défaut, le bytecode est exécuté par la JVM HotSpot.
La JVM possède trois tâches principales :
Charger le code (class loader)
Sofiane HACHICHA Vérifier le code (bytecode verifier)
ISIMG 2025 - 2026
39
Exécuter le code (runtime interpreter)
1- Introduction générale à Java
1.10 JVM (2/2)

JRE (Java Runtime Environment) est un progiciel qui


fournit des bibliothèques de classes Java, ainsi que JVM,
et d'autres composants permettant d'exécuter des
applications écrites en Java.
POO : Java

Lors du téléchargement du JDK, le JRE est également


téléchargé
pas besoin de télécharger le JRE séparément.

le JDK contient le JRE et plusieurs autres outils comme


présenté ci-avant

Sofiane HACHICHA
ISIMG 2025 - 2026
40
1- Introduction générale à Java
1.11 Java SE

Java SE ou Java Platform, Standard Edition


(anciennement Java 2 Platform, Standard Edition,
ou J2SE), est une spécification de la plate-forme
Java d'Oracle, destinée aux applications pour poste de
POO : Java

travail (desktop).

Java SE est composée de plusieurs API (Application


Programming Interface) Java :
Bibliothèques de classes Java standards sur lesquelles
le programmeur peut s’appuyer pour écrire son code.

À chaque version de Java SE correspond :


les Java Specification Requests (JSR), constituant les
spécifications de la version considérée ;
un JDK ;
Sofiane HACHICHA
ISIMG 2025 - 2026 un JRE contenant le seul environnement d'exécution 41
(Depuis Java 9, il est inclus de base dans le JDK).
1- Introduction générale à Java
1.12 Java vs C++

Un programme Java doit contenir au moins une classe.


POO : Java

Une méthode main() avec un type de retour void est


requise comme point d’entrée pour l’exécution d’une
application Java standard.

L’instruction include (comme en C/C++) est remplacée en


Java par l’instruction import.

Java ne gère pas les pointeurs directement, mais utilise


des références pour manipuler les objets.

Java ne supporte pas l’héritage multiple de classes. Une


classe ne peut hériter que d’une seule classe mère.
Sofiane HACHICHA
ISIMG 2025 - 2026
42

Vous aimerez peut-être aussi