Programmation Java Madalina Croitoru
Madalina Croitoru 2002 2006 Univ. Aberdeen 2006 2008 Univ. Southampton Depuis 2008 Univ. Montpellier II Contact: Page web: www.lirmm.fr/~croitoru/teaching.html Email: croitoru@lirmm.fr K105 Bâtiment K IUT Montpellier (prendre rendez-vous avant)
Plan du cours Historique (1 semaine) Syntaxe Basique (2 semaines) Classes et Tableaux (4 semaines) Héritage (2 semaines) Exceptions (1 semaine) Interface langage (1 semaine) Interfaces graphiques et événements (3 semaines)
Notation et organisation Chaque semaine 4 h (Cours TP) 2 TP notés (semaine 5 et semaine 9) (4h travail individuel) 1 projet (rendu semaine 13 travail en binôme) Note finale: TP1: 30% TP2: 30% Projet: 40%
Java - historique Langage de programmation informatique orienté objet créé par James Gosling et Patrick Naughton employés de Sun Microsystems (Sun est sur le point d'être racheté par Oracle Corporation) présenté officiellement le 23 mai 1995 au SunWorld.
Philosophie Lors de la création du langage Java, il avait été décidé que ce langage devait répondre à 5 objectifs: simple, orienté objet et familier ; robuste et sûr ; indépendant de la machine employée pour l'exécution ; très performant ; interprété, multi-tâches tâches et dynamique. [voir: http://fr.wikipedia.org/wiki/java_(langage)]
Contexte historique 1965-1980 Programme = un modèle réduit - reproduction des entités du monde réel Simula, Smalltalk 1980-1990 Montée des services R&D chez les gros industriels -> développement des méthodes C++, Eiffel, Ada9X, Object-Cobol, Smalltalk 1990-2010 1990 2010 Diffusion généralisée Java, Python, C#, UML
Contexte historique 1965-1980 Programme = un modèle réduit - reproduction des entités du monde réel Simula, Smalltalk 1980-1990 Montée des services R&D chez les gros industriels -> développement des méthodes C++, Eiffel, Ada9X, Object-Cobol, Smalltalk 1990-2010 1990 2010 Diffusion généralisée Java, Python, C#, UML, Php
Introduction - Les domaines Domaines pénétrés ét é Systèmes d information Bases de données (objet-relationnel) Intelligence Artificielle Programmation standard, distribuée, concurrente, interface graphiques, scientifique, q, etc.
Exercice Faites un schéma de l application suivante: On doit modéliser la bibliothèque de l IUT liut qui gère des livres scientifiques dans tous les domaines: informatique, mathématiques, physique etc. L application doit permettre de rentrer les livres existants t dans la bibliothèque et tles noms, prénoms, no carte étudiant, no personnel etc. des lecteurs. L application doit permettre d afficher une liste des livres prêtés (informatique, mathématiques, livres plutôt applicatifs, etc.)
Introduction - Les principes L équation de la programmation par objets Objets Messages Programme = objets + envoi de messages
Introduction - Les principes L équation de la programmation par objets Objets Messages Héritage Programme = objets + envoi de messages
Introduction - Les bénéfices Réutilisabilité briques bien délimitées, généralisation encouragée Extensibilité par spécialisation Stabilité les concepts d un domaine sont plus stables que les fonctions Passage à l échelle structuration modulaire
Introduction - A propos de Java Une allure C++ syntaxe, constructeurs, classes paramétrées (Java 1.5) Mais un langage simplifié pas d héritage multiple, de surcharge d opérateurs, de classes paramétrées (avant Java 1.5) Et s inspirant des stratégies Smalltalk semi-compilé/semi-interprété, machine virtuelle API riche Allocation/récupération dynamique, ramasse-miettesmiettes
Langages compilés Pascal, ADA, C, C++,... Fichier source Fichier code machine Autres fichiers compilés (bibliothèques ) compilation Édition de liens Fichier exécutable code machine lié à l architecture de la machine exécution
Lisp, Prolog, shell Unix, Langages interprétés Javascript, php,... Fichier source Autres fichiers sources chargés à la demande Exécution par un interpréteur Interprétation : traduction du code source en code machine «à la volée»
Et Java?.java Fichier source.class Fichier code machine compilation pseudo-code Byte-code exécution Interprétation du pseudo-code Pseudo-code : code pour une machine abstraite possède des fonctionnalités communes à toutes les architectures par une "machine virtuelle"
Pré-compilation en un code universel (pseudo-code ou byte-code) donc indépendant de toute architecture Puis interprétation ti par une machine virtuelle (propre à chaque architecture de machine) Vieille idée : voir le 1er Pascal + portabilité du code compilé - exécution moins rapide (toutefois il existe des compilateurs en code natif)
Le succès de Java a d'abord été lié au web Client Navigateur 1 Intro.html? Serveur Serveur web 3 Visualisation du document 2 Intro.html
Applet programme invoqué dans un document HTML et exécuté par un navigateur <OBJECT classid="http://www.ici.fr/monapp.class"> </OBJECT> (depuis HTML 4, <OBJECT> remplace <APPLET>)
Trois sortes de programmes Java Applet : programme invoqué dans un document HTML et exécuté par un navigateur Application : programme "classique" Servlet programme invoqué par un serveur web et exécuté sur la machine du serveur