Programmation Orientée Objet



Documents pareils
Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Initiation à JAVA et à la programmation objet.

TP1 : Initiation à Java et Eclipse

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Chapitre I Notions de base et outils de travail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Programmer en JAVA. par Tama

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

INITIATION AU LANGAGE JAVA

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Java Licence Professionnelle CISII,

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

as Architecture des Systèmes d Information

Java c est quoi? Java pourquoi?

TP1. Outils Java Eléments de correction

Cours 1: Java et les objets

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Annexe : La Programmation Informatique

java : Langage et Environnement

Introduction à Java. Philippe Genoud.

Une introduction à Java

Évaluation et implémentation des langages

Plan du cours. Historique du langage Nouveautés de Java 7

Remote Method Invocation (RMI)

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Environnements de développement (intégrés)

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Langage Java. Classe de première SI

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Généralités sur le Langage Java et éléments syntaxiques.

Éléments de programmation et introduction à Java

RMI le langage Java XII-1 JMF

Java Licence professionnelle CISII,

Java - la plateforme

PROGRAMMATION PAR OBJETS

Programmeur Java 1.4 et 5.0

Derrière toi Une machine virtuelle!

TP1 : Initiation à Java et Eclipse

Bases Java - Eclipse / Netbeans

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Vulgarisation Java EE Java EE, c est quoi?

Programmation Orientée Objet

Premiers Pas en Programmation Objet : les Classes et les Objets

Programmation Objet Java Correction

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Présentation de Java. Olivier de Pertat IT GROUP

Objets et Programmation. origine des langages orientés-objet

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

La carte à puce. Jean-Philippe Babau

Remote Method Invocation Les classes implémentant Serializable

Compte Rendu d intégration d application

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Utiliser Java sans BlueJ

Eclipse atelier Java

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Mise en œuvre des serveurs d application

Projet de développement

La technologie Java Card TM

Introduction au langage C

Traitement de données

Java DataBaseConnectivity

Java Avancé. Le langage Java. Rémi Forax

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

DES CONCEPTS OBJET PAR JAVA

Application web de gestion de comptes en banques

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Projet de Veille Technologique

Java 7 Les fondamentaux du langage Java

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Programmation en Java IUT GEII (MC-II1) 1

ACTIVITÉ DE PROGRAMMATION

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

Architecture Orientée Service, JSON et API REST

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Remote Method Invocation en Java (RMI)

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Calcul Parallèle. Cours 5 - JAVA RMI

SGDN. Projet: JAVASEC

Intergiciel - concepts de base

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

UE Programmation Impérative Licence 2ème Année

EP60.92 Projet d application pluridisciplinaire La chasse aux trésors

Transcription:

Programmation Orientée Objet Java Enseignant : Ramzi Mahmoudi mahmoudr@esiee.fr Année Universitaire: 2012/2013

Plan des chapitres 1. Introduction 2. Les bases du langage 3. La Programmation Objet avec Java 4. Des concepts avancés de la programmation orientée objet Java 5. Les classes de base 2

Chapitre I Introduction Le développement d applications aujourd hui

Développement de logiciels Une application peut comprendre des milliers de lignes de code Systèmes bancaires ou systèmes de contrôle (l'électricité, les téléphones, l'aéroport), Systèmes de simulation ou de modélisation (les domaines de la biologie, de l'économie) Un système implique alors la participation de plusieurs programmeurs 4

Programmation proche de la machine Nécessité de faciliter cette analyse et surtout sa transcription la plus directe possible en un programme L algorithme est une solution conceptuelle, le programme est la solution technique mettant en œuvre l algorithme. Au début de l informatique, les langages étaient proches de la machine une solution conceptuelle était difficile à mettre en œuvre sans de bonnes connaissances techniques. 5

La «Crise du Logiciel» (1960, 1970) Coût de production de logiciel qui marche est trop élevé Idée: Diviser pour régner Il faut structurer les systèmes en composants pour faciliter la coopération des programmeurs, favoriser les tests, la réutilisation des codes, 6

Programmation orientée traitement Principe : «diviser pour régner» : on conçoit un ensemble de procédures pour résoudre le problème on décide d abord de la manière dont on va manipuler les données puis on conçoit les structures de données pour faciliter cette manipulation. une procédure est un regroupement d instructions dans un bloc que l'on pourra appeler par son nom void affichage(int i) { int j; Ecrire ( "entrez une valeur pour j"); Lire (j); Ecrire ("la variable passée en paramètre vaut : ",i); Ecrire ("la variable déclaré dans la procédure vaut: ", j); } 7

Programmation orientée traitement Limitation de cette approche (exemple) : Un changement dans la structure des données peut entraîner de profondes modifications dans l'organisation des procédures. il y a la difficulté de : Chercher les fonctions concernées par ce changement Pour les fonctions concernées : Ajout ou suppression d arguments et de variables locales Ajout ou modification ou suppression d instructions 8

Développement de logiciels Problème Développer des logiciels de qualité à un coût acceptable Solution Méthode de construction de logiciel modulaire Conception et programmation par objets: méthodologie de conception de logiciel qui répond bien aux exigences de qualité 9

Les langages Objets Langages objets : 1969 Simula Smalltalk C Objective C, C++ Pascal : Pascal Objet, Delphi (Borland) Basic : VBA (Microsoft) Java C# (Microsoft) Python (script) 10

I.1. Paradigmes de la programmation par objets SmallTalk, Eiffel, C++, Java, C#,

Développement Approche procédurale : "Que doit faire mon programme?" Exemple: Gestion d'une bibliothèque Germinal E. Zola Le Monde Alice Dupont Directrice Anne Durand Lectrice Le seigneur des anneaux J.R.R.Tolkien Michel Martin Bibliothécaire Arsène Deschamps Lecteur 12

Développement Approche procédurale : "Que doit faire mon programme?" Gérer les emprunts de livres Exemple: Gestion d'une bibliothèque Germinal E. Zola Le Monde Alice Dupont Directrice Anne Durand Lectrice Le seigneur des anneaux J.R.R.Tolkien Michel Martin Bibliothécaire Arsène Deschamps Lecteur 13

Objet Approche procédurale : "Que doit faire mon programme?" Approche orientée-objet : "De quoi doit être composé mon programme?" Cette composition est conséquence d'un choix de modélisation fait pendant la conception Germinal E. Zola Le Monde Alice Dupont Directrice Anne Durand Lectrice Le seigneur des anneaux J.R.R.Tolkien Michel Martin Bibliothécaire Arsène Deschamps Lecteur 14

Classe Des objets similaires peuvent être informatiquement décrits par une même abstraction : une classe même structure de données et méthodes de traitement valeurs différentes pour chaque objet Classe Livre Classe Journal Classe Employé Classe Lecteur Germinal E. Zola Le Monde Alice Dupont Directrice Anne Durand Lectrice Le seigneur des anneaux J.R.R.Tolkien Michel Martin Bibliothécaire Arsène Deschamps Lecteur 15

Classe Classe Livre -titre, auteur Classe Journal -nom, date Classe Employé -nom, prénom, statut Classe Lecteur -nom, prénom Germinal E. Zola Le Monde Alice Dupont Directrice Anne Durand Lectrice Le seigneur des anneaux J.R.R.Tolkien Michel Martin Bibliothécaire Arsène Deschamps Lecteur 16

Classe Classe Livre -titre, auteur Classe Journal -titre Classe Employé -nom, prénom, statut Classe Lecteur -nom, prénom Titre = germinal Auteur = zola Germinal E. Zola Le seigneur des anneaux J.R.R.Tolkien Le Monde Titre = Seigneur des anneaux Auteur = Tolkien -Nom=Dupont - prénom = Alice -Statut = directrice Michel Martin Bibliothécaire Alice Dupont Directrice Arsène Deschamps Lecteur Anne Durand Lectrice 17

Classe Classe Livre -titre, auteur +Date emprunter(lecteur) Classe Journal -titre Classe Employé -nom, prénom, statut Classe Lecteur -nom, prénom + ListeDeLivres livresempruntés() Germinal E. Zola Le Monde Alice Dupont Directrice Anne Durand Lectrice Le seigneur des anneaux J.R.R.Tolkien Michel Martin Bibliothécaire Arsène Deschamps Lecteur 18

Classe Classe Livre -titre, auteur +Date emprunter(lecteur) Classe Journal -titre Classe Employé -nom, prénom, statut Classe Lecteur -nom, prénom + ListeDeLivres livresempruntés() Classe ListeDeLivres Classe Date -jour, mois,... + getlivre(numéro) + nombres() Germinal E. Zola Le Monde Alice Dupont Directrice Anne Durand Lectrice Le seigneur des anneaux J.R.R.Tolkien Michel Martin Bibliothécaire Arsène Deschamps Lecteur 19

Contenu d'une classe Une classe est composée de plusieurs membres dont chacun est soit : un attribut : variable typée une méthode (ou opération) : ensemble d'instructions de traitement Attributs class CompteBancaire { String proprietaire; double solde; Méthodes } double getsolde() { return solde; } void credite(double val) { solde = solde + val; } 20

Programmation orientée objet Orienté objet est une technique pour modéliser des systèmes réels Comprendre un problème (ou un système) réel complexe, beaucoup d information, de détails Modèle = vue abstraite du problème passage du monde réel au monde informatique retenir les propriétés essentielles: données + opérations 21

Programmation orientée objet Un programme est défini en terme d objets Objet est une entité avec un état et un comportement Plusieurs instances de la même classe (objets) avec chacune son état propre Les objets communiquent entre eux à l aide de messages 22

Première application Créer un fichier texte : HelloWorld.java Règle de bonne pratique : 1 classe par fichier et 1 fichier par classe (même nom) Nom de la classe commence par Majuscule, nom de la fonction en minuscule public class HelloWorld { public static void main (String[]args) { System.out.println("Hello the world"); } } La première ligne du programme doit être la déclaration de la classe Tout programme doit contenir une méthode main qui porte la signature cicontre Écrire à l écran Hello the World Fermer les accolades 23

Première application Le mot class veut dire que nous allons définir une nouvelle classe Java, suivi du nom de cette classe. En Java, les majuscules et les minuscules sont considérés comme des caractères différents. Les caractères «{» et «}» marquent le début et la fin du bloc d instructions à réaliser par la classe. Le mot main indique que cette méthode est la méthode principale de la classe. Un interpréteur Java à pour fonction d exécuter les instructions de la méthode principale main, du programme qu on lui soumet. 24

Première application Une méthode peut prendre des paramètres de types précis et renvoie éventuellement une valeur de type tout aussi précis. le mot void signifie que la méthode main ne renvoie aucune valeur. args[ ] est le paramètre d entrée de type String de la méthode main. les mots public et static décrivent chacun une caractéristique de la méthode (public : méthode visible, static : spécifique à la classe et non aux objets) System.out.println est une commande permettant d afficher la chaîne de caractère «Hello the World» sur la sortie standard de la machine qui est l écran 25

Structure d une application Java Parmi les classes définies dans le fichier CCC.java il ne peut y avoir qu une seule classe publique et ayant le même nom CCC que le fichier. Elle contient généralement la méthode main() Fichier «CCC.java» Définition d une classe AAA Définition d une classe BBB Définition d une classe CCC Méthode main ( ) 26

Compilation et exécution Pour exécuter, dans une console DOS ou UNIX, si j ai un fichier HelloWorld.java pour la classe HelloWorld : javac HelloWorld.java Compilation du code java Indication des erreurs de syntaxe éventuelles Génération d un fichier HelloWorld.class si pas d erreurs java HelloWorld Java est la machine virtuelle Exécution du bytecode (HelloWorld.class) Nécessité de la méthode main, qui est le point d entrée dans le programme 27

I.2. Mécanisme de programmation par objets Instanciation Envoi de message Héritage

Instanciation L'instanciation est l'opération qui consiste à créer un objet à partir d'une classe. En Java, le mot-clé new provoque une instanciation en faisant appel à un constructeur de la classe instanciée. Un constructeur est une méthode qui a le même nom que la classe Un constructeur n'a pas de valeur de retour Plusieurs constructeurs peuvent exister dans une même classe (avec des arguments différents) Il faut au moins un constructeur dans une classe pour en instancier des objets 29

Constructeur de la classe Livre public class Livre { private String titre; private String auteur; private Lecteur emprunteur; public Livre(String t, String a) { titre = t; auteur = a; emprunteur = null; } public void settitre(string t) { titre = t;} public String gettitre() { return titre;} Constructeur } public Date emprunte(lecteur lec) { } 30

Instanciation de la classe Livre public class Bibliotheque { public void enregistrelivre(string titre, String ecrivain) { Livre nouveaulivre; nouveaulivre = new Livre(titre,ecrivain); ajouteenbibliotheque(nouveaulivre); } } public void ajouteenbibliotheque(livre li) { } 31

Invocation de méthodes livresempruntés? Un point. sépare le nom de la méthode de l'objet sur lequel elle est invoquée. Lecteur lecteur1 = new Lecteur("Anne","Durand"); Livre monlivre = new Livre("Germinal", "Zola"); String titredulivre = monlivre.gettitre(); ListeLivres l1 = lecteur1.livresempruntés(); for (int i =0; i < l1.nombre(); i++) System.out.println(l1.getLivre(i).getTitre()); Anne Durand Lectrice Arsène Deschamps Lecteur 32

Exemple public class Livre { private String titre; private Lecteur emprunteur; public boolean estemprunte() { if (emprunteur == null) return false; else return true; } public Date emprunte(lecteur lec) { if ( this.estemprunte() == true) return null; if ( lec.empruntpossible() ) { emprunteur = lec; lec.ajouteemprunt( this ); return new Date(); } else return null; } } public class Lecteur { private Livre[ ] emprunts; private int nbemprunts; public boolean empruntepossible() { if (nbemprunts < 5) return true; else return false; } } void ajouteemprunt(livre liv) { emprunts[nbemprunts] = liv; nbemprunts ++; } 33

I.3. Java, plus précisément? Historique, objectifs, caractéristiques

Historique Développé par les laboratoires de recherche de Sun Microsystems au début des années 1990. Développé comme une alternative au C/C++. Langage principalement attribué à James Gosling Devrait être petit et portable. Ciblé pour du logiciel embarqué dans des produits de consommation (appareils électroniques intelligents). 35

Historique Le nom Oak étant déjà commercialisé Le nom de JAVA fut adopté lors d un passage dans un café aux alentours. James Gosling,Arthur Van Hoff, and Andy Bechtolsheim Just Another Vague Acronym Java dévoilé en 1995 Netscape intègre l exécution de Java dans son navigateur Sun annonce un environnement de développement gratuit Java fait l objet d un brevet ce qui permet à SUN de le contrôler 1995 1996 Grand concours de rédaction d applettes qui popularisent JAVA 36

C est quoi Java? Java est un langage de programmation Un programme Java est compilé et interprété Java est une plateforme La «Java Platform» est constituée de : La «Java Virtual Machine» (JVM) Des interfaces de programmation d application (Java API) 37

L API Java L'environnement Java propose une API (Application Programmer's Interface) L API Java est structuré en libraires (packages). Package : regroupement de classes ayant un lien logique entre elles pour les utiliser dans d'autres classes pour les «spécialiser» Pour programmer efficacement, une bonne connaissance de ces packages est indispensable Ne pas refaire ce qui a déjà était fait (d'ailleur surement en mieux) 38

API Java : quelques classes standards java.lang : classes essentielles objet, types de base, processus java.util : structures de données (collections) listes, ensembles, hashtables, arbres, itérateurs java.awt : interface graphique (Abstract Window Toolkit) fenêtres, boutons, événements... java.io : entrées / sorties flot de données provenant de fichier ou buffer java.net : réseau URL, sockets java.rmi : objets distribués (Remote Method Invocation) java.sql : JDBC (Java Data Base Connectivity) connexion à une base de données relationnelle envoi de requêtes SQL, récupération des résultats 39

La JVM Java Définit les spécifications hardware de la plateforme Lit le bytecode compilé (indépendant de la plateforme) Implémentée en software ou hardware La JVM définit : Les instructions de la CPU Les différents registres Le format des fichiers.class La pile des instructions L espace mémoire Trois tâches principales : Charger le code (class loader) Vérifier le code (bytecode verifier) Exécuter le code (runtime interpreter) 40

La JVM Java Avantages Développement plus rapide courte étape de compilation pour obtenir le byte-code, pas d'édition de liens, déboguage plus aisé, Le byte-code est plus compact que les exécutables pour voyager sur les réseaux. Inconvénients : L'interprétation du code ralentit l'exécution de l'ordre de quelques dizaines de fois plus lent que C++ Java est gourmand en mémoire 41

Portabilité MyProgram.c Exécuté une seule fois Mais différent pour chaque environnement Compiler MyProgram.o Génère du code natif directement exécutable, mais spécifique à chaque environnement 010110 Exécuté une seule fois Traduit le programme en un code intermédiaire Appelé bytecode indépendant de la machine Chaque fois que le programme est exécuté MyProgram.java Compiler MyProgram.class Interpreter Lit le bytecode et exécute sur la machine 010110 42

Portabilité 43

Caractéristiques Totalement portable : génère des octets de code après la compilation (Bytecode) C est un langage interprété. Indépendant de l architecture: JVM (Java Virtual Machine) Totalement orienté objet. Ramasse-miettes automatique pour la gestion de la mémoire (pas besoin de delete pour détruire objets). Librairies complètes(+/-) et normalisées. Facilitées de communication réseau incluses. Gestion propre des exceptions. 44

Caractéristiques Le langage Java est interprété : Un programme Java n'est pas compilé en code machine ; Il sera compilé en code intermédiaire interprété nommé ByteCode. Lors de l'exécution le ByteCode sera interprété à l aide d une machine dite virtuelle JVM (Java Virtual Machine). Le langage Java est portable et indépendant des plates-formes : Le code intermédiaire produit «ByteCode» est indépendant des plates-formes. Il pourra être exécuté sur tous types de machines et systèmes à condition qu'ils possèdent l'interpréteur de code Java «JVM». 45

Caractéristiques Simple et familier Apprentissage facile (syntaxe du langage C) Développeurs opérationnels rapidement (syntaxe du langage C) Suppression des concepts sources de bugs Orienté Objet pointeurs include (fichier en-tête) Java ne permet d'utiliser que des objets (hors les types de base) Fiable et robuste (en mémoire et en exécution) Sources d'erreurs limitées typage fort (Ada), pas de manipulations de pointeurs, etc. (qui est le cas du C++), Vérifications faites par le compilateur facilitant une plus grande rigueur du code 46

Caractéristiques Le langage Java est distribué : Supporte des applications réseaux (protocoles de communication java.net) URL : permet l accès à des objets distants RMI : Remote Method Invocation Programmation d'applications Client/Serveur : classe Socket Manipulation de fichier local ou fichier distant identique : indifférence à la localisation Le langage Java est multithread : JAVA permet l exécution simultanée de plusieurs processus léger (thread) Classe java.lang.thread avec les méthodes permettant de : Démarrer, Exécuter, Stopper ces processus. contrôler les synchronisations et l état cohérent des données. 47

Versions de Java Java 1.0.2 (1996) : le JDK : Java Development Kit, 212 classes, 8 paquetages version minimale des browsers web. Java 1.1.5 (1997) : 504 classes, 23 paquetages amélioration interface utilisateur (AWT), gestion des erreurs, cohérence du langage Java 1.2 (Java 2 en 1998) : 1520 classes, 59 paquetages Swing, Drag and drop, amélioration audio Java 1.3 (2001) J2SDK (nouveau nom) pour J2EE (Entreprise, serveur), J2ME (PDA) amélioration de la gestion mémoire, rapidité Java 1.4 (2002) : 2757 classes, 135 paquetages J2SDK J2SE (nouveau nom), XML, expressions régulières, nouvelles E/S, accès à la mémoire vidéo (VolatileImage) pour l accélération etc 48

D un point de vue technique Les principaux outils de base de la JDK javac représente le compilateur de java: un programme écrit en java est transformé en bytecode. java est l interpréteur de java : c est la commande à utiliser pour exécuter un programme java jdb est le débogueur de java javap permet de déassembler un fichier compilé javadoc est un générateur de documentation. Il permet de générer de la documentation sur les programmes écrits en java. Documentation en ligne : http://java.sun.com/docs/ 49

L environnement de développement Le compilateur Le compilateur javac permet de compiler un programme java (i.e un code source) en bytecodes java. La commande à utiliser pour compiler un programme est javac [options] ClassName.java A l issue de cette commande, le compilateur javac génère un fichier ClassName.class afin qu il soit ensuite interprété par la JVM (Java Virtual Machine) L interpréteur L interpréteur java permet d exécuter une application écrite en langage java (autre qu une applet), plus spécifiquement un fichier ClassName.class (i.e le java bytecodes). Par le biais de l interpréteur java, on peut faire passer des arguments à la fonction main La commande à utiliser pour exécuter un programme est java [options] Classname <args> 50

L environnement de développement Le débogueur Le débogueur jdb permet de déboguer "en ligne» un programme (une classe) Il n est pas facile à utiliser Pour pouvoir déboguer un programme (i.e une classe) il faut compiler la classe avec l option -g La commande à exécuter pour l utiliser est jdb Classname Il existe une aide pour le débogueur. Pour accéder à cette aide, il faut taper help ou? Le générateur Le générateur de documentation javadoc permet de générer des documents HTML équivalents aux documents Java de SUN (i.e ayant la même structure) La commande à exécuter pour l utiliser est javadoc Classname 51

IDE (Integrated Development Environment) La JDK On peut télécharger la JDK à partir du site de Sun : java.sun.com Autres outils de développement Il existe plusieurs outils de développement dont la plupart sont payants. Néanmoins voici quelques uns gratuits : Jedit http://www.jedit.org NetBeans : http://www.sun.com Eclipse http://www.eclipse.org Emacs (avec JDEE) http://www.gnu.org/software/emacs/ http://jdee.sunsite.dk/ JBuilder : Windows, payant mais il existe des versions d essai Java Workshop Windows/Unix, gratuit 52

Avantages Ecrire une fois, exécuter partout! Sécurité. Exécution dans un navigateur Web (Applet). Gestion automatique de la mémoire (garbage collector) Programmation modulaire et dynamique. Lisibilité du code. Code compact (beaucoup est dans la JVM). L'API. Réseaux, interfaces, son, pont avec les bases de données en natif 53

Inconvénients Interprété : lenteur Nécessite une JVM pour fonctionner. La gestion de la mémoire est inefficace dans la plupart des cas. Difficulté face aux applications gourmandes en mémoire. Moins de mécanismes objet que C++ pourtant plus ancien (héritage multiple) 54