La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Java : Aspects Avancés La programmation Réseau. Communication par sockets Les classes de java.net.* permettent très facilement de se connecter à une machine.

Présentations similaires


Présentation au sujet: "Java : Aspects Avancés La programmation Réseau. Communication par sockets Les classes de java.net.* permettent très facilement de se connecter à une machine."— Transcription de la présentation:

1 Java : Aspects Avancés La programmation Réseau

2 Communication par sockets Les classes de java.net.* permettent très facilement de se connecter à une machine afin dy établir des flux dentrées/sorties. En java, la socket est équivalente à un gestionnaire dentrée/sortie entre deux machines.

3 Protocoles de communication Il existe deux protocoles utilisant les sockets en Java : TCP : Stream Socket Communication en mode connectéS Les applications sont averties lors de la déconnexion UDP : Datagram Socket Communication en mode non connectéS Plus rapide mais moins fiable que TCP

4 Protocole TCP Le serveur : Crée une socket Attend une connection accepte la demande échange de données Le client : demande une connection création de socket échange de données

5 ServerSocket Définit une socket sur le serveur. Pour créer une ServerSocket, il faut lui donner un numéro de port. Une fois crée, la socket Serveur attend une connection par la méthode accept(). Ex : ServerSocket s = new ServerSocket (8888) Socket socket = s.accept();// attente d une connection

6 La Socket du client Se connecter sur une socket d un serveur, implique de connaître son adresse. InetAddress permet de récupérer une adresse à partir d un nom. La liaison d une socket à la socket serveur peut alors être demandée Ex : InetAddress addr = InetAddress.getByName("crabe"); Socket socket = new Socket(addr, Serveur_1.PORT);

7 Communication inter-socket Les communication entre socket s effectue classiquement, par les flux d entrées, issus de la méthode getInputStream par les flux de sorties, issus de la méthode getOutputStream.

8 Communication inter-socket Exemple ServerSocket s = new ServerSocket(8888); System.out.println("Socket lancee : " + s); try { Socket socket = s.accept();// Attendre une connection try { System.out.println( "Connection acceptee: "+ socket); InputStream socket_in = new InputStream( socket.getInputStream()); DataInputStreaam in = new DataInputStreaam(socket_in); String str = in.readLine(); }

9 Protocole UDP Emission de paquets de données, rapide mais peu fiable Définir un paquet à envoyer ou à recevoir par la classe DatagramPacket Définir une socket par la classe DatagramSocket

10 Emission de paquets import java.net.*; public class UDPClient { public static void main(String arg[]) { try { String chaine = "un message"; byte[] data = chaine.getBytes(); InetAddress addr = InetAddress.getByName(null); DatagramPacket packet = new DatagramPacket(data, data.length, addr, 1234); DatagramSocket ds = new DatagramSocket(); ds.send(packet); ds.close(); } catch(Exception e){} }

11 Reception de paquets import java.net.*; public class UDPServeur { public static void main(String arg[]) { try { // Serveur DatagramSocket ds = new DatagramSocket(1234); while(true) { DatagramPacket packet = new DatagramPacket(new byte[1024], 1024); ds.receive(packet); System.out.println("Message: " + packet.getData()); } catch(Exception e){} }

12 Une classe réseau : URL URL permet de créer des liens vers des pages internets : Exemple : URL url = new URL("http://www.univ-valenciennes.fr/index.html"); DataInputStream dis = new DataInputStream(url.openStream()); String line; while ((line = dis.readLine()) != null) System.out.println(line);

13 Exercice Un exemple classique de programmation réseau : le client-serveur. Un serveur est lancé sur une machine et attend la connexion dun client. Puis, il récupère les lignes envoyées par le client, les affiche et les lui renvoie.

14 Java : Aspects Avancés Les Threads

15 Quest-ce quun thread? Un thread est un processus qui hérite de son processus père. Java permet la mise ne commun de code, de données (« light weight process » ou « processus léger ») Le processus partage ses ressources système (entrées/sorties,...). La programmation est enfin sans contrainte !

16 Utilité des processus Afin de « rendre la main » au programme principal. Afin d interagir efficacement. Pour la gestion des graphiques, des applets.

17 Définition dun Thread Pour créer une tâche, il suffit de faire hériter sa classe de la classe Thread. La principale méthode de Thread est run() qui doit être surchargée. Cest la méthode qui sera exécutée simultanément par les autres tâches du programme. La méthode yield() oblige la tâche à se reposer, pour laisser aux tâches la possibilité de sexécuter La classe Thread implémente linterface Runnable. Implémenter Runnable oblige à définir la méthode run().

18 Exemple de thread (1/2) class une_tache extends Thread { une_tache(String nom) { super(nom); } // appel au constructeur de Thread public void run() { while (true) { System.out.println("Mon nom est : " + getName()); Thread.yield();// petite pause }

19 Exemple de thread (2/2) class Exemple_tache_1 { public static void main(String args[]) { une_tache tache1 = new une_tache("tache 1"); une_tache tache2 = new une_tache("tache 2"); tache1.start();tache2.start(); while (true) { System.out.println("Je suis la tâche principale"); Thread.yield(); }

20 Run et Start La méthode run() est généralement placée dans une boucle infinie La méthode start(), est utilisée pour lancer le Thread et appelle la méthode run()

21 Accès simultanés à une ressource La programmation multitâche implique le partage de ressources (mémoire, objets). Dans certains cas, ceci peut être problématique. Pour cela, Java dispose du mot clé synchronized qui assure lexclusion mutuelle dune section critique en informant le moniteur (gestionnaire de mémoire). exemple: public synchronised void compte() {…} empèche toute instance de la classe de lancer compte tant quelle ne sest pas terminée. Lorsqu'un thread t1 exécute cette méthode à partir d un objet, un autre thread t2 ne peut pas l'exécuter à partir du même objet. Mais t2 peut l exécuter pour une autre instance de la même classe.

22 Synchronisation et efficacité Chaque objet possède un verrou lock ou moniteur. (Cela fait partie de la classe Object). Exemple de verrou :... synchronized (compteur) {compteur.add() ; compteur.mult() ;...}... Lorsqu'une méthode synchronisée d'un objet est appelée, le verrou est mis, aucune autre méthode synchronisée de cet objet peut être exécutée. Acquérir le verrou d'un objet est forcément coûteux. Il faut donc savoir gérer et diminuer au maximum les sections critiques.

23 Le processus dans tous ses états Nouveau : il est créé mais start() n est pas encore appelé Exécutable : il a été initialisé (il est exécuté si l ordonnanceur le décide) Mort : fin normale d un Thead (sortie de la méthode run() Bloqué : l ordonnanceur ignore le Tread

24 Raison d un blocage Le thread peut être : endormi : sleep(milliseconds) suspendu : par suspend(). Il sera alors relancé par resume() en attente : par wait(). Il pourra alors être réactivé par notify() ou notifyAll() IO : en attente d une Entrée/Sortie synch : en attente de la libération d une ressource synchronisée

25 Différence Wait/Suspend Suspend : Tient le verrou de l objet, donc bloque dons les méthode synchronisées et peut être source de DeadLock Wait ne tient pas les verrous et donc ne doit pas être appelé d un bloc synchronisé, sous risque d accès concurrent

26 Maintien en cohérence... Il faut éviter l utilisation de : stop : cette méthode libère les verrous même si l objet est dans un état instable Il faut le remplacer par un test dans la boucle du run() lever l exception InterrupedException en utilisant la méthode interrupt() suspend (et donc resume), car ils sont sources de nombreux deadlock

27 Exercice Un exemple classique de programmation de processus : le producteur-consommateur. Un producteur produit des objets dans une pile, 2 consommateurs en consomment. Ecrire les classes Tab_objets, Producteur et Consommateur, ainsi que la classe principale.

28 Java : Aspects Avancés Les applets

29 Une Applet... Second type de programmation Java, le plus connu car le plus visible Ne peut être exécutée que depuis un Navigateur Le Navigateur doit contenir en interne une machine virtuelle sa propre méthode main

30 Les méthodes d une applet Une applet est un objet graphique (descendant de panel), aussi contient elle des méthodes graphiques. Les principales méthodes d une applet sont : init(), que le navigateur appelle après chaque chargement de lapplet., start(), lancée après linitialisation, stop(), arrête lapplet lorsquelle nest plus visible, destroy(), appelé à larrêt du navigateur, ou au rechargement de lapplet, paint(Graphics g) est appelé chaque fois que lapplet est réaffichée.

31 Exemple d applet import java.awt.*; import java.applet.*; public class Applet1 extends Applet { Font font; public void init() { font = new Font("TimesRoman", Font.PLAIN,20); } public void paint(Graphics g) { g.setFont(font); g.setColor(Color.red); g.drawString("Salut tout le monde!", 0, font.getSize()); g.draw3DRect(0, 0, 180, 30, true); }

32 Insertion dans une page Web L insertion est possible par le tag APPLET : Exemple d'applet Un exemple dapplet desole... ce navigateur ne supporte pas les applets

33 Passage de paramètres dans une page Web La méthode getParameter("msg") retourne la valeur du paramètre indiqué dans la page web. Pour passer les paramètres, il faut appeler lapplet dans la page web comme ceci :

34 Archiver les classes Lorsqu une applet utilise une autre classe située dans le même répertoire, elle charge cette classe, ce qui cause un ralentissement. Pour éviter les multiples chargement il faut compresser les classes avec jar Lappel à partir dune page web se fera sous la forme :

35 Applet permanente Toutes les applets utilisent la même machine virtuelle. Si lon souhaite créer une applet à activité permanente (défilement de texte, dimages,...), il faut la créer en tant que processus afin de ne pas bloquer les autres applets. Pour cela, il faut que lapplet implémente linterface Runnable (similaire à Thread, mais qui permet de réécrire la fonction stop())

36 Exercice Ecrire une applet qui affiche un texte déroulant dans la barre d état du navigateur. On utilisera la fonction showStatus de l applet. La fréquence de défilement est passée en paramètre

37 Java : Aspects Avancés AWT : Abstract Window Toolkit

38 Généralités sur AWT AWT comporte : des éléments graphiques des conteneurs Un mécanisme de gestion d'événements,... AWT a beaucoup évolué entre et : nouveau modèle événementiel gestion de l'impression gestion de l'échange de données AWT a encore évolué avec Java Foundation Class et java.2D Sylvain LECOMTE & Vincent POIRRIEZ

39 Les objets graphiques de AWT Les éléments graphiques Button Canvas (zone de dessin) Checkbox Choice Label List MenuBar MenuItem TextArea TextField Sylvain LECOMTE & Vincent POIRRIEZ

40 Les conteneurs de AWT Les conteneurs sont les couches sur lesquels seront dessinés les objets : Frame Dialog Window Panel (conteneur de base) Les Gestionnaires de mise en page permettent de placer automatiquement les objets. Sylvain LECOMTE & Vincent POIRRIEZ

41 FlowLayout java.awt.FlowLayout : de gauche à droite, de haut en bas onetwothree Sylvain LECOMTE & Vincent POIRRIEZ

42 BorderLayout java.awt.BorderLayout découpe la zone en Nord, Sud, Est, Ouest et Centre North South West East Center Sylvain LECOMTE & Vincent POIRRIEZ

43 GridLayout java.awt.GridLayout découpe la zone en une grille dont on peut choisir les dimensions one two four five three six Sylvain LECOMTE & Vincent POIRRIEZ

44 Avantage de AWT Il permet de créer une interface graphique d exécutant sous toutes les interfaces (Windows, Xwindows, …) il simplifie la tâche du concepteur de l IHM (presque tous les objets sont présents)... Sylvain LECOMTE & Vincent POIRRIEZ

45 Evenements Chaque objet graphique (ou presque) possède sa propre gestion dévénements, Java propose des interfaces d écoute (Window, Mouse,...)Listener Pour les plux complexes, il existe des classes dont les méthodes ne font rien ! (Window, Mouse,...)Adapter Avantage, si une classe hérite d une de ces classes, elle n a qu à surcharger la méthode désirée Sylvain LECOMTE & Vincent POIRRIEZ

46 Exemple d interface AWT Sylvain LECOMTE & Vincent POIRRIEZ

47 Exemple d interface AWT (2) tfPanel chPanel lstPanel cbPanel rbPanel btPanel MenuBar Label Checkbox Button TextField Choice List Sylvain LECOMTE & Vincent POIRRIEZ

48 Exemple de label // Text Field Panel Panel tfPanel = new Panel(new FlowLayout(FlowLayout.LEFT)); label = new Label("TextField"); tfdPanel.add(label); textField = new TextField(15); tfPanel.add(textField); Sylvain LECOMTE & Vincent POIRRIEZ

49 Exemple de choix // Choice Panel Panel chPanel = new Panel(new FlowLayout(FlowLayout.LEFT)); label = new Label("Choice"); chPanel.add(label); choice = new Choice(); choice.addItem("Solaris"); choice.addItem("Linux"); choice.addItem("Aix"); chPanel.add(choice); Sylvain LECOMTE & Vincent POIRRIEZ

51 Exemple de cases // Checkbox Panel Panel cbPanel = new Panel(new FlowLayout(FlowLayout.LEFT)); cbSolaris = new Checkbox("Solaris"); cbPanel.add(cbSolaris); cbLinux = new Checkbox("Linux"); cbPanel.add(cbLinux); cbAix = new Checkbox("Aix"); cbPanel.add(cbAix); Sylvain LECOMTE & Vincent POIRRIEZ

52 Exemple de bouton radio // RadioButton Panel Panel rbPanel = new Panel(new FlowLayout(FlowLayout.LEFT)); rbGroup = new CheckboxGroup(); rbSolaris = new Checkbox("Solaris"); rbSolaris.setCheckboxGroup(rbGroup); rbPanel.add(rbSolaris); rbLinux = new Checkbox("Linux"); rbLinux.setCheckboxGroup(rbGroup); rbPanel.add(rbLinux); rbAix = new Checkbox("Aix"); rbAix.setCheckboxGroup(rbGroup); rbPanel.add(rbAix); rbGroup.setSelectedCheckbox(rbSolaris); Sylvain LECOMTE & Vincent POIRRIEZ

53 Evenement sur choix, boutons radios, cases et listes ItemListener est linterface permettant de gérer les événements sur les objets de type Choice, List et CheckBox Elle contient la méthode itemStateChanged(ItemEvent e) déclenchée lors de sélection/déselection dun item. Sylvain LECOMTE & Vincent POIRRIEZ

54 Exemple de bouton // Button Panel Panel btPanel = new Panel(new FlowLayout(FlowLayout.LEFT)); okButton = new Button("Ok"); okButton.addActionListener(new OkButtonListener()); btPanel.add(okButton); cancelButton = new Button("Cancel"); cancelButton.addActionListener(new CancelButtonListener()); btPanel.add(cancelButton); Sylvain LECOMTE & Vincent POIRRIEZ

55 Exemple de menu // Menu Bar Menu procMenu = new Menu("Procedural"); procMenu.add(new MenuItem("Pascal"));... Menu ooMenu = new Menu("Object Oriented"); ooMenu.add(new MenuItem("SmallTalk"));... Menu funcMenu = new Menu("Functional"); funcMenu.add(new MenuItem("Lisp"));... Menu languageMenu = new Menu("Languages"); languageMenu.add(procMenu);... MenuBar mb = new MenuBar(); mb.add(languageMenu); Sylvain LECOMTE & Vincent POIRRIEZ

56 Exemple de construction public class FrameExample extends Frame { public FrameExample(String title) { super(title);... setMenuBar(mb); setLayout(new GridLayout(0, 1, 2, 2)); add(textFieldPanel); add(choicePanel); add(listPanel); add(checkboxPanel); add(radioButtonPanel); add(buttonPanel); pack(); show();} Sylvain LECOMTE & Vincent POIRRIEZ

57 Exemple de gestion dévénement sur bouton Gestion des événements : clic sur le bouton Ok okButton.addActionListener(new OkButtonListener()); public class OkButtonListener implements ActionListener { public void actionPerformed(ActionEvent evt) { System.out.println("textField = " + textField.getText()); System.out.println("choice = " + choice.getSelectedItem()); System.out.println("list = " + list.getSelectedItem()); System.out.println("cbSolaris=" + (cbSolaris.getState() ?"Yes" : "No")); System.out.println("cbLinux=" + (cbLinux.getState() ?"Yes" : "No")); System.out.println("cbWindow=" + (cbAix.getState() ?"Yes" : "No")); System.out.println("rbSolaris=" + (rbSolaris.getState() ?"Yes" : "No")); System.out.println("rbLinux=" + (rbLinux.getState() ?"Yes" : "No")); System.out.println("rbWindow=" + (rbAix.getState() ?"Yes" : "No")); } Sylvain LECOMTE & Vincent POIRRIEZ

58 Exemple de gestion dévénement sur menu Gestion des événements : sélection d'items du menu MenuItem mi = new MenuItem("Pascal"); mi.addActionListener(new LanguageMenuListener()); public class LanguageMenuListener implements ActionListener { public void actionPerformed(ActionEvent evt) { System.out.println("Menu: " + evt.getActionCommand()}; } Sylvain LECOMTE & Vincent POIRRIEZ

59 Exemple de gestion dévénement sur fenêtre Gestion des événements : fermeture de la fenêtre addWindowListener(new MyWindowListener()); public class MyWindowListener extends WindowAdapter { public void windowClosing(WindowEvent evt) { System.out.println("Window closing"); System.exit(0); } Sylvain LECOMTE & Vincent POIRRIEZ

60 Evenement sur champs de texte et zone de texte Linterface TextListener permet de gérer les événements sur les objets de type TextField et TextAera, Elle contient la méthode textValueChanged(TextEvent e) déclenchée lors de modification du texte Sylvain LECOMTE & Vincent POIRRIEZ

61 Autres gestions d événements (souris) On trouve aussi linterface MouseListener qui définit les méthodes void mouseClicked(MouseEvent e) clic sur lobjet void mouseEntered(MouseEvent e) passage sur lobjet void mouseExited(MouseEvent e) sortie de lobjet void mousePressed(MouseEvent e) pression sur lobjet void mouseReleased(MouseEvent e) relâche de lobjet Cette interface est implémentée par la classe MouseAdapter qu il faudra étendre pour gérer les événements souris Sylvain LECOMTE & Vincent POIRRIEZ

62 Autres gestions d événements (fenêtre) Ainsi que linterface WindowListener qui définit les méthodes suivantes : void windowActivated(WindowEvent e) la fenêtre devient active void windowClosed(WindowEvent e) fermeture par un bouton ou autre void windowClosing(WindowEvent e) fermeture par menu système void windowDeactivated(WindowEvent e) la fenêtre nest plus active void windowDeiconified(WindowEvent e) de minimisée à un autre état void windowIconified(WindowEvent e) minimisation void windowOpened(WindowEvent e) première ouverture Cette interface est implémentée par la classe WindowAdapter qu il faudra étendre pour gérer les événements sur la fenêtre. Sylvain LECOMTE & Vincent POIRRIEZ

63 L objet graphics Les fonctions de la classe Graphics permettent de dessiner simplement différentes figures sur un support : clearRect, draw3Drect, drawArc, drawImage, drawLine, drawOval, drawPolygon, drawPolyline, drawRect, drawString, fill3Drect, fillArc, fillOval, fillPolygon, fillRect, getColor, getFont, setColor, setFont. Le support peut être tout objet descendant de Composant Sylvain LECOMTE & Vincent POIRRIEZ

64 Exercice Créer une Frame permettant de dessiner des lignes à l aide de la souris Utiliser un tableau de 10 Points pour tracer des lignes entre chaque Point.

65 Java : Aspects Avancés Le Swing Sylvain LECOMTE & Vincent POIRRIEZ

66 Swing : Qu est ce que c est ? Swing est un ensemble de librairies graphiques plus évoluées et plus complètes que les librairies AWT. Swing est livrée avec le JDK 1.2, pour JDK 1.1, il est possible de télécharger les classes swing. Sylvain LECOMTE & Vincent POIRRIEZ

67 Nouvelles Fonctionnalités Swing propose de nouveaux composants tels que Les Tables, les Arbres, la Barre de progression… Les objets graphiques AWT ont été surchargés (on trouve maintenant les types JButton, Jpanel,...) Avec Swing, il est possible de masquer certains événements Il est possible de "zaper" entre les différentes interfaces : l interface Windows l interface Motif une interface 3D « métale » Sylvain LECOMTE & Vincent POIRRIEZ

68 Un exemple de swing... import javax.swing.*; import java.awt.*;import java.awt.event.*; public class SwingApplication { private static String labelPrefix = "Number of button clicks: "; private int numClicks = 0; public Component createComponents() { final JLabel label = new JLabel(labelPrefix + "0 "); JButton button = new JButton("I'm a Swing button!"); button.setMnemonic(KeyEvent.VK_I); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { numClicks++; label.setText(labelPrefix + numClicks); } } ); label.setLabelFor(button); } Sylvain LECOMTE & Vincent POIRRIEZ

69 Un exemple de swing Suite... public static void main(String[] args) { try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); } catch (Exception e) { } //Create the top-level container and add contents to it. JFrame frame = new JFrame("SwingApplication"); SwingApplication app = new SwingApplication(); Component contents = app.createComponents(); frame.getContentPane().add(contents, BorderLayout.CENTER); //Finish setting up the frame, and show it. frame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0); } }); frame.pack(); frame.setVisible(true); } Sylvain LECOMTE & Vincent POIRRIEZ

70 Swing dans une applet Il est tout à fait possible de créer des applets utilisant des composants swing. Il faut alors être sûr que les navigateurs des utilisateurs pourront interpréter le swing. import javax.swing.*; import java.awt.*; public class HelloSwingApplet extends JApplet { public void init() { JLabel label = new JLabel( "You are successfully running a Swing applet!" ) ; label.setHorizontalAlignment(JLabel.CENTER); //Add border. label.setBorder(BorderFactory.createMatteBorder(1,1,2,2,Color.black)); getContentPane().add(label, BorderLayout.CENTER); } Sylvain LECOMTE & Vincent POIRRIEZ

71 Un autre exemple : un menu Sylvain LECOMTE & Vincent POIRRIEZ

72 Conclusion sur Swing Swing offre surtout beaucoup plus de composants que AWT (trop ?) : Le rendu est meilleur Les options nombreuses Mais l API est encore difficile à connaître ne pas hésiter à utiliser le Tutorial... Sylvain LECOMTE & Vincent POIRRIEZ

73 Java : Aspects Avancés Les JavaBean Sylvain LECOMTE & Vincent POIRRIEZ

74 La notion de composant Un bean Java est un composant réutilisable (sorte d active X) Il facilite donc la création de programmes par connexion de composants Java propose déjà un ensemble de composants très utiles (le bean hotjava par exemple pour afficher une page web,...) Pour développer, utiliser des beans, il existe le bdk, le kit de développement de beans... Sylvain LECOMTE & Vincent POIRRIEZ

75 Outil de développement Réserve de composants Propriété du composant sélectionné Application Sylvain LECOMTE & Vincent POIRRIEZ

76 L introspection Permet à un système de se regarder lui même Exemple : Les objets de la classe Class représente des classes du système Les objets de la classe Method représente des méthodes On peut alors rechercher une classe par son nom Class classButton = Class.forName("Button"); et créer une nouvelle instance de cette classe Objetc myButton = classButton.newInstance(); et récupérer toutes les méthodes de cette classe : Method [] bmethods = classButton.getDeclaredMethods(); Sylvain LECOMTE & Vincent POIRRIEZ

77 Qu est ce qu un Beans ? Un composant qui possède : des propriétés des événements reconnus des méthodes de traitement des événements Importance de l introspection : possibilité d interroger le composant Quelles sont tes méthodes, les variables, les événements traités Sylvain LECOMTE & Vincent POIRRIEZ

78 Types de Beans Component (montre, barre, synoptique,...) Container (panneau,...) Invisible (ne possède pas d interface graphique ) joue le rôle d interface Applet Sylvain LECOMTE & Vincent POIRRIEZ

79 La double vie des Beans Pendant la configuration dans le BDK le Bean peut posséder sa propre interface graphique de configuration Le bean est sérializé à la fermeture du bdk, il est désérialisé (rechargé) à l exécution. Les méthodes du bean sont activés par des événements. Sylvain LECOMTE & Vincent POIRRIEZ

80 Classes dévènements prédéfinies Evénements de bas niveau java.util.EventObject java.awt.AWTEvent java.awt.event.ComponentEvent java.awt.event.FocusEvent java.awt.event.WindowEvent java.awt.event.InputEvent java.awt.event.KeyEvent java.awt.event.MouseEvent Sylvain LECOMTE & Vincent POIRRIEZ

81 Créer un Bean Ecrire le source : C est un rectangle rouge import java.awt.*; import java.io.Serializable; public class SimpleBean extends Canvas implements Serializable { public SimpleBean() { setSize(60,40); setBackground(Color.red); }} 2. Créer un fichier jar contenant la classe SimpleBean Sylvain LECOMTE & Vincent POIRRIEZ

82 Créer un Bean (suite) 3. Charger le.jar dans la ToolBox 4. Créer une instance de la classe dans la BeanBox On peut se rendre compte que le Bean dispose d un certain nombre de propriétés (qui sont en fait héritées de Canvas) : Foreground Background font name Sylvain LECOMTE & Vincent POIRRIEZ

83 Ajouter une propriété Exemple : la propriété de « couleur » 1. Créer et initialiser l atribut : private Color color = Color.green; 2. Ecrire une méthode pour obtenir la couleur : public Color getColor() {return color;} 3. Ecrire une méthode pour changer la couleur public void setColor(Color newColor){ color = newColor; repaint();} 4.Réécrire la méthode paint() héritée de Canvas : public void paint(Graphics g) { g.setColor(color); g.fillRect(20, 5, 20, 30);} 5.Compiler le Bean, le charger dans la Toolbox et créer une instance dans la BeanBox. Sylvain LECOMTE & Vincent POIRRIEZ

84 Résultat Sylvain LECOMTE & Vincent POIRRIEZ

85 Enterprise Java Beans Ce sont les Beans contenant une couche client serveur, très à la mode en ce moment (commerce électroniques, accès à ds bases de données distantes, communication aux travers de site web,...) Sylvain LECOMTE & Vincent POIRRIEZ

86 Java, suite Et non fin, cf. Internet, de nombreuses applications de Java à tous niveaux, possibilité d inclure des librairies C, notions de servlet pour communication de données d un client vers un fournisseur par html, accès sécurisé, xml, Sylvain LECOMTE & Vincent POIRRIEZ


Télécharger ppt "Java : Aspects Avancés La programmation Réseau. Communication par sockets Les classes de java.net.* permettent très facilement de se connecter à une machine."

Présentations similaires


Annonces Google