Académique Documents
Professionnel Documents
Culture Documents
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.
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.
1
Cours POO
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.
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
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.
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
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
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).
5
Cours POO
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.
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;
Exemple :
Long nombre;
Int compteur;
String chaine;
Les types primitifs: boolean, int, short, byte, float, long, double, char.
7
Cours POO
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
float
- Type défini sur 32 bits.
- Valeur par défaut: 0.0F
double
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;
8
Cours POO
Byte Byte
Short Short
Integer Int
Long Long
Float Float
Double Double
Boolean Boolean
Exemple1
Exemple2
x=3, y=2;
int
double z = x/y; // affecte la valeur 1.0 à z
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.
9
Cours POO
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:
ou plusieurs lignes */
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
11
Cours POO
expression3;
expression1? expression2:
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
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 ;
break;
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.
Exemple :
switch (sexe)
{case ‘m’ :
14
Cours POO
case 'M':
break;
case ‘f’ :
case 'F':
break;
default:
l’instruction for
Exemple
if(i<5)
else
System.out.println("iteration "+i);}
15
Cours POO
{ instructions ;
Exemple
{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){
}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){
}else
System.out.println("iteration
"+i); i++;
}while(i<10);
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;
cnt++;
if (cnt > 5)
break;
System.out.println (cnt);
L'instruction continue
Exemple
18
Cours POO
cnt++;
if (cnt == 0)
{continue; }
System.out.println (cnt);
-2
-1
19
Cours POO
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 :
De plus, la taille de ce tableau est disponible dans une variable length appartenant au
tableau et accessible par mon_tableau.length.
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.
20
Cours POO
String s1 = ”hello” ;
String s2 = ”world” ;
String s3 = s1 + ” ” + s2 ;
Exemples
if ( texte1.equals(texte2) )...
21