0% ont trouvé ce document utile (0 vote)
25 vues17 pages

Chapitre1 Java

Le chapitre 1 présente le langage Java, un langage de programmation orienté objet créé par Sun Microsystems et mis en avant en 1995. Il aborde la portabilité du code Java via la machine virtuelle (JVM) et les outils de développement disponibles, ainsi que la structure d'un programme Java. Le chapitre se termine par une introduction aux éléments traditionnels du langage, y compris les types de données, les opérateurs et les structures de contrôle.

Transféré par

bagabaw456
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)
25 vues17 pages

Chapitre1 Java

Le chapitre 1 présente le langage Java, un langage de programmation orienté objet créé par Sun Microsystems et mis en avant en 1995. Il aborde la portabilité du code Java via la machine virtuelle (JVM) et les outils de développement disponibles, ainsi que la structure d'un programme Java. Le chapitre se termine par une introduction aux éléments traditionnels du langage, y compris les types de données, les opérateurs et les structures de contrôle.

Transféré par

bagabaw456
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

JAVA_Chap1 21/02/2020

Chapitre 1
Présentation du langage Java
1

1 . Ja v a : c ’ e s t q u o i ?

2 . Ja v a e t l a p o r t a b i l i t é

3. Outils de développement

4. Str ucture d’un pr ogramme java

Java c'est quoi ?


2

 Langage de programmation orienté objet.


 Créé par James Gosling et Patrick Naughton employés par Sun
Microsystems avec le soutien de Bill Joy.
 1995 : présenté officiellement ;
 1998 : apparition de la version 1.2 qui a apporté de nombreuses
améliorations et fonctionnalités :
 Java 2 Standard Edition (J2SE)
 Java 2 Entreprise Edition (J2EE)
 2000-2014 : plusieurs versions sont apparues
 2010 : Sun a été rachetée par Oracle

ii1
JAVA_Chap1 21/02/2020

Java c'est quoi ?


3

Les différentes versions de Java :

J2SE Java SE Java SE Java SE


Java 1.0 Java 1.1 Java 1.2 J2SE 1.3 J2SE 1.4
5.0 6 7 8
Nombre
de 8 23 59 76 135 166 202 209 217
packages

Java c'est quoi ?


4

Objectifs :
 Portabilité (principalement)
 Élimination des concepts délicats de C++ tels que :
 La gestion manuelle de l’allocation dynamique, les pointeurs et l’héritage
multiple.
 Combler les lacunes de sécurité et l’absence de ramasse-miettes ;
 Mettre en œuvre la programmation distribuée,…

ii1
JAVA_Chap1 21/02/2020

Java c'est quoi ?


5

4 éléments :
 Java est un langage de programmation objet

 Une machine virtuelle

 Des bibliothèques de classes ou des packages : API Application


Programming Interface (2500 classes dans Java 1.4)
 Ensemble d'outils : java, javac, jdb javadoc, jar, ...

execution compilation debugger documentation archivage

Java et la portabilité
6

ii1
JAVA_Chap1 21/02/2020

Java et la portabilité
7

Code source Java

Programme Java
Solution proposée :
Construire une machine virtuelle : Machine virtuelle

SE / Architecture
 Joue le rôle de plateforme virtuelle
 Opère un langage machine virtuel indépendant de l'architecture réelle
et du SE réel

Java et la portabilité
8

 En Java, le code source n’est pas traduit directement dans le langage


de l’ordinateur.

 Il est d’abord traduit dans un langage appelé « bytecode », langage d’une


machine virtuelle (JVM ; Java Virtual Machine) définie par Sun.

 Ce langage est indépendant de l’ordinateur qui va exécuter le


programme.

ii1
JAVA_Chap1 21/02/2020

Java et la portabilité
9

Programme source
Programme Java [Link]

Compilateur: javac
compilateur

Programme en bytecode,
indépendant de l'ordinateur
Bytecode
[Link]

Java et la portabilité
10

 Les systèmes qui veulent pouvoir exécuter un programme Java


doivent fournir une JVM.

 A l'heure actuelle, tous les systèmes ont une JVM (Linux, Windows,
MacOs,…).

ii1
JAVA_Chap1 21/02/2020

Java et la portabilité
11

Bytecode:
[Link]

JVM sous Lunix JVM sous MacOs

JVM sous Windows

Le bytecode peut être exécuté par n'importe quelle JVM


Si un système possède une JVM, il peut exécuter tous les fichiers
.class compilés sur n'importe quel autre système

Outils de développement
12

 Le Java Development Kit de Sun (incluant une machine virtuelle


Java), disponible sur [Link]
 Outils
 java : JVM, interpréteur pour les programmes java
 javac : Compilateur Java
 appletviewer : JVM pour l'exécution des applets
 jar : Création et manipulation d 'archive java
 javadoc : Générateur de documentation Java au format HTML
 javap : désassembleur de classes Java compilées
 jdb : débogueur Java en ligne de commande
 javah : génère le header C ou C++ pour créer un pont compatible entre java et
C/C++
 Un éditeur spécialisé (vivement recommandé), comme Netbeans
ou Eclipse ou jEdit ( [Link])

ii1
JAVA_Chap1 21/02/2020

Structure d’un programme Java


13

Exemple de programme Java :


public class PremProg
{
public static void main (String args[])
{
[Link] ("Mon premier programme
Java");
}
}

Le mot-clé public dans public class PremProg sert à définir les droits
d’accès des autres classes (en fait de leurs méthodes) à la classe PremProg.

Structure d’un programme Java


14

 Le mot-clé static précise que la méthode main de la classe PremProg


n’est pas liée à une instance particulière de la classe.

 Le mot-clé public dans public static void main est obligatoire pour
que votre programme puisse s’exécuter. Ici, il ne s’agit plus
véritablement d’un problème de droit d’accès, mais plutôt d’une
convention qui permet à la machine virtuelle d’accéder à la méthode
main. Notez que vous pouvez inverser l’ordre des mots- clés public et
static en écrivant static public void main.

ii1
JAVA_Chap1 21/02/2020

Structure d’un programme Java


15

 Le paramètre String[] args de la fonction main permet de


récupérer des arguments transmis au programme au moment de son
lancement. On peut lancer un programme sans fournir d’arguments,
mais l’indication String args[] est obligatoire (en C/C++, on
trouve des paramètres similaires dans la fonction main, mais ils sont
facultatifs).

 On peut écrire indifféremment String[] args ou String args[]

 Le nom d’une classe commence toujours par une majuscule, il est


nécessaire de définir le nom du fichier selon le même principe sinon la
classe risque de ne pas compiler.

Structure d’un programme Java


16

 Programme source Java = ensemble de fichiers « .java »

 Chaque fichier « .java » contient une ou plusieurs définitions de classes

 Au plus une définition de classe public par fichier « .java » avec nom
du fichier = nom de la classe publique

ii1
JAVA_Chap1 21/02/2020

Chapitre 1 -suite–
Les éléments traditionnels du langage
Java
17

1. Structure lexicale, identificateurs et mots-clés


2. Types élémentaires
3. Opérateurs
4. Flottants en Java
5. Conversion de types
6. Exercice
7. Structures de contrôle
a. Structures conditionnelles
b. Structures répétitives

Structure lexicale, identificateurs, mots-clés


18

 Java est sensible à la casse


 Le code est écrit dans des blocs :
 Délimités par { }
 Qui peuvent être imbriqués
 Les commentaires :
 Sur une seule ligne : // mon commentaire
 Sur plusieurs lignes : /* */
 Les identificateurs peuvent contenir tous les caractères
alphanumériques et des caractères _ et $. Le premier caractère doit
être une lettre, le caractère de soulignement ou le signe dollar.

ii1
JAVA_Chap1 21/02/2020

Types élémentaires
19
Type Désignation Longueur Commentaires
pas de conversion
valeur logique : true ou
boolean 1 bit possible vers un autre
false
type
byte octet signé 8 bits
short entier court signé 16 bits
entouré de cotes
char caractère Unicode 16 bits simples dans du code
Java
int entier signé 32 bits
virgule flottante simple
float 32 bits
précision (IEEE754)

virgule flottante double


double 64 bits
précision (IEEE754)

long entier long 64 bits

Types élémentaires
20
 En Java, toute variable appartenant à un objet (définie comme étant
un attribut de l'objet) est initialisée avec une valeur par défaut au
moment de la création.
 Cette initialisation ne s'applique pas aux variables locales des
méthodes de la classe.
 Les valeurs par défaut lors de l'initialisation automatique des variables
d'instances sont :
Type Valeur par défaut
boolean false
byte, short, int, long 0
float, double 0.0
char \u0000
classe null

ii1
JAVA_Chap1 21/02/2020

Opérateurs
21

 En Java, les opérateurs arithmétiques utilisés sont les mêmes qu’en


C++ :
 +,-,/,*,%

 Ils peuvent être combinés avec l'opérateur d'affectation.


 Exp : x+=5;

Priorité des opérateurs


22
Les parenthèses ()
Les opérateurs d'incrémentation ++ --
Les opérateurs de multiplication, division et modulo * / %
Les opérateurs d'addition et soustraction + -
Les opérateurs de décalage << >>
Les opérateurs de comparaison < > <= >=
Les opérateurs d'égalité == !=
L’opérateur OU exclusif ^
L'opérateur ET &
L'opérateur OU |
L'opérateur ET logique &&
L'opérateur OU logique ||
Les opérateurs d'assignement = += -=

ii1
JAVA_Chap1 21/02/2020

Flottants en Java
23

 En Java, aucune opération sur les flottants ne conduit à un arrêt de


l’exécution (pas même une division par zéro !).

 En effet, les flottants sont codés en respectant les conventions IEEE


754 qui incluent les trois constantes suivantes :
 indéfini : [Link] ou [Link] (not a number)
 indéfini positif : Float.POSITIVE_INFINITY ou Double.POSITIVE_INFINITY
 indéfini négatif : Float.NEGATIVE_INFINITY ou Double.NEGATIVE_INFINITY

 En Java, ces valeurs peuvent même être affichées ou affectées


directement à des variables.

Flottants en Java
24

Conformément à la norme IEEE754, ces valeurs spéciales représentent


le résultat d'une expression invalide NaN, une valeur supérieure au
plafond du type pour infini positif ou négatif.

X Y X/Y X%Y
valeur finie 0 + infini NaN
valeur finie infini 0 x
0 0 NaN NaN
Infini Valeur finie infini NaN
Infini Infini NaN NaN

ii1
JAVA_Chap1 21/02/2020

Flottants en Java
25

Quels résultats fournit ce programme ?


public class IEEE
{ public static void main (String args[])
{ float x = 1e30f ;
float y ;
y = x*x ;
[Link] (x + " a pour carre : " + y) ;
float zero = 0.f ; // division flottante par zero
float z = y/zero ;
[Link] (y + " divise par 0 = " + z) ;
y = 15 ;
[Link] (y + " divise par 0 = " + z) ;
float x1 = Float.POSITIVE_INFINITY ; // +infini
float x2 = Float.NEGATIVE_INFINITY ; // -infini
z = x1/x2 ;
[Link] (x1 + "/" + x2 + " = " + z) ;
}
}

Flottants en Java
26

1.0E30 a pour carre : Infinity


Infinity divise par 0 = Infinity
15.0 divise par 0 = Infinity
Infinity/-Infinity = NaN

ii1
JAVA_Chap1 21/02/2020

Conversion de types
27

Expression mixte
 Les opérateurs arithmétiques ne sont définis que lorsque leurs deux
opérandes sont de même type.

 Mais on peut écrire des expressions mixtes dans lesquelles interviennent


des opérandes de types différents.

 Dans ce cas, le compilateur effectue une conversion vers le type le


plus « grand » de façon à éviter les pertes d’informations.

Conversion de types
28

Conversion d’ajustement de type

 Une conversion telle que int -> float est une conversion d’ajustement
de type. Elle ne peut se faire que suivant une hiérarchie qui permet de
préserver la valeur initiale : int -> long -> float -> double

 Conformément à cette hiérarchie, on peut bien sûr convertir


directement un int en double ; mais on ne pourra pas convertir un double
en float ou en int.

ii1
JAVA_Chap1 21/02/2020

Conversion de types
29

Conversions implicites
 Les opérateurs numériques ne sont pas définis pour les types byte, char
et short.

 Java prévoit que toute valeur de l’un de ces deux types apparaissant
dans une expression soit d’abord convertie en int, et cela sans
considérer les types des éventuels autres opérandes.

 On parle alors de promotions numériques (ou encore de conversions


systématiques).

Conversion de types
30

 Les opérandes et le résultat de l'opération sont convertis en


type int.
short x=5, y=15;
x=x+y; // erreur à la compilation

 Le résultat est affecté dans un type short : il y a donc risque de


perte d'informations et donc une erreur est émise à la
compilation.
 Pour régler le problème, il est nécessaire d'utiliser une
conversion explicite ou cast.
x=(short)(x+y);

ii1
JAVA_Chap1 21/02/2020

Conversion de types
31

Conversion forcée
Le programmeur peut forcer la conversion d’une expression
quelconque dans un type de son choix, à l’aide d’un opérateur
nommé cast.

Exemple :
double x;
(int) x;

Structures conditionnelles
32

 Une condition correspond à vrai ou faux


 Tester une condition:
if condition A; else B;

si condition est satisfaite, alors on fait A;


sinon, on fait B

if (age < 65)


[Link]("jeune");
else
[Link]("vieux");

ii1
JAVA_Chap1 21/02/2020

Structures conditionnelles
33
switch(expression) {
case constante 1 :
instr1;
instr 2;
break;
case constante 2 :
….
default:

}

Il est possible d'imbriquer des switch.

Structures répétitives
34

while(boolean)
{
…. //code à exécuter dans la boucle
}

do
{
…. //code à exécuter dans la boucle
} while(boolean);

for(initialisation; condition; traitement)


{
….. //code à exécuter dans la boucle
}

ii1

Vous aimerez peut-être aussi