Vous êtes sur la page 1sur 21

Cours POO

Chapitre 2: Introduction au langage JAVA

I. Introduction
Le langage Java (café en anglais parlé) a été créé dans les années 90, par la firme
Sun Microsystems, par l’équipe de James Gosling qui souhaitait créer un
environnement indépendant des architectures matérielles et des systèmes d’exploitation.
Au début ce langage était connu sous le nom d’OAK.

Le langage Java est un langage généraliste de programmation synthétisant les principaux


langages. Il permet une programmation orientée-objet (à l’instar de SmallTalk et, dans
une moindre mesure, C++), modulaire (langage ADA) et reprend une syntaxe très proche
de celle du langage C.

Outre son orientation objet, le langage Java a l’avantage d’être modulaire (on peut écrire
des portions de code génériques, c-à-d utilisables par plusieurs applications), rigoureux
(la plupart des erreurs se produisent à la compilation et non à l’exécution) et portable (un
même programme compilé peut s’exécuter sur différents environnements). En contre-
partie, les applications Java ont le défaut d’être plus lentes à l’exécution que des
applications programmées en C par exemple.

En 2010 c’est l’achat de Sun Microsystems Par Oracle et en 2011 apparition de java7
et du JDK7. On est actuellement à la version java SE8 et JDK8.

II. Les différentes éditions de java


Sun définit trois plateformes d'exécution (ou éditions) pour Java pour des cibles
distinctes selon les besoins des applications à développer :

 Java Standard Edition (JSE / Java SE) : environnement d'exécution et


ensemble complet d'API pour des applications de type poste de travail.
Cette plate-forme sert de base en tout ou partie aux autres plateformes.
 Java Enterprise Edition (JEE / Java EE) : environnement d'exécution
reposant intégralement sur Java SE pour le développement d'applications
d'entreprises et ceci afin de faciliter la création d’applications réparties.
 Java Micro Edition (JME / 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 œuvre de Java SE
La séparation en trois plateformes permet au développeur de mieux cibler
l'environnement d'exécution et de faire évoluer les plateformes de façon plus
indépendante.

1
Cours POO

III. Architecture du langage JAVA


Les concepteurs du langage ont réalisé trois outils qui constituent la base de
fonctionnement des programmes java :

- Machine virtuelle Java (JVM)


- Java Runtime Environment (JRE)
- Java Development Kit (JDK)

1. La JVM
C’est une couche logicielle intermédiaire entre les systèmes d’exploitation et les
programmes écrits en java. Elle isole les programmes java des contraintes de
l’environnement local, assurant ainsi leur portabilité.

Dans cette optique, un programme écrit sur PC, par exemple, doit pouvoir
s’exécuter sur un PC (de type IBM), un Macintosh (Apple) ou une station Unix (de
type Sun), et ce sans réécriture ni compilation du code source. Or, le code binaire
est spécifique pour chaque machine. Il est impossible de faire tourner un même
programme source d’une machine à une autre sans le compiler à nouveau. En effet,
lors de la nouvelle compilation, des erreurs apparaissent, dues aux différences de
matériel informatique.

Pour corriger cet inconvénient majeur, l’idée de J.Gosling a été de créer un code
intermédiaire entre le code source et le code binaire. Ce code intermédiaire est
appelé pseudo-code, ou encore byte code.

En effet, en créant un pseudo-code, identique pour tous les ordinateurs, il est


possible d’exécuter ce code sur différentes machines, sans avoir à le recompiler.

Ce code sera interprété par une machine virtuelle java, ou JVM (Java Virtual
Machine). C'est à dire que chaque instruction du bytecode sera lue et décodée
puis traduite en langage machine local. Pour qu’un système puisse faire tourner des
programmes java, il

faut donc que la JVM soit portée sur le système en question.

2
Cours POO

L’avantage d’un tel système est que le développeur d’applications est certain de créer
des programmes totalement compatibles avec les différents ordinateurs du marché sans
avoir à réécrire une partie du code.

2. Le JRE (Java Runtime Environement)


C’est le conteneur de l’environnement d’exécution du Java sur toutes les
plateformes (cad contient tous les éléments nécessaires pour faire fonctionner une
application java). Le JRE doit être installé sur toutes les machines susceptibles de
lancer des applications de type Java. Appelé aussi « Runtime », Il inclut:

 L'implémentation d'une machine virtuelle Java

 Java : C’est l’interpréteur Java, permettant l'exécution des fichiers (.class)

 Javaw : pour l’exécution des programmes contenant des interfaces


graphiques
3
Cours POO

 La librairie de classes Java

3. Le JDK (Java Development Kit)


Il contient le JRE. C’est l’environnement indispensable au développement et à la
création de programmes Java. Il inclut un compilateur, un interpréteur, ainsi qu’un
environnement de développement comprenant des outils et des utilitaires
favorisant la programmation.

Le JDK contient un grand nombre d'outils tels que :

 JRE
 Javac : Java Compiler, le compilateur Java ; il compile un fichier
source (.java) en un fichier (.class) contenant du byte-code
 Javadoc: C'est un utilitaire très puissant qui permet de construire la
documentation de développement, à partir des commentaires insérés
dans des sources Java, des fichiers HTML à propos des classes,
méthodes…
 AppletViewer : Pour exécuter les applets
 Jar : Permet la création et la gestion des fichiers JAR (Java Archive)
 D’autres utilitaires

IV. Caractéristiques du langage java


 Simple
La facilite d’accès à Java commence par le fait que la syntaxe est héritée de
C++ et donc qu’un développer C ou C++ pourra facilement maîtriser ce
nouveau langage. Les développeurs de Java ont décidé de simplifier
considérablement C++ : certaines fonctionnalités, telles que l’héritage
multiple ou la surcharge d’opérateurs, ou les types inutiles n’ont pas été
retenus par l’équipe qui a conçu Java. Pour faciliter la programmation, Java
intègre également une importante librairie de classes prédéfinies.

 Portable
Ce langage a été créé pour être fonctionnel au sein d’une architecture réseau
de machines et de systèmes d’exploitation hétérogènes, car son
implémentation se base sur le déploiement d’une machine virtuelle.

 Orienté objet
En java, il n’y a pas ni de constantes ni de variables ou de fonctions
autonomes puisque l’accès se fait toujours par des classes et des objets.On
peut dire donc que le niveau le plus externe de la structure des données est

4
Cours POO

l’objet d’où Java est un pur langage orienté objets.

 Compilé et interprété
Un programme Java est compilé dans un langage de la JVM qui est le byte-
code (Ce code constitue les instructions pour la JVM), ce dernier devra
ensuite être interprété par la JVM.

 Sécurisé
Java étant prévu pour être utilisé en réseau, la sécurité a été prise en compte
dès le début de la définition de ce langage : La technique d’authentification
s’appuie sur des mécanismes de chiffrement à clé publique. C’est grâce aux
restrictions apportées au langage qui interdisent à des applications
d’accéder et de modifier les structures de données en mémoire, que Java
permet le développement de systèmes totalement résistant aux virus.

 Multithreadé
L’utilisation du multithreading permet à un seul programme d’effectuer plusieurs
activités simultanément. En effet, Java permet aux programmeurs la gestion de
multiples threads. Ce qui représente un outil puissant pour améliorer l'exécution
interactive des applications.

Java offre une classe Thread qui renferme une collection riche de méthodes
pour tout type d’action (commencer, exécuter, arrêter et vérifier l’état d’un
thread).

V. La Syntaxe du langage Java


1. Les identificateurs
Définition
Les identificateurs permettent de nommer les différents éléments (variables,
constantes, classe, méthodes, packages,…) des programmes Java.

Un identificateur commence par une lettre, un trait de soulignement (_)


ou un signe dollar($), les caractères suivants peuvent également comporter
des chiffres. Les identificateurs opèrent une distinction
majuscules/minuscules et n’ont pas de longueur maximale, ne peuvent pas
contenir d’espace vide et ne doivent pas être des mots clés de Java.

Exemples : mon_entier et ok4all sont des identificateurs valides mais

mon-entier et 4all ne sont pas valides pour des identificateurs.

5
Cours POO

Les mots clés java


Abstract Boolea Break Byte byvalue case
n *
cast* Catch Char Class const* continu
e
Default Do Double Else extends false
Final Finally Float For Future* Generic
*
goto* If impleme import inner* instance
nts of
Int Interfac long Native New null
e
operator outer* package private protect public
* ed
rest* Return short Static Super switch
Synchro This throw throws transie true
nized nt
var* Void volatile While

* Réservé mais non utilisé

Conventions de codage
Les identificateurs sont composés d’un ou de plusieurs mots. Pour
faciliter la lisibilité, la première lettre de chacun des mots est
conventionnellement en Majuscule, sauf pour le premier mot qui est fonction
de la nature de l’identificateur.

Classes ou Interfaces : la première lettre de l’identificateur d’une


classe doit Conventionnellement être en majuscule.

Méthodes ou Variables : la convention de nommage indique que la


première lettre du mot doit être en minuscule.

Constantes : la convention de nommage indique que leur nom doit


être en majuscule.

Autres conventions : Pour les Structures de contrôle on utilise des {}


autour des instructions, même s’il s’agit d’une seule, lorsqu’elles font
partie d’une structure de contrôle, telle que if-else ou for.

Remarque : Si possible, des noms pour les classes et des verbes pour les
méthodes

La déclaration de variables
Une variable possède un nom, un type et une valeur. La déclaration d'une variable doit
donc contenir deux choses : un nom et le type de données qu'elle peut contenir. Une
variable est utilisable dans le bloc où elle est définie. La déclaration d'une variable

6
Cours POO

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 ;

Exemple :
Long nombre;

Int compteur;

String chaine;

VI. Les types de données


Java est un langage fortement typé : chaque variable et chaque expression possède
un type bien défini. Les types de données de Java sont divisés en deux grands
groupes :

 Les types primitifs: boolean, int, short, byte, float, long, double, char.

 Le type référence: chaîne de caractères (String), tableau ou classe.

Les types primitifs


 boolean
- Type défini sur 1 bit
- Valeurs possibles :{false, true}
- Valeur par défaut : false
 char
- Type défini sur 16 bits.
a. Les types entiers
 byte
- Type défini sur 8 bits.
- Valeurs possibles -128 à 127
- Valeur par défaut: 0
 short
- Type défini sur 16 bits.
15 15
- Valeurs possibles -2 à 2 -1 (-32768 à 32767)

7
Cours POO

- Valeur par défaut: 0

 int
- Type défini sur 32 bits.
31 31
- Valeurs possibles -2 à 2 -1
- Valeur par défaut: 0
 long
- Type défini sur 64 bits.
63 63
- Valeurs possibles -2 à 2 -1
- Valeur par défaut: 0

b. Les types Réels

 float
- Type défini sur 32 bits.
- Valeur par défaut: 0.0F

 double

- Type défini sur 64 bits.


- Valeur par défaut: 0.0D

Remarque : Les types float et double stockent des nombres flottants : pour être
reconnus comme tels ils doivent posséder soit un point, un exposant ou l'un des suffixes
f, F, d, D.

Exemple :
float pi = 3.141f;

double valeur = 3d;

Java dispose également de classes permettant d’envelopper les primitives :

Classe Primitive (type)


Character Char

8
Cours POO

Byte Byte
Short Short
Integer Int
Long Long
Float Float
Double Double
Boolean Boolean

Remarque : int a ; double b = 5.0 ;a = b ;est interdit et doit être écrite de la


manière suivante : int a ; double b = 5.0 ;a = (int)b ;

Opération de Transtypage (cast)


Syntaxe : (typeCast) expression

Cette opération permet de convertir le type de l’expression en typeCast.


Exemple : (int)x =2 ; // Convertit x en entier

Exemple1

x = 15; /*15 est transformée automatiquement en (double)


double
15.0 avant d’être affectée à la variable x */

Exemple2

x=3, y=2;
int
double z = x/y; // affecte la valeur 1.0 à z

double z = (double) x/y; // la valeur 1.5 est affectée à z

VII. Les Constantes ou les littéraux


Java ne comporte pas de constantes à proprement parler. Il est
cependant possible de simuler l'utilisation de constantes à l'aide du mot
clé final. Une variable déclarée final ne peut plus être modifiée une fois
qu'elle a été initialisée.

Il faut noter que par défaut, un littéral réel est de type double donc un
suffixe F permet d'identifier un littéral float et un suffixe D permet
d'identifier un littéral double.

Exemple: final float PI=3.141592F;

9
Cours POO

VIII. Les instructions


Définition
Les instructions représentent des commandes uniques, elles sont séparées
par des points virgule et peuvent être écrites sur plusieurs lignes.

Exemple

x = (y + z) / q; //instruction 1
Les blocs de code
Un bloc de code est un groupe d’instructions qui se comportent comme une
Unité. Java délimite les blocs de code par des accolades ({ et }).

Exemple

int i=0;
while (i<5)

System.out.println
Bloc While
(i); i=i+1 ;

Les commentaires
Trois notions sont admises pour l’insertion de commentaires:

// Commentaire sur une seule ligne


/* commentaire sur une

ou plusieurs lignes */

/** commentaire d’explication */


Les commentaires d’explication sont des commentaires qui permettent de
générer automatiquement une documentation avec l’utilitaire javadoc
(générateur automatique de document).

Les expressions
Une expression est une combinaison significative d’identificateurs, de mots
clés, de symboles et d’opérateurs et qui a une valeur.

10
Cours POO

 Les opérateurs arithmétiques

Opérateur Description Exemple


++/-- Incrémentation/Décrémentati int
on automatique i=5 ;
i++;
++i;
+/- Addition/soustraction 5+9
* Multiplication 5*3
/ Division 10/2
% Modulo 9%3
 Les opérateurs d’affectation
Opérateur Description Exemple
= Affectation int i=5 ;
+= Addition et affectation i+=10 ;//(i a la valeur 15)
-= Soustraction et affectation i-=3 ; //(i a la valeur 12)
*= Multiplication et affectation i*=2 ; //(i a la valeur 24)
+= Addition et affectation i/=3 ; //(i a la valeur 8)
+= Addition et affectation i%=3 ; //(i a la valeur 2)

 Les opérateurs de comparaison


Opérateur Description Exemple
< Strictement inférieur à boolean b=5<5 ;//(b a la valeur false)
> Strictement supérieur à b=5>4 ; //(b a la valeur true)
<= Inférieur ou égal à b=12<=13;//(b a la valeur true)
>= Supérieur ou égal à b=12>=13;//(b a la valeur false)
== Egal à b=15==15;//(b a la valeur true)
!= Différent de B=7 !=7;//(b a la valeur false)

 Les opérateurs logiques

Opérateur Description Exemple

11
Cours POO

! Non logique(NOT) boolean t=true ;//( t a la valeur


true) boolean f=( !t) ;//( f a la
valeur false)
&& Et logique(AND) boolean b=(a &&b) ;//( b a la
valeur false)

|| Ou logique(OR) b=(a| |b) ;//( b a la valeur true)

 Un opérateur spécial : l’opérateur ?:


C’est un opérateur ternaire, Voici la syntaxe :

expression3;
expression1? expression2:

L’expression1 est évaluée en premier. Si sa valeur est true, l’expression2 est


calculée, sinon l’expression3 est calculée.

Exemple

x = 3, y = 4,
int
max; max = (x > y)?
x : y;
 La priorité des opérateurs

Java définit les priorités dans les opérateurs comme suit (du plus prioritaire au moins
prioritaire).

Les parenthèses ayant une forte priorité, l'ordre d'interprétation des opérateurs peut être
modifié par des parenthèses.

12
Cours POO

Les instructions de contrôle


 Les instructions conditionnelles
L'instruction ''if....else''

if (condition1) {//blocCode 1

} else if (condition2) {

//blocCode 2

} else {

//blocCode 3

Il faut noter que le mot else et l’instruction qu’il introduit sont facultatifs et que les
conditions sont des expressions booléennes quelconques (entourées de parenthèses). On
note aussi qu’une instruction if peut contenir d’autres instructions if et que le else se
rapporte toujours au dernier if rencontré auquel un else n’a pas encore été attribué. On
termine par dire que les accolades permettent d'attribuer explicitement un else à un if.

13
Cours POO

Exemple

if (a>b)

{if (a>c)
max=a ; else
if (c>a)
max=c ;

}else if (b>c)
max=b ;

else

max=c ;

L'instruction ''switch case''


switch (expression){

case valeur1: blocCode1;

break;

case valeur2: blocCode2;

break;
default :
blocCode3; }

La valeur de l’expression doit être de type nombre entier (ou d’un type qui
peut être transtypé en int sans risque, comme char).

Les valeurs case doivent être des expressions constantes du même type que
l’expression.

La clause default est optionnelle. Elle permet de spécifier un traitement pour


les cas non présents dans les clauses case. L'instruction break fait sortir de la
structure switch. Si elle est absente à la fin du bloc d'instructions de la valeur
vi, l'exécution se poursuit alors avec les instructions de la valeur vi+1.

Exemple :

char sexe = 'F';

switch (sexe)

{case ‘m’ :

14
Cours POO

case 'M':

System.out.println ("Vous êtes un homme.");

break;

case ‘f’ :

case 'F':

System.out.println ("Vous êtes une femme.");

break;

default:

System.out.println ("Vous êtes de sexe indéterminé.");

 Les instructions répétitives

l’instruction for

(instr_init; condition; instr_iteration) {


for
//blocCode

Exemple

for (int i=0;i<10;i++){

if(i<5)

System.out.println("c’est inf à 5");

else

System.out.println("iteration "+i);}

L'instruction for each

L'instruction for each permet de parcourir automatiquement un ensemble d'éléments.

15
Cours POO

On boucle jusqu'à ce que tous les éléments de l'ensemble soient parcourus.

( type variable_de_parcours : ensemble_d'élément)


for

{ instructions ;

Exemple

int[] tableau={1,2,3,4,5} ;//crée un tableau de 5 entiers

for (int val : tableau)//parcours automatique du tableau

{System.out.println(val+" :");

L'instruction while

(condition)
while
{

//blocCode

On boucle tant que la condition est vérifiée. La boucle peut ne jamais être exécutée et
l'accolade n'est pas suivie de point-virgule.

Ne pas mettre de ";" après la condition sinon le corps de la boucle ne sera jamais exécuté.

Exemple

16
Cours POO

int i=0;
while (i<10)
{ if (i<5){

System.out.println("c’est inf à 5");

}else
System.out.println("iteration
"+i); i++;}

L'instruction do while

do{ act
ion1;
action2
;

}while(condition) ;
On boucle tant que la condition est vraie Cette boucle est au moins
exécuté une fois quelque soit la valeur de la condition booléenne.

Exemple

int i=0;

do{

if (i<5){

System.out.println("c’est inf à 5");

}else
System.out.println("iteration
"+i); i++;

}while(i<10);

 Les instructions de branchement incondionnelles


L'instruction break

L'instruction break permet d'arrêter un bloc ou une structure (boucle ou switch). Si


plusieurs blocs sont présents break arrêtera le bloc le plus proche. Une étiquette peut être
définie pour spécifier la structure à arrêter par break.

17
Cours POO

Remarque : Il est possible de nommer une boucle pour permettre de l'interrompre même
si cela est peu recommandé.

Exemple

int cnt = 0;

while (cnt >= 0) // Boucle infinie !

cnt++;

if (cnt > 5)

break;

System.out.println (cnt);

L'instruction continue

L'instruction continue permet de passer prématurément au tour de boucle suivant.

Exemple

18
Cours POO

int cnt = -3;

while (cnt < 2)

cnt++;

if (cnt == 0)

{continue; }

System.out.println (cnt);

Voici ce que l'exécution du programme affiche à l'écran :

-2

-1

La figure suivante montre le déroulement du programme. L'instruction continue a donc comme


rôle de « passer un tour » de boucle.

19
Cours POO

VIII. Les tableaux

Une variable est déclarée comme un tableau dès lors que des crochets sont présents soit
après son type, soit après son identificateur. Les deux syntaxes suivantes sont acceptées
pour déclarer un tableau d’entiers (même si la première, non autorisée en C, est plus
intuitive) :

int[] mon_tableau ;

int mon_tableau2[];

Un tableau a toujours une taille fixe qui doit être précisée avant l’affectation de valeurs
à ses indices, de la manière suivante :

int[] mon_tableau = new int[20];

De plus, la taille de ce tableau est disponible dans une variable length appartenant au
tableau et accessible par mon_tableau.length.

On peut également créer des matrices ou des tableaux à plusieurs dimensions en


multipliant les crochets (ex : int[][] ma_matrice;).

À l’instar du C, on accède aux éléments d’un tableau en précisant un indice entre


crochets (mon_tableau[3] est le quatrième entier du tableau) et un tableau de taille n
stocke ses éléments à des indices allant de O à n-1.

L'initialisation explicite d'un tableau peut se faire de la manière suivante:

int tableau[5] = {10,20,30,40,50};

int tableau[3][2] = {{5,1},{6,2},{7,3}};

La taille du tableau n'est pas obligatoire si le tableau est initialisé à sa création :


int tableau[] = {10,20,30,40,50};

I. Les chaines de caractères

Les chaînes de caractères ne sont pas considérées en Java comme un type primitif ou
comme un tableau. On utilise une classe particulière, nommée String, fournie dans le
package java.lang.

Les variables de type String ont les caractéristiques suivantes :

● Leur valeur ne peut pas être modifiée

20
Cours POO

● On peut utiliser l’opérateur + pour concaténer deux chaînes de caractères :

String s1 = ”hello” ;

String s2 = ”world” ;

String s3 = s1 + ” ” + s2 ;

//Après ces instructions s3 vaut ”hello world”

● l’initialisation d’une chaîne de caractères s’écrit :

String s = new String(); //pour une chaine vide

String s2 = new String(”hello world”);

// pour une chaîne de valeur ”hello world”

● Un ensemble de méthodes de la classe java.lang.String permettent d’effectuer des


opérations ou des tests sur une chaîne de caractères

Exemples

 La comparaison de deux chaines : Il faut utiliser la méthode equals()

String texte1 = " texte 1 ";

String texte2 = " texte 2 ";

if ( texte1.equals(texte2) )...

 La détermination de la longueur d'une chaine : La méthode length() permet de


déterminer la longueur d'une chaine.

String texte = " texte ";

int longueur = texte.length();

 La modification de la casse d'une chaine : Les méthodes Java toUpperCase() et


toLowerCase() permettent respectivement d'obtenir une chaîne tout en majuscules ou
tout en minuscules.

String texte = " texte ";

String textemaj = texte.toUpperCase();

21

Vous aimerez peut-être aussi