Vous êtes sur la page 1sur 26

Programmation Orientée

Objet: Java

Sadok Ben Yahia


Faculté des Sciences de Tunis
sadok.benyahia@fst.rnu.tn

1
Plan

❑Introduction au monde Objet

❑Le langage Java: Introduction et caractéristiques

❑Syntaxe et structures de contrôle

❑Héritage

❑Exceptions

❑Les Entrées/sorties

❑Connexion Java et les bases de données: l’API JDBC

2
Langages

procéduraux objets fonctionnels logiques

Pascal SmallTalk Lisp Prolog

C Java Scheme CLP

3
Quel type de programmation ?

Programmation procédurale

représentation d’une solution algorithmique en termes de

procédures.

Programmation objet

représentation d’une solution algorithmique en termes d’objets

s’échangeant des messages.

4
Quel type de programmation ?

Programmation fonctionnelle

représentation d’une solution algorithmique en termes de

fonctions.

Programmation logique

représentation d’une solution algorithmique en termes de

prédicats.

5
Programmation procédurale

Langages : Basic, Fortran, Pascal, C...

Ils permettent de structurer les instructions (sous forme de

procédures) et les données (sous forme de types).

Ils peuvent être utilisés sans trop de problèmes pour de petites

applications...

Ils sont pénalisants pour de grosses applications...

6
Programmation objet

Langages : SmallTalk, C++, Eiffel, Java...

Ils permettent de structurer les objets (sous forme de classes).

Ils sont adaptés à la conception de grosses applications car ils

offrent une modélisation plus naturelle et plus aisée...

7
Programmation fonctionnelle

Langages Lisp, Scheme, ...

Langages utilisant essentiellement la structure de Listes.

Langages assez déclaratifs utilisés surtout en intelligence

artificielle (Lisp dans les années 70-80).

8
Programmation logique

Langages Prolog, CLP, ...

Langages basées sur la logique des prédicats (Prolog) et

l’intégration de contraintes (CLP).

Langages purement déclaratifs utilisés surtout en intelligence

artificielle (Prolog dans les années 89-90 et CLP/CSP aujourd’hui).

9
Introduction

❑ Langage d ’implantation de logiciels pour l électronique grand publique (fours, micro-


ondes, grille-pain,…).
L ’objectif premier de ce langage est de définir un langage de programmation
portable sur toutes les plates-formes existantes

❑ 1990, l’équipe de James Gosling (Sun) se lance dans la conception d ’un nouveau
langage de programmation plus adaptée que C et C++ à de tels logiciels. Ce langage,
de programmation est indépendant des architectures matérielles et de systèmes
d ’exploitation : Ce langage, connu sous le nom d ’OAK, était petit et fiable

❑ 1993, avec l ’intérêt grandissant d ’Internet, ce langage, de par sa portabilité,


se métamorphose en langage dédié à Internet

❑ 1994 Nouveau départ pour JAVA, Sun diffuse le premier browser supportant les
applets (HotJAVA) qui permet d ’exécuter des applets java, i.e. des programmes Java
encapsulés dans des pages Web pour ajouter un élément exécutable et interactif à une
page
❑ 1995, Apparition de la version, Alpha de Java et son interface de développement API
❑ 1996, L ’attrait des applets Java, conduit Netscape et Microsoft à inclure dans leurs
propres navigateurs les composants permettant d ’exécuter les applets
❑ 1997, JDK1.1,…
❑ 1998, JDK1.2,….
10
Caractéristiques

❑Java est un langage objet dans la lignée de Hello.class


SmallTalk JVM JVM JVM
Unix/Sparc Windows/Intel MacOS/Motorola
❑Machine Virtuelle: il est nécessaire d’avoir

Exécution
une machine virtuelle java (JVM) pour exécuter Exécution Exécution
un programme java. C’est un exécutable qui

est écrit pour la machine sur laquelle on désire

éxécuter cette application

❑API (Application Programming Interface) :

Librairies très complètes fournies pour

développer des applications traitant de

nombreux thèmes

11
L’API Java

❑ L’API Java est constituée d’un ensemble de librairies d’outils nommés Package

❑ Java.lang: gestion des chaînes de caractères (String), interaction avec l’OS (System),

programmation parallèle (Thread).

❑ Java.util: parseur de chaîne, Liste, Dictionnaires, HashTable,...

❑ Java.io: gestion des entrées/Sorties (écran, clavier, fichier)

❑ java.net: création de sockets, de serveurs, gestion de protocoles, URL

❑ java.applet: gestion des applets

❑ Java.awt: gestion de l’interface graphique: Fenêtres, boutons, boites de dialogue, événements

souris,...

❑ Java.beans : gestion des beans

❑ Java.rmi : gestion des rmi

12
Application Java: Standalone
Application

Application
java
Machine
Virtuelle java
Plateforme
Spécifique

❑Une application java dite “standalone” est une application qui s’exécute sur une machine

isolée du réseau et possédant ses propres ressources (disque, CPU,OS).

❑La base de l’application est un ensemble de fichiers de Bytecode (“.calss“) à interpréter

(les autres .class sont disponibles sur disque).

13
Application Java: Applet
Applet

Application
java
Machine
Virtuelle java
URL:http://www.sum.com
Navigateur
Plateforme
Spécifique

❑ Un (une) Applet (Appliquette) est une application java qui s’exécute au sein d’une page HTML.

❑ Une fois la page HTML chargée et à la rencontre d’une balise spéciale, le navigateur lance sa

propre JVM, charge l’applet, charge ses propres .class de l’API nécessaire et exécute l’applet.

14
Caractéristiques Java

❑ Indépendant de la plate-forme: le programme java compilé en un

Bytecode spécifique à la machine

❑ Dynamique : les . Class sont chargés au lancement de l’application

❑ Orienté Objet pur: lui conférant les qualités suivantes:

❑ Une meilleure modularité

❑ Une maintenance aisée des applications

❑ Une optimisation facile des composants

❑ Une réutilisation accrue du code écrit

❑ Des aspects de généricité et de dynamicité


15
Caractéristiques Java…
❑ Simple
❑ Aspects Objet et langage simplifiés:
❑Garbage collector:récupération automatique de la mémoire
❑ Exceptions: mécanisme de gestion des erreurs
❑Pas d’Héritage multiple ni de manipulation de pointeurs
❑ API simple et puissante
❑ Une syntaxe simple et plus simple : très proche du C et de C++
❑ Robuste: lui conférant les qualités suivantes:
❑ Typé: fortement typé
❑ Pointeurs interdits: souvent générateurs d’erreurs (le mécanisme de référence proposé)
❑ Contrôle de type: contrôle très strict de retypage et pas de conversion implicite
❑ Garabage collector: le programme peut s’allouer autant de mémoire sans se soucier de
sa libération
❑ Contrôles au RunTime: de nombreux contrôles lors de l’exécution (e.g., dépassement
d’index du tableau)

16
Caractéristiques Java…

❑Sécurisé au niveau langage


❑Langage plus compilateur: limite les erreurs (pas d’accès à la mémoire
système, variables initialisées avant leur utilisation)
❑Le chargeur de classes (ClassLoader): empêche q’une application essaye
de remplacer un composant du langage (classe) par un autre composant
❑Vérificateur du Bytecode: vérifie
❑ Pas de dépassement de la pile
❑Pas d’accès à des membre interdits (private)
❑Pas de mauvais passage de paramètres
❑Security Manager: assure une barrière de sécurité entre une application
java et la machine:
❑ Interdire l’accès au système de fichiers
❑Limiter les accès réseau
❑Interdire l’installation d’un autre ClassLoader
17
Gestion des aspects de sécurité
“On ne peut faire confiance à personne”

•pas de gestion de •un espace mémoire par source chargé par le réseau
l’Allocation dynamique •un espace mémoire pour tous les sources locaux “élimination
•Pas de pointeurs une classe ne peut référencer une classe importée des conflits
“élimination des erreurs qu’en la référençant explicitement d’exécutions”
de prog. classiques...”

Java librairies “class verifieur de


source de classes Loader” pseudo-code vérification
(.java) des types et
des paramètres
de chaque
interpreteur compilateur
Bytecodes instruction
compilateur java temps reéel
Java chargé “parade aux
Java
localement compilateurs
ou par réseau Runtime System hostiles...”
java virtual Machine
Java byte
Code protection des fichiers et des accès réseaux : Utilisation d’une
(.class) les classes du “networking package” permettent de machine virtuelle
configurer la plateforme avec différents niveaux de “ parade aux accès
paranoia : interdir tout accès réseau,... mémoire illicites”
“maîtrise de l’origine des info.”

18
Caractéristiques Java…

Application

Thread Thread
Animation Principal

Thread Thread
Disque
Accès BD connexion
Serveur

❑ Langage Multi-Thréadé:
❑ Thread (processus léger): entité d’exécution qui peut s’exécuter en parallèle (de manière
concurrente) avec d’autres threads au sein d’une même application

19
Caractéristiques Java…

❑ Le réseau et Java: support de mécanismes de communication distant, au moyen


d’API simple, tels que les sockets (tube de communication bidirectionnel permettant
deux applications à travers le réseau) ou RMI.

Machine Locale Machine distante

J
V Client Socket
Serveur
M

De java vers Serveur

20
Caractéristiques Java…

❑ RMI (Remote Method Invocation): permet à une application java qui s’exécute sur
une JVM locale de demander l’exécution des fonctionnalités d’un autre objet qui
s’exécute lui dans une JVM sur une machine distante

Machine Locale Machine distante

Invoquer une
J méthode d’un objet J
V Client java distant V Objet
M M

De java vers java

21
Caractéristiques Java…

❑ Accès aux bases de données JDBC (Java DataBase Connectivity):


❑ permet à une application de communiquer de manière standard avec n’importe
quelle base de données.
❑ Cette communication se fait via un programme intermédiaire appelé Driver (écrit
en java, C, ou tout autre langage)

SGBD:
Application Java
Oracle
Informix
Java.sql.* Sybase
Mysql
Paradox
Driver JDBC
Sql Server

22
Points faibles

❑ Pas aussi rapide qu’un programme natif

❑ Gourmand en mémoire

❑ Absence de surcharge d’opérateurs comme en


C++

❑ Absence dans le langage des types


paramétriques – templates

23
Environnement de Développement

❑ SUN

❑ Jdk

❑ JavaWorkShop

❑ BORLAND

❑ Jbuilder

❑ MICROSOFT

❑ Visual J++
❑ IBM

❑ Visual Age

24
Premier Exemple en Java

class Bonjour {
public static void main(String A[]){
System.out.println(“bonjour “);}
}

❑Comme tout programme Java, celui ci comporte une classe Bonjour contenant une

❑ seule méthode main() avec laquelle l’interpréteur débute l’exécution du programme


❑ Sauvegarder dans un fichier Bonjour.java
❑ Compilation avec javac : javac Bonjour.java Génération du fichier Bonjour.class
❑ Pour exécuter le programme : java Bonjour

25
Première Applet en Java
public class PremiereApplet extends java.applet.Applet {
public void init()
{
add(new java.awt.Label("Ca marche !!"));
}
}

<html>
<body>
<applet code="PremiereApplet" width="200" height="150">
</applet>
</body>
</html>

Lancer appletviewer nomfichier.html

26