Java Printemps 90 Naughton Gosling et Sheridan Le

  • Slides: 29
Download presentation
Java ? • Printemps 90 : Naughton, Gosling et Sheridan : – "Le consommateur

Java ? • Printemps 90 : Naughton, Gosling et Sheridan : – "Le consommateur est le centre du projet, il faut construire un environnement de petite taille avec une petite équipe et intégrer cet environnement dans une nouvelle génération de machines : des ordinateurs simples pour des gens normaux. " • Printemps 91 : Microprocesseur grand public. – La "Green Team" prototype une machine de pilotage de l'électroménager • Août 91 : Gosling développe Oak • Août 92 : -------duke----->

Java ? • Eté 1993 : Sté. "First Person" est en train de couler

Java ? • Eté 1993 : Sté. "First Person" est en train de couler – Eric Schmidt ( Sun) demande une adaptation au Net • Gosling : travaille sur le code • Naughton : cherche une application stratégique • Janvier 1995 – Oak ==> Java – Hot. Java • Août 1995 – Première licence sur Netscape

Java : Principes • • • Simple : C++ sans les couteaux ni les

Java : Principes • • • Simple : C++ sans les couteaux ni les révolvers Orienté Objet Orienté réseau : Classes de gestion des protocoles Robuste : Typage fort compilation et exécution Sûr et sécurisé Indépendant du matériel : byte-code Portable : spécification précise (int=int) Haute performances Multithread Dynamique

Plateforme Java : architecture Java Client/Serveur : Nicolas, Avare, Najman - Eyrolles

Plateforme Java : architecture Java Client/Serveur : Nicolas, Avare, Najman - Eyrolles

Machine Virtuelle : Emulateur • Byte-Code/P-Code/J-Code – opcode : 1 octet pour l'instruction –

Machine Virtuelle : Emulateur • Byte-Code/P-Code/J-Code – opcode : 1 octet pour l'instruction – 0, n opérandes • Micro. Processeur logiciel – – – Jeu d'instructions Registres (pc, optop, frame, vars) Pile, Heap Ramasse-miettes Espace de stockage des méthodes Tas de constantes • ==> Compilé ou Interprété

Un langage de programmation

Un langage de programmation

Bases du langage • Types – – – – byte : 1 octet short

Bases du langage • Types – – – – byte : 1 octet short : 2 octets int : 4 octets long : 8 octets float : 4 octets double : 8 octets boolean : true false char : 2 octets (Unicode) • Instructions – if – while, do while, for – selection (switch) • Opérateurs – Arithmétique : =+-*/% – Relationnels : <><= >= == != – Logiques : ! && || – Incréments : ++ -– Bit Wise : & | ^ ~ >> << >>> – Affectation : = += -= *= /= %=

Abstraction • Héritage – extends – héritage simple • super : Accède à la

Abstraction • Héritage – extends – héritage simple • super : Accède à la méthode parente • this : Accède à l'objet lui-même • Classes abstraites

Interface – Toutes les méthodes sont abstraites et publiques – Tous les attributs sont

Interface – Toutes les méthodes sont abstraites et publiques – Tous les attributs sont final public static • Spécification formelle de classe – Indique les services rendus par la classe qui implante l'interface • Une classe peut implanter plusieurs interfaces • • public interface Translatable {. . . abstract public void translater(); . . . } • • public class Cercle extends Figure. Geometrique implements Modifiable, Translatable { public void translater(){. . . } public void modifier(){. . . } }

Encapsulation • Portée des données – private, (vide), protected, public • Paquetage – Ensemble

Encapsulation • Portée des données – private, (vide), protected, public • Paquetage – Ensemble de classes – Permet de : • regrouper les classes d'un point de vue conceptuel • Définir une protection sur les attributs partagés – Répertoire physique

Une librairie standard

Une librairie standard

API du JDK (Paquetages) java. lang : classes de bases (+reflect) java. io :

API du JDK (Paquetages) java. lang : classes de bases (+reflect) java. io : entrées/sorties java. util : utilitaires (structures, dates, events) (+zip) java. net : réseau java. applet : gestion des applets java. awt : interface graphique (image, +datatransfert, +event) java. beans : définition de composants réutilisables java. math : entier de taille variable java. rmi : invocation distante (+dgc, +registry, +server) java. security : (+acl, +interfaces) java. sql : jdbc. . . java. text : traduction, chaine=f(langue)

Des concepts de programmation

Des concepts de programmation

Mécanisme d'exception class Pile. Sale {. . . assiette depiler() throws Exception { if

Mécanisme d'exception class Pile. Sale {. . . assiette depiler() throws Exception { if (pile. Vide()) throw new Exception("trop tard ! f(depiler)"); return (elementsuivant()); } class Machine. ALaver{ void laver() throws Exception {. . . assiettessales. depiler(); } class Bonnes_Resolutions { void bonneresolution 1 () { try {mamachinealaver(); } catch {Exception e) { e. print. Stack. Trace(); }

Threads • Execution de tâches en // • Mémoire, Code et Ressources partagés •

Threads • Execution de tâches en // • Mémoire, Code et Ressources partagés • Economie de ressources • Un thread ~= méthode qui rend immédiatement la main • Exemple événements (IHM, Réseau) • + priorités • + synchronisation – (moniteur, synchronized)

Gestion de l'interface utilisateur

Gestion de l'interface utilisateur

Paquetage Awt • Abstract Window Toolkit • Composants – simple et conteneur • A

Paquetage Awt • Abstract Window Toolkit • Composants – simple et conteneur • A chaque conteneur est associé une mise en page assurée par l'interface Layout. Manager – – – flowlayout borderlayout cardlayout gridbaglayout

Java Awt : Container • Conteneurs de composants, héritent de la classe abstraite Container

Java Awt : Container • Conteneurs de composants, héritent de la classe abstraite Container – Panel, // Container dans un autre container : ex. Applet – Scrol. Pane, //Ajoute les barres de défilement – Window //Fenêtre sans bordure ni menu, border. Layout par default • Frame // windows + Titre • Dialog //Saisie de données (set. Modal, is. Modal) – File. Dialog //Fonction du SE • instanciate, set. Layout, add, remove, get. Components class Hello. Web { public static void main( String[] args) { Frame une. Frame=new Frame("Le Titre"); une. Frame. add("Center", new Label("Bonjour", Label. CENTER)); une. Frame. pack(); une. Frame. show(); } }

Layout Managers • Flow. Layout : standard, gauche à droite, mais centré • set.

Layout Managers • Flow. Layout : standard, gauche à droite, mais centré • set. Layout(new Grid. Layout(3, 2)); //ligne, colonne (2, 0) • Border. Layout : North, South, East, West, Center – p. add(new Button("Ouest")); • Card. Layout : Pile de cartes : – first( ), last( ), next( ) et previous() • Grid. Bag. Layout : – Position relative entre les composants en utilisant des contraintes – Composants sont organisés sur une grille logique – Complexe

La gestion des événements Evénements = objets dérivés de Event. Object Source dérive d'un

La gestion des événements Evénements = objets dérivés de Event. Object Source dérive d'un composant graphique Le délégué implante des interfaces spécifiques dérivant de Event. Listener public <Type. Evt>Listener add<Type. Evt>Listener(<Type. Evt>Listener le. Delegue)

Adaptation au Web

Adaptation au Web

Deux formes de Java • Exemple d'application • Exemple d'applet public class Mon. Application

Deux formes de Java • Exemple d'application • Exemple d'applet public class Mon. Application { public static void main (String args[]) { System. out. println("Salut !"); } } import java. awt. *; import java. applet. Applet; public class Mon. Applet extends Applet { public void paint (Graphics g) { g. draw. String("Mon Applet", 5, 15); } } • Application=classe • main() • Nom classe = nom de fichier • • applet=classe hérite d'Applet executé par une page html nom classe = nom fichier

Cycle de vie • Une applet hérite de la classe Applet elle est pilotée

Cycle de vie • Une applet hérite de la classe Applet elle est pilotée par le browser Web constructeur appelé en premier init() start() Une seule fois à la création de l'applet Appelée après init() et chaque fois qu'elle a été stoppée Appelée chaque fois que l'applet doit être interrompue Appelée lorsque le client quitte la page HTML Appelée chaque fois que l'Applet doit se redessiner stop() destroy() paint()

Composants logiciels : Beans

Composants logiciels : Beans

Java Beans • Composant logiciel – Commercialisable – Communiquant – Indépendant (Environnement d'intégration) –

Java Beans • Composant logiciel – Commercialisable – Communiquant – Indépendant (Environnement d'intégration) – Intégrable – != application – interface parfaitement définie • méthodes, événements, propriétés

Modèle d'écriture du code • Modèles d'écriture du code – propriétés (normales, indexées, liées

Modèle d'écriture du code • Modèles d'écriture du code – propriétés (normales, indexées, liées et contraintes) • • • public integer get. Age( ); public void set. Age(integer a); public boolean is. Homme(); void set. Nom(int index, String nom); String get. Nom(int index); – void set. Nom(String values[]); – String[ ] get. Nom(); – événements • public void add<Type. Event. Listener>(<Type. Event. Listener> a) • public void remove<Type. Event. Listener>(<Type. Event. Listener> a) – Méthodes • publiques – Property. Change. Listener / Property. Change. Support

Java. Beans : Marché du composant • Développement de Bean • Infrastructure d'intégration •

Java. Beans : Marché du composant • Développement de Bean • Infrastructure d'intégration • Infrastructure de fonctionnement • Applications spécialisées

Composants distribués. . .

Composants distribués. . .

Java : Conclusion • Augmente la productivité – moins coûteux pour les décideurs –

Java : Conclusion • Augmente la productivité – moins coûteux pour les décideurs – plus intéressant pour les développeurs (comparer) • Langage d'avenir pour : – les applications distribuées (portable, sécurisé) – le développement OO • simple, puissant, outillé, bibliothèques – les applications embarquées • Introduit tous les mécanismes des langages de programmation modernes • Langage universel