La technologie JAVA. Introduction à Java. Historique : Origines de Java. Le langage JAVA. Le langage Java un langage orienté-objet



Documents pareils
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

Introduction à Java. Philippe Genoud.

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

Initiation à JAVA et à la programmation objet.

Vulgarisation Java EE Java EE, c est quoi?

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

TP1 : Initiation à Java et Eclipse

Chapitre I Notions de base et outils de travail

Java pour le Web. Cours Java - F. Michel

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

Java - la plateforme

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INITIATION AU LANGAGE JAVA

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

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)

Compte Rendu d intégration d application

Remote Method Invocation (RMI)

as Architecture des Systèmes d Information

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

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

2 Chapitre 1 Introduction

Mise en œuvre des serveurs d application

Bases Java - Eclipse / Netbeans

Environnements de Développement

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

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

Java Licence Professionnelle CISII,

Programmeur Java 1.4 et 5.0

Java c est quoi? Java pourquoi?

RMI le langage Java XII-1 JMF

Introduction à la plateforme J2EE

java : Langage et Environnement

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

La technologie Java Card TM

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Programmation Orientée Objet

Une introduction à Java

Cours 1: Java et les objets

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

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

Programmer en JAVA. par Tama

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Java Licence professionnelle CISII,

Java 7 Les fondamentaux du langage Java

Web Tier : déploiement de servlets

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

Annexe : La Programmation Informatique

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

PRIMAVERA P6 ENTERPRISE PROJECT PORTFOLIO MANAGEMENT WEB SERVICES

Évaluation et implémentation des langages

Présentation de Java. Olivier de Pertat IT GROUP

Machine virtuelle Java pour Palm TX

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Java DataBaseConnectivity

TP1 : Initiation à Java et Eclipse

PROGRAMMATION PAR OBJETS

La JVM. La machine virtuelle Java. La JVM. La JVM

Apache Tomcat 6. Guide d'administration du serveur Java EE sous Windows et Linux. Résumé. Étienne LANGLET

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

TP1. Outils Java Eléments de correction

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

SGDN. Projet: JAVASEC

DotNet. Plan. Les outils de développement

Module BD et sites WEB

Projet de développement

< Atelier 1 /> Démarrer une application web

Projet de Veille Technologique

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

Machines Virtuelles. et bazard autour. Rémi Forax

Cours en ligne Développement Java pour le web

Remote Method Invocation Les classes implémentant Serializable

Auto-évaluation Aperçu de l architecture Java EE

Java et les bases de données

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

10. Base de données et Web. OlivierCuré

Programmation par composants (1/3) Programmation par composants (2/3)

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Solutions de gestion de la sécurité Livre blanc

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

LES NOUVEAUTES DE COST AND PROFITABILITY MANAGEMENT 8.1

JOnAS 5. Serveur d application d

Business Process Execution Language

Auto-évaluation Programmation en Java

Projet. But: consultation en temps réel d événements (cours de bourse, trafic d envoi SMS ) sur des téléphones portables. Serveur de diffusion

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

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

Hébergement de sites Web

Vérification formelle de la plate-forme Java Card

Éléments de programmation et introduction à Java

Bien programmer. en Java ex. couleur. Avec plus de 50 études de cas et des comparaisons avec C++ et C# Emmanuel Puybaret.

Langage Java. Classe de première SI

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

Utiliser Java sans BlueJ

Les Fondements du langage Java & son évolution actuelle.

Remote Method Invocation en Java (RMI)

Ré-architecture et migration d une application standalone vers un serveur applicatif multi-tiers dans un contexte JAVA-SAP

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

Architectures web/bases de données

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Transcription:

La technologie JAVA Introduction à Java Philippe Genoud Philippe.Genoud@imag.fr Christophe Bruley Christophe.Bruley@inrialpes.fr janvier 2004 certains éléments de cette présentation sont issus du cours «Programmation Java» de M. Buffa (ESSI Nice) et aussi du cours «Comment Java? Java Bien» de Patrick Itey (INRIA) Java c est quoi? Un environnement de programmation orienté objets développé par SUN et adapté à la distribution d applications sur Internet et s intégrant au Web. «The network is the computer» 4 éléments Un langage de programmation orienté objet Une machine virtuelle (JVM) ou interpréteur Des bibliothèques de classes standards = API Application Programming Interface (plus de 2500 classes dans java 1.4) Ensemble d outils (java, javac, jdb, javadoc, jar ) 1 Septembre 2004 Ph. Genoud Université Joseph Fourier 2 Historique : Origines de Java 1990 Internet très peu connu, World Wide Web inexistant boom des PC (puissance) Projet Oak de SUN Microsystems Langage pour la communication des appareils électroniques de poche et domotique 1993 mars : le NCSA lance MOSAIC, le premier navigateur internet (protocole http, langage html), le web décolle... été : Oak change d orientation et s adapte à la technologie internet 1995 mai 1995 : annonce officielle de la naissance de la technologie Java (issue de Oak) Le langage JAVA Dans un des premiers papiers sur le langage SUN décrit Java comme suit : «Java : a simple, object-oriented, distributed, interpreted, robust, secure, architecture neutral, portable, highperformance, multithreaded, and dynamic language» Septembre 2004 Ph. Genoud Université Joseph Fourier 3 Septembre 2004 Ph. Genoud Université Joseph Fourier 4 Qu est-ce qu un objet? Modélise toute entité identifiable, concrète ou abstraite, manipulée par l application logicielle une chose tangible ex: ville, véhicule, étudiant, un bouton sur l écran une chose conceptuelle ex: date, réunion, planning de réservation Réagit à certains messages qu on lui envoie de l extérieur; la façon dont il réagit détermine le comportement de l objet. Ne réagit pas toujours de la même façon à un même message; sa réaction dépend de l état dans lequel il se trouve. Un objet possède : Une identité unique (permet de distinguer un objet d un autre) Un état interne donné par des valeurs de variables (ou attributs) Attributs décrivent l état de l objet à un instant donné ex: patient mesure 1,82 m et pèse 75 Kg Attributs sont typés et nommés ex: float hauteur; float poids; Un comportement (capacités d action de l objet) donné par des fonctions ou sous-programmes, appelés méthodes (ou opérations). Méthodes définissent le comportement de l objet (ce qu il peut faire, comment il peut le faire ) et ses réactions aux stimulations externes ex: un étudiant passe un examen, etc Méthodes implémentent les algorithmes invocables sur cet objet Septembre 2004 Ph. Genoud Université Joseph Fourier 5 Septembre 2004 Ph. Genoud Université Joseph Fourier 6 1

Un objet = données + algorithmes Un objet est le regroupement de données (variables ou attributs) et des traitements (méthodes) associées Principe d encapsulation L accès aux données (état) de l objet ne peut être fait qu au travers des méthodes. Les données sont privées (cachées) Les méthodes publiques définissent l interface de de l objet setheures (int m) Comportement Etat (caché) (public) Un objet Intérêt de l encapsulation Modification des structures de données n affecte pas les programmes qui utilisent l objet. setheures (int m) Variables (données internes) int getheure() int jour; int mois; int année; int heure; int minutes; int secondes; setminutes (int m) Méthodes (opérations) Variables (données internes) getheure() int jour; int mois; int année; long int heure; milisecs; int minutes; intintsecondes; setminutes (int m) Méthodes (opérations) int getminutes() Un objet montre Septembre 2004 Ph. Genoud Université Joseph Fourier 7 int getminutes() Septembre 2004 Ph. Genoud Université Joseph Fourier 8 Les objets interagissent et communiquent entre eux par l envoi de messages Les méthodes publiques d un objet correspondent aux messages que l on peut lui envoyer Les messages sont caractérisés par objet cible (recpeteur) du message nom de la méthode à déclencher paramètres de cette méthode Envoi d un message à l objet identifié par mamontre mamontre.setheure(14); mamontre.setminutes(45); Les objets s envoient des messages entre eux objet Pierre mamontre.setheure(14) setheure(int h) objet mamontre Objet récepteur du message Méthode invoquée Paramètre du message objet mamontre mamontre.getmois(); Septembre 2004 Ph. Genoud Université Joseph Fourier 9 Septembre 2004 Ph. Genoud Université Joseph Fourier 10 Les objets (instances) sont créés (instanciés) à partir de "moules" : les classes Classe = schéma/moule/modèle d objets, elle décrit : partie privée structure de données interne (attributs) classe Montre code corps des méthodes (algorithmes) partie publique (interface) noms et paramètres des méthodes Classe = générateur d objets par instanciation, on peut fabriquer des objets obéissant à ce schéma/moule/modèle instance de mémoire Classe = raffinement/spécialisation d une classe existante Elles forment une hiérarchie de classes, où chaque classe : hérite des attributs et méthodes de ses ancêtres/super-classes ajoute de nouveaux attributs et/ou de nouvelles méthodes peut modifier ou redéfinir les méthodes héritées code Montre MontreAiguilles MontreDigitale Intérêt héritage : Réutilisation du code Pas besoin de réinventer la roue à chaque fois mémoire hérite de instance de instance de objet montre1 objet montre2 Université Joseph Fourier Septembre 2004 Ph. Genoud 11 montre1 montre2 montre3 Septembre 2004 Ph. Genoud Université Joseph Fourier 12 2

Approche procédurale (C) Définir les structures de données Définir les traitements Analyse descendante Le programme principal enchaîne les traitements. Approche Objet Identifier les classes Pour chaque classe Définir son interface publique (signature des méthodes) Définir son implémentation (attributs, corps des méthodes) Le programme principal : création (instanciation) d objets en mémoire lance exécution par envoi de messages aux objets créés ces messages peuvent provoquer d autres envois de messages et/ou la création d autres objets Exemple : les visages animés Demo Quels sont les concepts/les objets composant le jeu? Que doivent savoir faire ces objets? Quelles sont leurs propriétés? Septembre 2004 Ph. Genoud Université Joseph Fourier 13 Septembre 2004 Ph. Genoud Université Joseph Fourier 14 Exemple : les visages animés Objets? Capacité d action des objets : que font-ils? Attributs des objets : quelles sont leurs propriétés? Fenêtre capacités d action se fermer s iconifier passer au premier plan attributs position largeur, hauteur Utilisation d une classe existante dans Java (JFrame) Septembre 2004 Ph. Genoud Université Joseph Fourier 15 Exemple : les visages animés Objets? Capacité d action des objets : que font-ils? Attributs des objets : quelles sont leurs propriétés? Visages capacités d action sourire faire la tête avancer changer de direction s afficher attributs couleur position largeur, hauteur Ecriture d une nouvelle classe (Visage) Septembre 2004 Ph. Genoud Université Joseph Fourier 16 Exemple : les visages animés Objets? Capacité d action des objets : que font-ils? Attributs des objets : quelles sont leurs propriétés? Zone de dessin capacités d action s effacer afficher les objets qu elle contient attributs fenêtre où elle se trouve couleur du fond Ecriture d une nouvelle classe (ZoneDessin) en Réutilisant (héritage) une classe existante dans Java (JPanel) Septembre 2004 Ph. Genoud Université Joseph Fourier 17 Une application orientée objet consiste en : création (instanciation) d objets en mémoire lancer exécution par envoi de messages aux objets créés ces messages peuvent provoquer d autres envois de messages et/ou la création d autres objets afficher zonededessin dessiner fenêtre dessiner dessiner visage2 visage1 Septembre 2004 Ph. Genoud Université Joseph Fourier 18 3

: Exemple de programme Java class DemoVisagesAnimes public static void main(string[] argv) JFrame fenêtre = new JFrame("Titre de la fenêtre"); // Création d'un objet de type Dessin. Cet objet est destiné à // contenir les objets graphiques gérés par l'application. Création des objets Dessin dessin = new Dessin(); de l application // Insertion de objet de type Dessin dans la fenêtre de l'appli. fenêtre.add(dessin); // Affichage de la fenêtre fenêtre.show(); // ajout, modification des objets visage Visage v1 = new Visage(); Visage v2 = new Visage(200,100,200,200,5); Envoi de messages dessin.ajouterobjet(v1); aux objets dessin.ajouterobjet(v2); v2.pleurer(); dessin.repaint(10); while (true) v1.deplacer(); v2.deplacer(); dessin.repaint(10); Septembre 2004 Ph. Genoud Université Joseph Fourier 19 Java un langage simple (en apparence?) offre toutes la fonctionnalité d'un langage de programmation puissant syntaxe familière (proche du C ou du C++) mais débarrassé des caractéristiques prêtant à confusion pas de structures ni de macros (struct, typedef et #define) exit les pointeurs réclame un typage fort gestion automatique de la mémoire ("garbage collector") malloc() et free() n'existent plus Simple à prendre en main mais pas limité, Mais comme pour tous les langages objets, il faut une certaine expérience avant de tirer parti au mieux de ses possibilités et surtout de son API très riche Septembre 2004 Ph. Genoud Université Joseph Fourier 20 Java un langage distribué au travers des classes du JDK : fournit un ensemble de classes intégrant une gestion plus ou moins transparente du réseau il suffit de quelques lignes de code pour programmer : récupération d'un fichier au travers du protocole HTTP ou FTP un serveur de socket pouvant accepter des connexions en parallèle depuis version 1.1 : objets distribués, RMI (remote method invocation) possibilité d'envoyer des messages de manière transparente à un objet JAVA situé sur une machine distante intégration future avec CORBA (OMG) Java un langage "multithreadé" "thread" (processus léger) partie de code, un "flot d'instructions" s'exécutant en concurence avec d'autres threads dans un même processus cela permet à un seul programme d'effectuer plusieurs activités simultanément (programmes multitâches) threads font partie intégrante du langage JAVA (jusque dans certains des mots clés) simplicité de mise en oeuvre portabilité (plus directement d appels système) outils de gestion des ressources critiques (sémaphores...) et synchronisation Septembre 2004 Ph. Genoud Université Joseph Fourier 21 Septembre 2004 Ph. Genoud Université Joseph Fourier 22 Java un langage "multithreadé" : Exemple : l application Visage Un langage compilé / interprété class DemoVisagesAnimes public static void main(string[] argv) Frame fenêtre = new Frame("Titre de la fenêtre"); // Création d'un objet de type Dessin. Cet objet est destiné à // contenir les objets graphiques gérés par l'application. Dessin dessin = new Dessin(); // Insertion de objet de type Dessin dans la fenêtre de l'appli. fenêtre.add(dessin); // Affichage de la fenêtre fenêtre.show(); // ajout, modification des objets visage Visage v1 = new Visage(); Visage v2 = new Visage(200,100,200,200,5); dessin.ajouterobjet(v1); dessin.ajouterobjet(v2); v2.pleurer(); while (true) v1.deplacer(); v1.deplacer(); // deux threads v2.deplacer(); v2.deplacer(); // d exécution dessin.repaint(10); Compilation d'un programme JAVA : génération de byte-code Le byte-code est : proche d'un langage machine indépendant de l'environnement d'exécution (matériel + OS) // exemple pour désassambleur public class Test public static void main(string[] args) for (int i = 0; i < 10; i++) System.out.println("Hello " + i); code source : Test.java javac 0 iconst_0 1 istore_1 2 goto 30 5 getstatic #10 <Field java.io.printstream out> 8 new #5 <Class java.lang.stringbuffer> 11 dup 12 ldc #1 <String "Hello ">. 27 iinc 1 1 30 iload_1 31 bipush 10 33 if_icmplt 5 36 return byte-code : Test Septembre 2004 Ph. Genoud Université Joseph Fourier 23 Septembre 2004 Ph. Genoud Université Joseph Fourier 24 4

La machine virtuelle Java Exécution d'un programme Java compilé byte-code assure la portabilité des programmes Java langage d'une Machine Virtuelle à l'exécution un interpréteur simule cette machine virtuelle.java source javac java Java PC VM Windows byte-code Java VM Java VM Sun Sparc Solaris Linux PowerPc MacOS X La machine virtuelle java Principes de fonctionnement Chargement chargement sélectif et dynamique des classes vérification statique du code (tentatives de modification de la machine virtuelle,...) Protection lors de l'exécution Le "security manager" possède un droit de veto (accès "sauvages" au système de fichiers,...) Cette protection peut-être modulée MV Java Réseau ou Système de fichiers Class Loader Classes locales Byte-Code verifier Security Manager Interpreter Septembre 2004 Ph. Genoud Université Joseph Fourier 25 Septembre 2004 Ph. Genoud Université Joseph Fourier 26 Types de programmes Java Les Applications indépendantes Programmes autonomes (stand-alone) Types de programmes Java Application indépendante Application doit posséder une classe principale classe possédant une méthode de signature public static void main(string[] args) Demo Les Applets Programmes exécutées dans l environnement d un navigateur Web et chargés au travers de pages Seuls diffèrent les contextes d'invocation et d exécution Les droits des applets et des applications ne sont pas les mêmes Cette méthode sert de point d entrée pour l exécution l exécution de l application démarre par l interprétation de cette méthode ex : java AppliVisage1 Septembre 2004 Ph. Genoud Université Joseph Fourier 27 Septembre 2004 Ph. Genoud Université Joseph Fourier 28 Types de programmes Java Applet Types de programmes Java Applet : Principe de fonctionnement Classe ne possédant pas de méthode main() Son bytecode réside sur un serveur http Elle est véhiculée vers un client http (navigateur Web) via une page html qui contient son url Lorsqu un navigateur compatible Java (avec sa propre machine virtuelle java (JVM)) reçoit cette page, il télécharge le code de la classe et l exécute sur le poste client l applet doit posséder un certain nombre de méthodes pour permettre cette exécution init(), start(), stop(), paint(), destroy() <> <HEAD> <TITLE>A Clock (1.1)</TITLE> </HEAD> <BODY> <h1>a Clock (1.1)</h1> <hr> <applet code="clock2" width=170 height=150> <param bgcolor="c0c0c0"> </applet>... </BODY> 5. Exécution de l applet dans la JVM du client Client http Navigateur intégrant une machine virtuelle Java http://java.sun.com/jdk1.3/demo/applets/clock/example1.html 1. Demande de chargement d une page web qui contenant une applet 2. Chargement de la page html example1.html 3. Demande de chargement de l applet référencée dans la page 4. Chargement du bytecode des classes de l applet Clock2 Serveur http Septembre 2004 Ph. Genoud Université Joseph Fourier 29 Septembre 2004 Ph. Genoud Université Joseph Fourier 30 5

Performances Exécution d'un programme Java le code Java est compact, le chargement des classes nécessaires est sélectif et dynamique,... mais Java est interprété Palier aux lenteurs de l'interprétation utilisation d un JIT (compilateur «Just-in-Time») compilation à la volée du byte-code réutilisation du code déjà compilé intégration du JIT HotSpot dans JVM depuis version 1.3 Performance of Java versus C++ J.P.Lewis and Ulrich Neumann (http://www.idiom.com/%7ezilla/computer/javacbenchmark.html) Les API de Java Les packages (paquetages) Package : regroupement de classes ayant un lien logique entreelles pour les utiliser dans d'autres classes pour les «spécialiser» En plus d un langage de programmation, l environnement Java définit une API (Application Programmer s Interface) extrêmement riche au travers de nombreux packages standards. Programmer en Java nécessite une bonne connaissance de ces packages Septembre 2004 Ph. Genoud Université Joseph Fourier 31 Septembre 2004 Ph. Genoud Université Joseph Fourier 32 Les API de Java Packages de 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 : d'un fichier, d'un buffer, d'un "pipe» java.net : réseau URL, sockets java.rmi : objets distribués (Remote Method Invocation) Septembre 2004 Ph. Genoud Université Joseph Fourier 33 Les API de Java Packages de classes standards (suite) 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 java.beans : composants logiciels Pièces logicielles autonomes pouvant être contrôlées dynamiquement et assemblées pour former des applications modèle de composants de SUN environnement d'exécution des JavaBeans est intégré dans la plateforme Java javax.swings : interface graphique composants d interface de plus haut niveau que ceux de awt look and feel indépendant de l OS exploitation du modèle MVC (Model View Controler).. Septembre 2004 Ph. Genoud Université Joseph Fourier 34 Le JDK (SDK) JDK Java Developer s Kit : environnement standard (Windows ou Solaris) diffusé gratuitement par Sun (http://java.sun.com) des outils de développement compilateur, debugger, «interpréteur» de Byte-Code les "librairies" de classes standards documentation différentes évolutions du JDK correspondant à différentes évolutions de la plate-forme Java JDK1.02 Java 1.1 : JDK 1.1.8 Java 2 : décembre 1998 en fait java 1.2 (SDK 1.2.2) La version actuelle Java 1.4.2 (2003) La version 1.5 (Tiger) pour bientôt (SDK1.5 RC, septembre 2004) Septembre 2004 Ph. Genoud Université Joseph Fourier 35 Le JDK (SDK) Les évolutions de java et du JDK Amélioration des performances Assertions, Nouveau package pour i/o, Nouvelles classes pour collections 3500 Nombreux nouveaux packages (XML, log des application, 3000 préférences utilisateur ) 2500 2000 1500 1000 500 0 212 8 504 Modification du langage :classes internes Modification du modèle événementiel pour awt Java Beans Amélioration des performances de la VM 23 1520 59 Septembre 2004 Ph. Genoud Université Joseph Fourier 36 2757 135 3278 java 1.0 java 1.1 java 1.2 java 1.4 java 1.5 165 Swings, Collections, JNDA. Du fait de l ajout de très nombreuses fonctionnalités la plateforme a été renommée Java 2 Evolutions du langage : Généricité, Types Enumérés, Autoboxing, Nouvelles API : Concurrence, Management (gestion et supervision de la JVM) classes packages 6

J2SE 1.4 (SDK 1.4) 3 éditions de Java Standard Edition J2SE Le dernier nom du jdk. Fourni les compilateurs, outils, runtimes, et APIs pour écrire, déployer, et exécuter des applets et applications dans la langage de programmation Java Entreprise Edition J2SE J2EE Mobile Edition J2ME Destinée au développement d applications «d entreprise» («business applications») robustes et interopérables. Simplifier le développement et le déploiement d applications distribuées et articulées autours du web. Environnement d exécution optimisé pour les dispositifs «légers» : Carte à puce (smart cards) Téléphones mobiles Assistants personnels (PDA) Septembre 2004 Ph. Genoud Université Joseph Fourier 37 Septembre 2004 Ph. Genoud Université Joseph Fourier 38 J2EE Java 2 Entreprise Edition Les applications d entreprise on besoin de délivrer des services correspondant à l évolution actuelle du monde des affaires (globalisation) protégeant la vie privée des utilisateurs et l intégrité des données de l entreprise assurant un traitement rapide et sûr des transactions commerciales. Ces services sont généralement conçus comme des applications distribuées constituées de plusieurs «parties» (tiers) La plateforme Java 2, Enterprise Edition (J2EE) a pour objectifs de réduire le coût et la complexité du développement de ces applications multi-tiers. Septembre 2004 Ph. Genoud Université Joseph Fourier 39 J2EE Java 2 Entreprise Edition (suite) La technologie J2EE Définit une plateforme standard pour le développement d applications distribuées transactionnelles. Fournit une approche à base de Composants logiciels pour la conception, le développement et le déploiement des applications d entreprise. Assure la disponibilité, la «scalabilité» et la «maintenabilité» des applications conçues sur la plateforme J2EE. La plateforme J2EE Offre un modèle d application distribuée multi-tiers. Permet la réutilisation des composants logiciels Fournit un support pour un échange des données basé sur XML Permet contrôle flexible des transactions. Septembre 2004 Ph. Genoud Université Joseph Fourier 40 J2EE : principales technologies et API Servlets Java (javax.jsdk : java server development kit) Servlets : extension d un serveur Web à l aide de classes Java, génération dynamique de contenu Web JavaServer Pages (JSP) Technology Combinaison de documents statiques (, XML) et de scripts java pour génération dynamique de contenu. Enterprise JavaBeans Technology Modèles de composants pour objets métiers. Par exemple pas besoin d écrire de code JDBC pour accéder aux base de données, géré automatiquement par le containeur d EJB. Java Transaction API (JTA) Gestion des transactions JavaMail Envoi et réception d E-mail Java API for XML (JAXP) Genération, lecture, manipulation de documents XML Java Authentication and Authorization Service (JAAS) Gestion sécurisée de l authentification et des autorisations pour des groupes d utilisateurs J2EE (situation actuelle) Une spécification J2EE 1.4 (décembre 2003) Une implémentation de référence (fournie gratuitement par sun) Des implémentations commerciales BEA WebLogics, IBM WebSphere, Sun ONE Application Server Oracle Ou open-source JBoss WebOjbects Geronimo Septembre 2004 Ph. Genoud Université Joseph Fourier 41 Septembre 2004 Ph. Genoud Université Joseph Fourier 42 7

Environnements de développement intégrés Nombreux IDE (Integrated Development Environment) commerciaux Sun ONE Studio (Forte for Java) Sunsoft WebSphere Studio Application Developper (VisualAge) IBM Des environnements open-source ou freeware NetBeans www.netbeans.org Eclipse www.eclipse.org JBuilder Borland BlueJ www.bluej.org JDeveloper Oracle IntelliJ JetBrains... Visual J++ Microsoft C#.net Emacs + JDE http://sunsite.auc.dk/jde Situation de Java début 2004 Une maturité certaine Java dans de très nombreux domaines d application des serveurs d applications (J2EE) aux cartes à puces (J2ME) Pénétration dans les entreprises (70% des Top 1000 entreprises aux USA ont des projets de développement en JAVA). Evolutions de JAVA contrôlées par organisation indépendante Java Community Process (www.jcp.org) (mais JAVA reste une marque propriétaire de SUN) Évolutions du langage (généricité dans version 1.5(Tiger) Nouvelles API Intégration des web services dans J2EE 1.4 (release dec 2004) Amélioration des performances JIT, Hotspot La bataille avec.net est engagée Septembre 2004 Ph. Genoud Université Joseph Fourier 43 Septembre 2004 Ph. Genoud Université Joseph Fourier 44 Références Références (suite) «Java - 1 Premières applications professionnelles en Java» Emmanuel Puybaret, Eyrolles, mai 2003 «Introduction à Java», 2e édition Pat Niemeyer et Jonathan Knudsen, O Reilly, déc. 2002 «Au coeur de Java 2 - Volume 1 : Notions fondamentales» Cay S. Horstmann, Gary Cornell, CampusPress, nov. 2003 «Thinking in Java», Bruce Eckel - Prentice-Hall ( www.bruceeckel.com, www.penserenjava.free) «JAVA in a nutshell, 4th Edition», David Flanagan - O'Reilly 2002 Septembre 2004 Ph. Genoud Université Joseph Fourier 45 URLs http://java.sun.com - Site officiel Java de SUN JDK, Tutorials, Documentations, spécifications, http://www.javaworld.com Magazine électronique http://www.jguru.com, http://www.jdance.com Sites dédiés à la technologie java applets, applications, notes techniques, forums de discussions http://cui.unige.ch/java/ Le Coin Java Centre Universitaire d'informatique (CUI) de l'université de Genève www.developpez.com des FAQ, des ressources. http://penserenjava.free.fr une traduction du livre de BruceEckel «Thinking in Java» Septembre 2004 Ph. Genoud Université Joseph Fourier 46 8