INTRODUCTION AU LANGAGE
JAVA
Abdellaziz Walid Département G-Info
[Link]@[Link] 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 [Link] 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++ [Link]
2. La phase de compilation se fait à l’aide de la commande javac.
Exemple: javac [Link]
3. La compilation produit un fichier .class.
Exemple: le fichier [Link] 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 [Link].
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 :
[Link](...) / [Link](...) : prédéfinis
dans Java
Lecture (d’un entier) :
import [Link] ;
Scanner keyb = new Scanner([Link]) ;
int i = [Link]() ;
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: [Link](); [Link](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