Vous êtes sur la page 1sur 64

INTRODUCTION AU LANGAGE

JAVA

Abdellaziz Walid Département G-Info


a.walid@uiz.ac.ma 2018-2019
Motivation : Pourquoi JAVA ?
2

The 7 Most In-Demand Programming Languages of 2018


Un peu d’histoire
3
 Le projet Java voit le jour en 1991, dans le secret d’une équipe de Sun
Microsystem.
 Treize ingénieurs ont cherché à concevoir un langage applicable à de petits
appareils électriques (en code embarqué). James Gosling
Un peu d’histoire
4
 Le Green Project a donc démarré afin d’étudier l’impact de la convergence entre les
appareils ménagers contrôlés numériquement et les ordinateurs. En utilisant une
syntaxe proche de celle de C++
 Finalement, c’est James Gosling, l’un des membre du Green Projet, qui est à l’origine
de ce langage nouveau, qu’il baptisa Oak.
 Oak devient alors FirstPerson. Pas de succès commercial pour FirstPerson.
 En 1993, on assiste à l’arrivée du protocole http et du navigateur Mosaic, ce qui fut
un événement crucial pour le projet.
 C’est à cette période que l’équipe comprit qu’Internet serait le réseau idéal pour
positionner leur produit. En 1995, James Gosling dévoila un navigateur
appelé WebRunner capable de montrer du contenu html mélangé à des applets(
petite application qui se télécharge lors de la consultation de certains sites Internet)
 WebRunner devient HotJava et le site java.sun.com s’ouvre officiellement au grand
public.
 Finalement, la dénomination de cette technologie sera Java (café en argot américain),
en honneur à la boisson préférée des programmeurs, c’est-à-dire le café.
 20 avril 2009 : Sun Microsystems annonce son rachat par Oracle Corporation
Évolution des versions de Java au fil des années
5

 1995: JDK 1.0 en version Béta(expérimentale).


 1996 : JDK 1.0, appelé Java 1.0
 1997 : JDK 1.1, appelé Java 1.1
 1998 : JDK 1.2, appelé Java 1.2
 2000 : JDK 1.3, appelé Java 1.3
 2002 : JDK 1.4, , appelé Java 1.4
 2004 : JDK 1.5, appelé Java 5
 2006 : JDK 1.6, appelé Java 6
 2011 : JDK 1.7, appelé Java 7
 2014 : JDK 1.8, appelé Java 8
 septembre 2017 : JDK 9, appelé Java 9
 mars 2018 : JDK 10, appelé Java 10
 septembre 2018 : JDK 11, appelé Java 11
 décembre 2018: JDK12, Appelé Java 12, Mais encore en version Béta.

JDK : Java Development Kit


Environnements de développement intégré
JAVA (IDE)
6

 Un IDE ou un Environnement de développement (Integrated Development


Environment) est un logiciel qui rassemble des outils permettant de développer
d'autres logiciels tels que des applications mobiles, des logiciels pour ordinateur
ou consoles de jeux, des sites web, etc... ainsi que de réaliser des librairies ou
des Framework.

Les outils d'un IDE peuvent être :


 Un éditeur de code intelligent (Coloration, autocomplétions, mise en forme) ;

 Un simulateur (logiciel permettant de tester l'exécution de son logiciel) ;

 Un compilateur (qui va transformer le code source rédigé par le développeur en


code binaire) ;

 Un débogueur (fonctionnalité d'aide à la correction de bugs).


Top 10 Java IDE’s 2019
7

 Eclipse
 BlueJ
 IntelliJ IDEA
 JGRASP
 Netbeans
 Android Studio
 Java Inventor
 Codenvy
 JBuilder
 JCreator
Les plates-formes d ’exécution JAVA
8

Trois environnements d'exécutions différents :

 Java SE (Java Platform, Standard Edition): Java SE pour applications classiques,


desktop.

 Java EE (Java Platform, Enterprise Edition): Java EE pour développer et déployer


des applications serveur, Web services, etc.

 Java ME (Java Platform, Micro Edition): J2ME pour les applications embarquées,
PDA, téléphones, TV, etc.
Qu’est qu’on peut produire avec JAVA ?
9

On peut faire de nombreuses sortes de programmes avec


Java :
 Des applications, sous forme de fenêtre ou de console.

 Des applets, qui sont des programmes Java incorporés à des pages

web.

 Des applications pour appareils mobiles, avec J2ME.

 et bien d'autres ! J2EE, JMF, J3D pour la 3D...


Statistiques récentes d’oracle corporation
10

 97% des bureaux d’entreprise exécutent Java.


 89% des bureaux (ou ordinateurs) des États-Unis exécutent Java.
 9 millions de développeurs Java dans le monde.
 Choix n°1 des développeurs.
 Plate-forme de développement n°1.
 3 milliards de téléphones mobiles exécutent Java.
 100% des lecteurs Blu-ray livrés avec Java.
 5 milliards de cartes Java utilisées.
 125 millions de périphériques TV exécutent Java.
 Les 5 fabricants d’équipement d’origine principaux fournissent Java
ME
Motivation : Pourquoi JAVA est si Populaire ?
11
Points forts de Java?
12

 Langage orienté objet

 Langage Modulaire

 Langage portable

 Langage rigoureux

 Langage sécurisé
La programmation procédurale vs orientée objet
13

Programmation procédurale VS Programmation orientée objet


La programmation procédurale vs orientée objet
14

Programmation procédurale VS Programmation orientée objet


JAVA : Langage orienté objet
15

Objets
JAVA : Langage orienté objet
16

Notion de classe d’objets

 Pour un développeur java tout est objet.

 Un objet est une variable (presque) comme les autres. Il faut


notamment qu’il soit déclaré avec son type.

 Le type d’un objet est un type complexe (par opposition aux types
primitifs entier, caractère, …) qu’on appelle une classe.

 le programmeur écrit uniquement des classes correspondant aux


objets de son système
JAVA : Langage orienté objet (Classe)
17

Une classe regroupe :


 Un ensemble de données (qui peuvent être des variables
primitives ou des objets)

 un ensemble de méthodes de traitement de ces données


et/ou de données extérieures à la classe.

 On parle d’encapsulation pour désigner le regroupement


de données dans une classe.
Exemple d’une classe en code JAVA
18 Le nom de la classe

Le
constructeur
Les de la classe
attributs de
la classe

Méthode 1
de la classe

Méthode 2
de la classe
JAVA : Langage orienté objet (Objet)
19

 Un objet est une instance (anglicisme signifiant « cas


» ou « exemple ») d’une classe

 Il est référencé par une variable ayant un état (ou


valeur).

 Pour créer un objet, il est nécessaire de déclarer une


variable dont le type est la classe à instancier, puis de
faire appel à un constructeur de cette classe.
Exemple d’objets de la classe Rectangle
20

Objet rectangle = Instanciation de la classe Rectangle


Réservation de
Classe L’objet la mémoire
pour l’objet

Constructeur pour
initialiser l’objet

Accès aux variables


Nom de l’objet attribut

Accès aux méthodes


Nom de l’objet Nom méthode
Programme JAVA
21

 Tout programme JAVA a au moins une classe.


 Règle: toute classe publique doit être dans un fichier qui a le même nom que la classe
 Règle: tout code doit être à l'intérieur d'une classe
Classe
exécutable

La
méthod
e Main

 Ça définit une classe, qui est une unité de compilation


 Comme il y a une méthode main, cette classe est « exécutable »
 Pour exécuter un programme java il faut au moins une fonction main.
Points forts de Java?
22

 Langage orienté objet

 Langage Modulaire

 Langage portable

 Langage rigoureux

 Langage sécurisé
Architecture intégrale vs architecture modulaire
23

Architecture intégrale Architecture modulaire

La modularité vise à réduire le degré de complexité qui affecte tout système


technique complexe.
JAVA : Langage modulaire !!
24
La programmation procédurale vs orientée objet
25

Programmation intégrale VS Programmation modulaire


JAVA : Langage Modulaire
26

 La conception par classes, représentant à la fois les données,


les actions et les responsabilités des objets de cette classe,
permet de bien distinguer et séparer les concepts.

 Le fait de définir des « interfaces », au sens « moyens et


modalités de communication avec l'extérieur » permet de
cacher les détails d'implémentation et d'éviter les
dépendances trop fortes.

 Tout ça favorise la réutilisabilité et la composition /


délégation : l'assemblage des composants en respectant leurs
responsabilités
JAVA : Langage Modulaire
27

L'objectif de la modularité est de produire du code :

 Facile à développer, à maintenir et à faire évoluer.

 Réutilisable, tout ou en partie, sans avoir besoin de le dupliquer.

 Générique, et dont les spécialisations sont transparentes.


Points forts de Java?
28

 Langage orienté objet

 Langage Modulaire

 Langage portable

 Langage rigoureux

 Langage sécurisé
Rappel : Compilateur vs Interpréteur
29

 le compilateur traduit les programmes dans leur


ensemble : tout le programme doit être fourni en bloc
au compilateur pour la traduction.

 l’interpréteur traduit les programmes instruction par


instruction dans le cadre d’une interaction continue
avec l’utilisateur.
JAVA : Langage Portable
30

N.B : JAVA utilisent à la fois un compilateur et un interpréteur.


(Pas comme C/C++ qui utilisent juste un compilateur)
Rappel : compilation d’un programme en C/C++
31
JAVA : Langage Portable
32
JAVA : Langage Portable
33

 Un programmeur Java écrit son code source, sous la forme de


classes, dans des fichiers dont l’extension est .java
 Ce code source est alors compilé par le compilateur javac en
un langage appelé bytecode et enregistre le résultat dans un
fichier dont l’extension est .class
 Il doit être interprété par la machine virtuelle de Java qui
transforme alors le code compilé en code machine
compréhensible par la machine.
 C’est la raison pour laquelle Java est un langage portable : le
bytecode reste le même quelque soit l’environnement
d’exécution.
JAVA : Langage Portable
34

Bytecode
JAVA : Langage Portable
35

Bytecode
 Bytecode Java est un langage intermédiaire entre compilation
et exécution.

 Le terme Bytecode vient de Byte car chaque instruction de la


JVM est codée à l’aide d’un Byte (à chaque instruction
correspond un opcode ou code opération de 8 bits).

 Exemple : l’addition de deux entiers est représenté par


l’opcode IADD et correspond à 60 en hexadécimal.
JAVA : Langage Portable
36
Points forts de Java?
37

 Langage orienté objet

 Langage Modulaire

 Langage portable

 Langage rigoureux

 Langage sécurisé
JAVA : Langage rigoureux et sécurisé
38

 Java est un langage rigoureux car la plupart des erreurs se


produisent à la compilation et non à l’exécution.
 Java est un langage très rigoureux sur le typage de données.
 Java est un langage sécurisé car la JVM contrôle le champ
d'exécution d'un programme pour empêcher d'aller faire des
choses non autorisé :
 accéder directement à certaine fonctions;
 Injecter du code;
 exécuter du code non prévus en injectant des paramètres;
 accéder directement à la mémoire;
 etc...
 Il améliore la sécurité des données grâce à l’encapsulation
de données.
Récapitulatif : Cycle de développement d’un
programme java
39

1. Les phases d’écriture et de correction se fait à l’aide d’un éditeur de texte (emacs,
geany, gedit, Notepad++, . . . ) ou d’une IDE (Netbeans, Eclipse, …).
Exemple: Notepad++ Salut.java

2. La phase de compilation se fait à l’aide de la commande javac.


Exemple: javac Salut.java

3. La compilation produit un fichier .class.


Exemple: le fichier Salut.class est généré par le compilateur

4. La phase d’interprétation se fait à l’aide de la commande java.


Exemple: java Salut
La nature des variables en Java
40

Les variables locales comme les champs des classes et des objets ne peuvent
être que de deux natures :
 De type « primitif »
Dans ce cas, la déclaration de la variable réserve la place mémoire pour
stocker sa valeur (qui dépend de son type)

 De type « objet », ou référence


Dans ce cas, la déclaration de la variable ne fait que réserver la place d'une
référence (une sorte de pointeur) qui permettra d'accéder à l'endroit en
mémoire où est effectivement stocké l'objet en lui-même (vaut null si
référence inconnue)
Conventions de nommage en Java
41

Nom de classe :
 Commencez chaque mot par une majuscule :
 HelloWorld
 MonPremierProgramme
Nom de variable ou méthode :
 Commencez chaque mot par une majuscule, sauf le premier :
 maPremiereVariable
 maPremiereMethode
 nb1
 main
 Usage non recommandé :
 mapremierevariable
 ma_premiere_variable
N.B : Il faut évidemment que l’identificateur ne soit pas un mot réservé du langage (comme int out et for).
Types primitifs
42
Modifiable / non modifiable
43

 La nature modifiable ou non modifiable d’une donnée peut être


définie lors de la déclaration par l’indication du mot réservé final.

 Elle ne pourra donc plus être modifiée par le programme (toute


tentative de modification produira un message d'erreur lors de la
compilation).

Exemples :
final double PI = 3.141592653;
final int MAX_SIZE=15;
 Convention de nommage pour les constantes : on utilise des lettres
majuscules, au besoin séparée par les ”_”.
Typage fort
44

Java est un langage à typage fort :


 Chaque variable a un type
 La valeur doit être du même type que la variable
 On ne peut (normalement) pas mélanger des variables de type
différent

Pourquoi?
 Utilisation efficace de la mémoire
 Vérification de la logique du programme

Les règles pour int et double sont plus souples :


 Transtypage automatique : int → double
 Transtypage explicite (explicit cast) : double → int
Typage fort
45

Un int à droite peut devenir un double à gauche mais pas vice versa :
int i =1;
double d=1.7;
d = i; Oui, .0 ajouté (la valeur de d est 1.0)
i = d; Non !!!

On peut forcer une conversion double → int :


i = (int) d ; Oui, valeur tronquée, i vaut 1

Attention : Valeur tronquée ne veut pas dire valeur arrondie !


Type évolué : Les tableaux

46

Deux syntaxes pour l’allocation :


int[] monTableau = new int[10];
int monTableau[] = new int[10];
Type évolué : Le type String
47

 Une chaîne de caractères est déclarée avec le mot-clé


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

 Il se manipule comme un type de base.


 L‘operateur «+» est utilisé pour concaténer les chaînes de
caractères.
 Exemple :
Type évolué
48
Entrées-Sorties Standard
49

Un minimum d’interactivité...
Affichage :
System.out.print(...) / System.out.println(...) : prédéfinis
dans Java
Lecture (d’un entier) :
import java.util.Scanner ;
Scanner keyb = new Scanner(System.in) ;
int i = keyb.nextInt() ;
Méthodes statiques
50

 Avant l’étude du concept d’objets on ne peut utiliser que des variables et


méthodes statiques dans une classe.
 Toute méthode statique d’une classe peuvent être invoquée depuis
n’importe quelle autre méthode statique de la classe.
 l'ordre de déclaration des méthodes n’a pas d’importance.
 Pour invoquer méthode d’une autre classe il faut la préfixer par
NomClasse.

Exemple: Math.random(); Arrays.sort(monTableau);


Méthodes et passage des arguments
51

 L’évaluation de l’appel de méthode peut être schématisé de la


façon suivante
Opérateurs dans JAVA
52
Commentaire
53

(non traités par le compilateur)


/* commentaire sur une ou plusieurs lignes */
Identiques à ceux existant dans le langage C

// commentaire de fin de ligne


Identiques à ceux existant en C++

/** commentaire d'explication */


 Les commentaires d'explication se placent généralement juste avant une
déclaration (d'attribut ou de méthode)

 Ils sont récupérés par l'utilitaire javadoc et inclus dans la documentation ainsi
générée.
Affectation
54

le signe = est l'opérateur d'affectation et s'utilise avec


une expression de la forme:
variable = expression
ou
Variable = valeur;
L'opération d'affectation est associative de droite à
gauche : il renvoie la valeur affectée ce qui permet
d'écrire :
x = y = z = 0;
Structures de contrôle conditionnelles
55

L'instruction conditionnelle if : La syntaxe de


l'instruction if
Structures de contrôle conditionnelles
56
Structures de contrôle conditionnelles imbriquées
57
Structures de contrôle à choix multiple
58

L'instruction Switch: la syntaxe est la suivante:


Structures de contrôle répétitives
59
Structures de contrôle répétitives
60
Structures de contrôle répétitives
61

L’instruction do .. while
Instruction Break
62

break : l’exécution se poursuit après la boucle


(comme si la condition d’arrêt devenait vraie) ;
Instruction Continue
63

continue : l’exécution du bloc est arrêtée mais pas


celle de la boucle.
Merci de votre attention