29
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 ? Printemps 90 : Naughton, Gosling et Sheridan : –"Le consommateur est le centre du projet, il faut construire un environnement de petite taille avec

Embed Size (px)

Citation preview

  • Page 1 ">
  • 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 intgrer cet environnement dans une nouvelle gnration de machines : des ordinateurs simples pour des gens normaux." Printemps 91 : Microprocesseur grand public. La "Green Team" prototype une machine de pilotage de l'lectromnager Aot 91 : Gosling dveloppe Oak Aot 92 : --------------duke---------->
  • Page 2 Java HotJava Aot 1995 Premire licence sur Netscape">
  • 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 stratgique Janvier 1995 Oak ==> Java HotJava Aot 1995 Premire licence sur Netscape
  • Page 3
  • Java : Principes Simple : C++ sans les couteaux ni les rvolvers Orient Objet Orient rseau : Classes de gestion des protocoles Robuste : Typage fort compilation et excution Sr et scuris Indpendant du matriel : byte-code Portable : spcification prcise (int=int) Haute performances Multithread Dynamique
  • Page 4
  • Plateforme Java : architecture Java Client/Serveur : Nicolas, Avare, Najman - Eyrolles
  • Page 5
  • Machine Virtuelle : Emulateur Byte-Code/P-Code/J-Code opcode : 1 octet pour l'instruction 0,n oprandes MicroProcesseur logiciel Jeu d'instructions Registres (pc, optop, frame, vars) Pile, Heap Ramasse-miettes Espace de stockage des mthodes Tas de constantes ==> Compil ou Interprt
  • Page 6
  • Un langage de programmation
  • Page 7
  • 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) Oprateurs Arithmtique : =+-*/% Relationnels : = == != Logiques : ! && || Incrments : ++ -- Bit Wise : & | ^ ~ >> >> Affectation : = += -= *= /= %=
  • Page 8
  • Abstraction Hritage extends hritage simple super : Accde la mthode parente this : Accde l'objet lui-mme Classes abstraites
  • Page 9
  • Interface Toutes les mthodes sont abstraites et publiques Tous les attributs sont final public static Spcification 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 FigureGeometrique implements Modifiable, Translatable { public void translater(){... } public void modifier(){...}}
  • Page 10
  • Encapsulation Porte des donnes private, (vide), protected, public Paquetage Ensemble de classes Permet de : regrouper les classes d'un point de vue conceptuel Dfinir une protection sur les attributs partags Rpertoire physique
  • Page 11
  • Une librairie standard
  • Page 12
  • API du JDK (Paquetages) java.lang : classes de bases (+reflect) java.io : entres/sorties java.util : utilitaires (structures, dates, events) (+zip) java.net : rseau java.applet : gestion des applets java.awt : interface graphique (image, +datatransfert, +event) java.beans : dfinition de composants rutilisables 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)
  • Page 13
  • Des concepts de programmation
  • Page 14
  • Mcanisme d'exception class PileSale {... assiette depiler() throws Exception { if (pileVide()) throw new Exception("trop tard ! f(depiler)"); return (elementsuivant()); } class MachineALaver{ void laver() throws Exception {... assiettessales.depiler(); } class Bonnes_Resolutions { void bonneresolution1 () { try {mamachinealaver.laver();} catch {Exception e) { e.printStackTrace(); }
  • Page 15
  • Threads Execution de tches en // Mmoire, Code et Ressources partags Economie de ressources Un thread ~= mthode qui rend immdiatement la main Exemple vnements (IHM, Rseau) + priorits + synchronisation (moniteur, synchronized)
  • Page 16
  • Gestion de l'interface utilisateur
  • Page 17
  • Paquetage Awt Abstract Window Toolkit Composants simple et conteneur A chaque conteneur est associ une mise en page assure par l'interface LayoutManager flowlayout borderlayout cardlayout gridlayout gridbaglayout
  • Page 18
  • Java Awt : Container Conteneurs de composants, hritent de la classe abstraite Container Panel, // Container dans un autre container : exApplet ScrolPane, //Ajoute les barres de dfilement Window //Fentre sans bordure ni menu, borderLayout par default Frame // windows + Titre Dialog //Saisie de donnes (setModal, isModal) FileDialog //Fonction du SE instanciate, setLayout, add, remove, getComponents class HelloWeb { public static void main( String[] args) { Frame uneFrame=new Frame("Le Titre"); uneFrame.add("Center", new Label("Bonjour", Label.CENTER)); uneFrame.pack(); uneFrame.show(); }
  • Page 19
  • Layout Managers FlowLayout : standard, gauche droite, mais centr setLayout(new GridLayout(3,2)); //ligne, colonne (2,0) BorderLayout : North, South, East, West, Center p.add(new Button("Ouest")); CardLayout : Pile de cartes : first( ), last( ), next( ) et previous() GridBagLayout : Position relative entre les composants en utilisant des contraintes Composants sont organiss sur une grille logique Complexe
  • Page 20
  • La gestion des vnements Evnements = objets drivs de EventObject Source drive d'un composant graphique Le dlgu implante des interfaces spcifiques drivant de EventListener public Listener add Listener( Listener leDelegue)
  • Page 21
  • Adaptation au Web
  • Page 22
  • Deux formes de Java Exemple d'application public class MonApplication { public static void main (String args[]) { System.out.println("Salut !"); } Application=classe main() Nom classe = nom de fichier Exemple d'applet import java.awt.*; import java.applet.Applet; public class MonApplet extends Applet { public void paint (Graphics g) { g.drawString("Mon Applet",5,15); } applet=classe hrite d'Applet execut par une page html nom classe = nom fichier
  • Page 23
  • Cycle de vie Une applet hrite de la classe Applet elle est pilote par le browser Web constructeur appel en premier init()Une seule fois la cration de l'applet start()Appele aprs init() et chaque fois qu'elle a t stoppe stop()Appele chaque fois que l'applet doit tre interrompue destroy()Appele lorsque le client quitte la page HTML paint()Appele chaque fois que l'Applet doit se redessiner
  • Page 24
  • Composants logiciels : Beans
  • Page 25
  • Java Beans Composant logiciel Commercialisable Communiquant Indpendant (Environnement d'intgration) Intgrable != application interface parfaitement dfinie mthodes, vnements, proprits
  • Page 26
  • Modle d'criture du code Modles d'criture du code proprits (normales, indexes, lies et contraintes) public integer getAge( ); public void setAge(integer a); public boolean isHomme(); void setNom(int index, String nom); String getNom(int index); void setNom(String values[]); String[ ] getNom(); vnements public void add ( a) public void remove ( a) Mthodes publiques PropertyChangeListener / PropertyChangeSupport
  • Page 27
  • JavaBeans : March du composant Dveloppement de Bean Infrastructure d'intgration Infrastructure de fonctionnement Applications spcialises
  • Page 28
  • Composants distribus...
  • Page 29
  • Java : Conclusion Augmente la productivit moins coteux pour les dcideurs plus intressant pour les dveloppeurs (comparer) Langage d'avenir pour : les applications distribues (portable, scuris) le dveloppement OO simple, puissant, outill, bibliothques les applications embarques Introduit tous les mcanismes des langages de programmation modernes Langage universel