Java V1
Java V1
1
Préparé par : JAI ANDALOUSSI SAID
Plan de cours
1
03/03/2023
Plan de cours
Le langage Java est un langage de programmation orienté objet créé par James Gosling
et Patrick Naughton, employés de Sun Microsystems, avec le soutien de Bill Joy
(cofondateur de Sun Microsystems en 1982), présenté officiellement le 23 mai 1995 au
SunWorld.
en 2009
rachetée par
2
03/03/2023
Java possède un certain nombre de caractéristiques qui ont largement contribué à son
énorme succès :
Java est interprété
Le fichier source est compilé en pseudo code ou bytecode puis exécuté par un interpréteur Java : la
Java Virtual Machine (JVM). Ce concept est à la base du slogan de Sun pour Java : WORA (Write Once,
Run Anywhere : écrire une fois, exécuter partout). En effet, le bytecode, s'il ne contient pas de code
spécifique à une plate-forme particulière peut être exécuté et obtenir quasiment les mêmes résultats
sur toutes les machines disposant d'une JVM.
3
03/03/2023
Java possède un certain nombre de caractéristiques qui ont largement contribué à son
énorme succès :
Java possède un certain nombre de caractéristiques qui ont largement contribué à son
énorme succès :
4
03/03/2023
Java possède un certain nombre de caractéristiques qui ont largement contribué à son
énorme succès :
Java possède un certain nombre de caractéristiques qui ont largement contribué à son
énorme succès :
Java est sûr
la sécurité fait partie intégrante du système d'exécution et du compilateur. Un programme
Java planté ne menace pas le système d'exploitation. Il ne peut pas y avoir d'accès direct à
la mémoire. L'accès au disque dur est réglementé dans une applet.
Les applets fonctionnant sur le Web sont soumises aux restrictions suivantes dans la
version 1.0 de Java :
• aucun programme ne peut ouvrir, lire, écrire ou effacer un fichier sur le système de
l'utilisateur
• aucun programme ne peut lancer un autre programme sur le système de l'utilisateur
• toute fenêtre créée par le programme est clairement identifiée comme étant une
fenêtre Java, ce qui interdit par exemple la création d'une fausse fenêtre demandant
un mot de passe
• les programmes ne peuvent pas se connecter à d'autres sites Web que celui dont ils
proviennent.
10
5
03/03/2023
Java possède un certain nombre de caractéristiques qui ont largement contribué à son
énorme succès :
11
Il existe 2 types de programmes avec la version standard de Java : les applets et les
applications.
• Une application autonome (stand alone program) est une application qui s'exécute
sous le contrôle direct du système d'exploitation.
• Une applet est une application qui est chargée par un navigateur et qui est exécutée
sous le contrôle d'un plug in de ce dernier.
▪ les applets n'ont pas de méthode main() : la méthode main() est appelée par la
machine virtuelle pour exécuter une application.
▪ les applets ne peuvent pas être testées avec l'interpréteur. Elles doivent être testées
avec l'applet viewer ou doivent être intégrées à une page HTML, elle même visualisée
avec un navigateur disposant d'un plug in Java,
12
6
03/03/2023
12 (ou JDK 12) : Publiée en 2019, la version 12 de Java a ajouté des fonctionnalités telles que la switch expression, l'API de la JVM pour
les conteneurs, la mise à l'échelle dynamique des machines virtuelles et l'amélioration des performances du garbage collector.
13 (ou JDK 13) : Publiée en 2019, la version 13 de Java a ajouté des fonctionnalités telles que la syntaxe de texte brut pour les littéraux,
l'API de point d'ancrage pour les Garbage Collectors, le support de la mise en cache des compilateurs JIT et l'ajout de plusieurs
fonctionnalités pour les API de flux et d'E/S.
14 (ou JDK 14) : Publiée en 2020, la version 14 de Java a ajouté des fonctionnalités telles que les enregistrements, les expressions switch,
le support des chaînes de caractères au format UTF-8 et l'amélioration de la lecture des fichiers.
15 (ou JDK 15) : Publiée en 2020, la version 15 de Java a ajouté des fonctionnalités telles que les opérateurs de text blocks, l'amélioration
des performances de l'allocation de mémoire et l'ajout d'une API pour les sockets Unix.
16 (ou JDK 16) : Publiée en 2021, la version 16 de Java a ajouté des fonctionnalités telles que les enregistrements de classe locales,
l'amélioration de la gestion des erreurs, l'ajout de l'API Vector API pour les calculs à haute performance et l'ajout de fonctionnalités pour
les flux et les E/S.
17 (ou JDK 17) : Publiée en 2021, la version 17 de Java a ajouté des fonctionnalités telles que la rétrocompatibilité avec des versions
antérieures, l'amélioration des performances du garbage collector, l'ajout de l'API contextuelle et la simplification des paramètres du JDK.
14
7
03/03/2023
15
16
8
03/03/2023
▪ Java Standard Edition (J2SE / Java SE) : environnement d'exécution et ensemble complet
d'API pour des applications de type desktop. Cette plate-forme sert de base en tout ou
partie aux autres plate-formes
▪ Java Enterprise Edition (J2EE / Java EE) : environnement d'exécution reposant
intégralement sur Java SE pour le développement d'applications d'entreprises
▪ Java Micro Edition (J2ME / Java ME) : environnement d'exécution et API pour le
développement d'applications sur appareils mobiles et embarqués dont les capacités ne
permettent pas la mise en oeuvre de Java SE
17
▪ Applications desktop
▪ Applications web : servlets/JSP, portlets, applets
▪ Jeux : Les jeux peuvent être développés en Java à l'aide de bibliothèques telles que
LWJGL (Lightweight Java Game Library) et jMonkeyEngine.
▪ Applications pour appareil mobile (MIDP) : midlets
▪ Applications scientifiques : Les applications scientifiques telles que la modélisation
numérique et la simulation peuvent être développées en Java à l'aide de bibliothèques
telles que JAMA (Java Matrix Package) et JFreeChart.
▪ Applications pour appareil embarqué (CDC) : Xlets
▪ Applications pour carte à puce (Javacard) : applets Javacard
▪ Applications temps réel
18
9
03/03/2023
LA SYNTAXE DE JAVA
Java est un langage objet qui s’appuie sur la syntaxe du langage C et du C++. Java est un
langage objet : on doit utiliser les classes et les objets ; C++ est un langage orienté objet,
sorte de langage hybride permettant à la fois la programmation classique sans objets et la
programmation avec objets.
La figure ci-dessous présente un programme réalisant la somme des nb
éléments d’un tableau tabEnt d’entiers.
19
LA SYNTAXE DE JAVA
• Java est sensible à la casse.
• Les blocs de code sont encadrés par des accolades. Chaque instruction se termine par un
caractère ';' (point virgule).
• Une instruction peut tenir sur plusieurs lignes :
Les commentaires
Il existe trois types de commentaire en Java :
20
10
03/03/2023
LA SYNTAXE DE JAVA
La déclaration de variables
Une variable possède un nom, un type et une valeur.
La déclaration d'une variable permet de réserver la mémoire pour en stocker la valeur.
Le type d'une variable peut être :
• soit un type élémentaire dit aussi type primitif déclaré sous la forme
type_élémentaire variable;
• soit une classe déclarée sous la forme classe variable ;
Rappel : les noms de variables en Java peuvent commencer par une lettre, par le caractère de
soulignement ou par le signe dollar. Le reste du nom peut comporter des lettres ou des nombres
mais jamais d'espaces.
21
LA SYNTAXE DE JAVA
Les types élémentaires
Les types élémentaires ont une taille identique quelque soit la plate-forme d'exécution :
c'est un des éléments qui permet à Java d'être indépendant de la plate-forme sur laquelle
le code s'exécute
22
11
03/03/2023
LA SYNTAXE DE JAVA
Exemples de déclaration de variables avec ou sans valeur initiale
23
LA SYNTAXE DE JAVA
Exemples de déclaration de variables avec ou sans valeur initiale
24
12
03/03/2023
LA SYNTAXE DE JAVA
Exemples de déclaration de variables avec ou sans valeur initiale
Java vérifie qu’une variable locale (à la fonction main() dans cet exemple) est initialisée
avant son utilisation. Si la variable n’est pas initialisée, le compilateur signale un message
d’erreur comme sur les exemples ci-dessous.
Lorsque vous essayez de compiler ce code, le compilateur Java signalera une erreur
25
LA SYNTAXE DE JAVA
Exemples de déclaration de variables avec ou sans valeur initiale
L’instruction suivante écrit en début de ligne (indiquée par \n), pour chaque variable, son
nom suivi de sa valeur convertie en caractères. L’opérateur + est ici un opérateur de
concaténation de chaînes de caractères.
26
13
03/03/2023
LA SYNTAXE DE JAVA
Exemple de résultats d’exécution de la classe TypesPrimitifs :
Remarque : pour chaque type, des constantes indiquant les maximums et les minimums sont définies
: Byte.MIN_VALUE, Byte.MAX_VALUE, Short.MIN_VALUE, etc.
27
LA SYNTAXE DE JAVA
28
14
03/03/2023
LA SYNTAXE DE JAVA
Les constantes symboliques
Les constantes symboliques sont déclarées comme des variables précédées de final . Leur
contenu ne peut pas être modifié par la suite. L’identificateur de la constante est souvent
écrit en majuscules. Exemples de déclaration de constantes symboliques :
29
LA SYNTAXE DE JAVA
Les opérateurs arithmétiques, relationnels, logiques
Les opérateurs arithmétiques réalisent des opérations sur des variables entières ou
réelles. Les opérations possibles sont listées ci-après.
30
15
03/03/2023
LA SYNTAXE DE JAVA
Les opérateurs (relationnels) de comparaison
31
LA SYNTAXE DE JAVA
Le transtypage (cast)
Le transtypage est nécessaire quand il risque d’y avoir perte d’information, comme lors de
l’affectation d’un entier long (64 bits) à un entier int (32 bits), ou d’un réel double vers un
réel float. On force alors le type, indiquant ainsi au compilateur qu’on est conscient du
problème de risque de perte d’information.
Remarque : dans les expressions arithmétiques, les entiers de type byte ou short sont considérés
comme des int (convertis d’office en int). Si b1 est un byte, b1 + 1 est considéré être un int.
L’affectation b1 = b1 + 1 est illégale sans cast (de type int -> byte)
32
16
03/03/2023
LA SYNTAXE DE JAVA
Les tableaux à une dimension : Les tableaux d’éléments de type primitif
Plusieurs éléments de même type peuvent être regroupés (sous un même nom) en tableau.
On peut accéder à chaque élément à l’aide d’un d’indice. Le premier élément porte l’indice
0. Les tableaux sont alloués dynamiquement en Java. Ils sont initialisés par défaut à 0 pour
les nombres et à faux pour les tableaux de booléens.
(1) et (2) sont identiques et corrects en Java. La forme (2) indique mieux un tableau d’entiers nommé tabEnt, et
initialisé avec les valeurs 1, 2 et 3.
LA SYNTAXE DE JAVA
Les tableaux à une dimension : Les tableaux d’éléments de type primitif
Exemples de déclarations avec allocation dynamique du tableau :
déclare et définit la variable tabEnt comme une référence sur un tableau d’entiers, mais ne
réserve pas de place mémoire pour ce tableau. L’allocation doit se faire avec new en
indiquant le nombre d’éléments. Ci-après, on réserve 10 éléments de type int, numérotés
de 0 à 9.
34
17
03/03/2023
LA SYNTAXE DE JAVA
Les tableaux à une dimension : Les tableaux d’éléments de type primitif
35
LA SYNTAXE DE JAVA
Les tableaux à une dimension : Les tableaux d’objets
On déclare de la même façon un tableau d’objets. tabBalle est un tableau d’éléments de
type Balle pouvant référencer six objets de type Balle numérotés de 0 à 5.
Les chaînes de caractères étant gérées en Java sous forme de classes, on peut de même
déclarer des tableaux d’objets de type String (chaînes de caractères).
36
18
03/03/2023
LA SYNTAXE DE JAVA
Les tableaux à une dimension : Les tableaux à plusieurs dimensions
On peut généraliser la notion de tableau à une dimension pour créer des tableaux
multidimensionnels. Un tableau à deux dimensions est un tableau de tableaux.
37
LA SYNTAXE DE JAVA
Les instructions de contrôle (alternatives, boucles)
Les instructions de contrôle du déroulement lors de l’exécution des instructions ont la
même syntaxe que pour le langage C. Leur syntaxe est présentée succinctement ci-
dessous. L’espace n’étant pas significatif en Java, les instructions peuvent être présentées
(indentées) de différentes façons.
38
19
03/03/2023
LA SYNTAXE DE JAVA
Les instructions de contrôle (alternatives, boucles)
39
LA SYNTAXE DE JAVA
Les instructions de contrôle (alternatives, boucles)
40
20
03/03/2023
LA SYNTAXE DE JAVA
Les instructions de contrôle (alternatives, boucles)
Les boucles for, while et do ... while
41
LA SYNTAXE DE JAVA
Les instructions de contrôle (alternatives, boucles)
42
21