2265U04 ? Langage Java 2006-10-05 Présentation du langage ...

Programmation d'interfaces graphiques (en Java). ..... Initiation à la
programmation orientée objets; Les concepts suivants sont introduits : classes et
objets, ...

Part of the document


2265U04 - Langage Java
2006-10-05 Présentation du langage
Java est le dernier né de la famille des langages de programmation (comme
Basic, Cobol, C, C++). Il a des caractéristiques importantes pour sa réussite :
. portabilité des applications (exécution au travers de la Virtual
Machine, VM)
la possibilité de développer une application dans un environnement
donné (ex : Mac) et d'ensuite la faire fonctionner dans un autre
environnement (ex : PC).
toute application n'est pas portable d'un environnement à l'autre :
o différence des matériels
Ex : processeurs
o différence des systèmes d'exploitation
Portabilité source : l'application doit être refabriquée dans
l'environnement ciblé.
Programmes sources ( Compilateur ( Programme exécutable en langage
machine de la machine cible (pour un environnement donné et un système
d'exploitation donné).
Le programme écrit en Java peut être exécuté dans n'importe quel
environnement et quel système d'exploitation (100%).
Le langage crée un environnement virtuel VM Java entre l'application
et les systèmes d'exploitation. Par conséquent, la portabilité devient
100%.
Dans le schéma traditionnel (de 3 couches), lorsque l'application fait
une opération « 2 + 3 », c'est le processeur (ex : Intel) qui fait le
calcul. Or, dans le schéma Java (de 4 couches), cette opération est
faite au niveau virtuel VM Java (en servant bien sûr du processeur).
Source Java ( Compilateur ( Exécutable Java « .class » ( VM Inconvénients :
o un coût supplémentaire en temps d'exécution et en terme de stockage
pour l'application Java car tout calcul se fait au niveau VM au
lieu du processeur directement.
Auj., les limites en terme matériels ne posent plus de grands
problèmes : la vitesse de calcul du processeur et la capacité de
stockage.
o Java n'est pas fait pour des applications de calculs très lourdes
(ex : calculs scientifiques intensifs)
o La performance de l'environnement virtuel
La performance accrue depuis ces dernières années
. Java, orienté Objet
Ce qui n'est pas vraiment nouveau (ex : C++)
. Java est plus qu'un langage (il est un environnement)
o Avec Java, en plus du langage, on propose une bibliothèque de
classes standardisée et très complète
Même si le langage est identique (ex : C, C++, etc.), lorsqu'on
utilise des bibliothèques différentes, la portabilité peut être
nulle.
« bibliothèque » : un ensemble de fonctions qu'on utilise pour
faire des tâches courantes.
Ex : CreateWindow(...)
On appelle « Java Developpment Kit » (JDK) dans laquelle on trouve
VM, outils et bibliothèques.
o Un ensemble de spécifications (des composants) garantissant
l'interopérabilité
Non seulement que l'application fabrique en Java est portable dans
n'importe quel système d'explication, mais aussi les composants de
cette application peuvent être « empruntés » dans d'autres
applications en Java grâce aux spécifs (càd des règles de
dialogue).
Ces spécifications sont des documents (ou des cahier de charge) qui
normalisent les composants de Java. On parle alors de
l' « Architecture d'application », ou J2EE (un langage et des
bibliothèques avec des spécifs).
Quasiment tous les acteurs (Sun, IBM, Orale, etc.) parlent de la
même chose avec le terme J2EE (sauf Microsoft où l'on a « .NET »).
Java n'est pas « open source ». Il est à la propriété
intellectuelle de Sun. Il est gratuit, mais on ne peut pas le
modifier.
« .NET » est en langage « C# ».
Mise en ?uvre
. JDK
o VM : java.exe
o Bibliothèques : .jar
o Outils de développement : compilateur.java ( .class
javac.exe
Juste pour tourner les applications en Java, il suffit installer JRE
(càd VM + Bibliothèques sans Outils de développement)
. Versions
Version en vigueur : Version 1.5.07
Téléchargeable sur le site de Sun
. Un environnement de développement intégré (Integred Developpment
Environment, IDE)
o Eclipse (sponsor IBM) : logiciel libre
Dérivation commerciale : WSAD (IBM)
o Netbeans (sponsor Sun)
Dérivation commerciale : Sun Java Studio
IDE est lui-même une application Java.
Exemple d'application Java
Une distinction :
. stand-alone
Ex : Word, Excel
o mode caractère
Test et pédagogie
o mode graphique
Ex : Eclipse, Netbeans
. composant
J2EE
Ex : applet, servlet
Exemple : application « Hello world » en mode caractère
class HelloWorldApp {
page 5
} Rq : toute application Java est dans la classe.
« System » : c'est une classe
« .out » : c'est un objet
« .println( ) » : c'est une méthode
Résumé :
Les caractéristiques du langage JAVA :
. Portabilité (à travers la VM)
. Bibliothèque de classe très complète
. Interopérabilité (à travers la même architecture d'application spécif,
J2EE en vigueur)
Ex : J2EE (Sun) ( .NET (Microsoft)
Sur le plan fonctionnel, ils sont identiques.
Distinction : C++ & Java
En fonction du choix des logiciels :
Une grande partie des logiciels de base (càd le système lui-même) sont
développés en langage C (ou C++).
Le langage Java est essentiellement utilisé dans le développement des
modules d'applications, souvent orientée à l'utilisation sur le Web.
Ils sont des langages très proches l'un à l'autre (car ils sont des
langages de 3ème génération, L3G), mais dans l'architecture matériel, le
langage Java est à un niveau plus évolué que le langage C++. Le langage 4ème génération (« L4G »)
Ce sont des langages de plus haut niveau. Ils sont utilisés dans le
développement des applications de gestion. On peut faire des paramétrages.
Ex : SAP, Windev
Orientation objet Dans l'histoire des langages, il y a des langages :
. Les tous premiers langages (de « rien du tout ») (non structuré)
Ex : FORTRAN, COBOL
Les langages sont des règles
. 1970 ( la naissance de la programmation structurée
Ex : Pascal (un langage spécifique pour l'enseignement de
l'algorithme), Boucle, Alternative
« Algorithme » : une suite ordonnée d'instruction pour passer à un
résultat.
Langage C
« Programme = Algorithmes + Structure de données »
La modularité n'est pas assez fine et la réutilisation des modules est
un problème : le changement de la structure de données limite la
modularité de l'algorithme.
Pour avoir une bonne réutilisation des modules, il nécessite une
modularité beaucoup plus fine, ce qui entraine une augmentation du
nombre de toutes petites modules.
. 1980 ( Orientation objet
Ex : C++, Java
Le programme est vu comme résultant de l'interaction d'un ensemble
d'objets.
C'est une modularité au niveau d'objet : on crée des tous petits
objets. Objet & classe
Objet
A l'exemple de moduliser un compte bancaire, un objet compose de 2
parties :
o Données (interne) : attributs (ex : soldes, etc.)
o Méthodes : comportements (ex : débiter, créditer, etc.)
Rq : les comportements vont changer l'état des données.
Ex : compte.debiter(1000)
D'où « compte » est un objet
« debiter » est une méthode
Classe
Définir le comportement commun à des objets simulaires
C'est un modèle pour créer des objets. En effet, l'objet est une
instance de classe (instancier un objet ( créer un objet)
La classe prépare la base sur laquelle l'application se réalise
Ex : dans la classe « Compte », on définit les comportements
« Solde », « débiter » et « créditer », etc. Ensuite, on peut
instancier des objets pour faire de l'application :
C = newcompte( )
C.debiter(1000)
L'implémentation : c'est la réalisation effective de l'objet (il est
fondamental).
La spécification : c'est la façon d'utiliser les objets (c'est le
cahier de charge).
Pour les utilisateurs, ils ne voient que la spécification (càd des
différentes méthodes qu'on peut appliquer sur l'objet) alors que
seulement le développeur peut voir l'implémentation (de l'objet). Résumé :
Conception objet :
. Fonctionnement du système :
. Caractéristiques des objets (définies par des classes)
. Attributs
. Méthodes
Rq : l'objet est une instance d'une certaine classe. On parle
d'instancier un objet dans une classe. 2006-10-12 Exemples :
. créer une classe « Employe » (le nom d'une classe commence tjs par le
majuscule) dans un fichier « Employe.java »
Public class Employe {
Private String nom ;
Private double salaire ;
Public Employe (String n, double s) {
nom = n ;
salaire = s ;
}
Public String getNom ( ) {
Return nom ;
}
Public String getSalaire ( ) {
Return salaire ;
}
Public void setNom (String n) {
nom = n ;
}
Public void setSalaire (double s) {
salaire = s ;
}
Public void augmenterSalaire (double taux) {
salaire = salaire * (1. + taux) ;
}
}
Rq :
On travaille sur 2 attributs : nom et salaire.
« String » est une classe très utile pour traiter les caractères.
« Private » : inaccessible de