1 / 31

Rappels sur la Programmation java (2)

Rappels sur la Programmation java (2). NSY208 / 2010-2011. Plan. TDD Assertions , Test et JUNIT Programmation concurrentielle Introspection Fichiers et connexion réseau. TDD. TDD (1). h ttp://www.slideshare.net/Skud/test-driven-development-tutorial. TDD (2).

jena-sykes
Télécharger la présentation

Rappels sur la Programmation java (2)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Rappels sur la Programmation java (2) NSY208 / 2010-2011

  2. Plan • TDD Assertions, Test et JUNIT • Programmation concurrentielle • Introspection • Fichiers et connexion réseau DJBEL- 2010

  3. TDD DJBEL- 2010

  4. TDD (1) http://www.slideshare.net/Skud/test-driven-development-tutorial DJBEL- 2010

  5. TDD (2) http://www.slideshare.net/Skud/test-driven-development-tutorial DJBEL- 2010

  6. TDD (3) http://www.slideshare.net/Skud/test-driven-development-tutorial DJBEL- 2010

  7. TDD (4) • Etape 1 : la conception • Sous forme de diagrammes • Etape 2 : Tester -> rouge • Écrire les tests en conformité avec les spécifications ; les exécuter ; ils vont échouer • Etape 3 : l’implémentation • Etape 4 : Tester -> vert • Tester à nouveau : les tests vont passer DJBEL- 2010

  8. TDD (6) • Ecrire les tests une fois et les sauvegarder • Exécuter les tous les jours • Ils doivent être automatiser • Construire des rapports génériques • Exemple : Continuum DJBEL- 2010

  9. TDD (7) DJBEL- 2010

  10. Programmation concurrentielle DJBEL- 2010

  11. Concurrence (1) • Les processeurs multi-cœurs • Loi de Moore a trouvé ses limites (trop cher) • La puissance est répartie sur plusieurs cœurs • Simplification • Diviser les systèmes en plusieurs entités qui seront plus facile à gréer • Gestion des événements asynchrones • Des interfaces utilisateurs plus rapides DJBEL- 2010

  12. Concurrence (2) • Une exécution non déterministe • Synchronisation imparfaite -> l’exécution d’un programme « multi-threadé » est hasardeuse • Des performances non garanties • Cycle de vie mal maitrisé • Des threads partout • JVM : main, GC • AWT Swing : pour gérer les événement IHM • Timer : exécution différée de tâches • RMI, JSP DJBEL- 2010

  13. Concurrence (3) • 1 Objet partagé et accès concurrent -> danger • Faire en sorte que l’objet soit immuable • Utiliser le mot clé synchronized • Un objet est immutable si • Son état n’est pas modifiable après création : • Tous ses attributs sont déclarés comme final • Il est instancié correctement : constructeur privé • Exemple d’objet immutable : Date, String DJBEL- 2010

  14. Concurrence (5) – Cycle de vie DJBEL- 2010

  15. Concurrence (4) – Exemples de Thread DJBEL- 2010

  16. Concurrence (4) – Objets Immutable • Un objet immuable : • l’état ne sera plus jamais après sa création • Il est « thread safe » • Comment ? : • Tous les attributs doivent être déclarés private • Pas méthodes de changement d’état • La class doit être final • Mettre en balance le surcout de création systématique avec la synchronisation DJBEL- 2010

  17. Concurrence (5) – Les collections • Les collections peuvent, pour certaines, sont déjà prévues pour un contexte concurrent • Hashtable, Vector • java.util.concurrent fournit d’autres classes, mieux adaptées pour la concurrence • A partir de Jdk 5 : deux nouvelles interfaces Queue et BlockingQueue • Queue = List, sans accès aléatoire DJBEL- 2010

  18. Concurrence (6) • Exemples : • Ressource partagée • Synchronisation • Producteur consommateur • Pool de threads DJBEL- 2010

  19. Introspection DJBEL- 2010

  20. Introspection (1) • Un package : java.lang.reflect pour charger et invoquer • Une classe class<?> pour le lien avec la classe chargée par le loader : getClass() • Explorer et invoquer : les constructeurs, les champs et les méthodes d’une classe • NewInstance() pour la création d’1 instance • IsInstance(Object objet) : si l’objet est une sous classe d’une autre DJBEL- 2010

  21. Introspection (2) • Inspecter une classe : • getDeclaredFields() pour les attributs • getConstructors() : liste des constructeurs • getDeclaredMethods() : less méthodes • getInterfaces (): les interfaces implémentées • getGenericInterfaces() : les types génériques • Inspecter une méthode : • getModifiers() : la portée (public, private, • getReturnType() : le type retourné • getParameterTypes() : liste des paramètres DJBEL- 2010

  22. Introspection (3) • Charger une classe : • Class<? extendsIPolygone> classe = Class.forName("pattern.composite.Triangle").asSubclass(IPolygone.class); • Invoquer un constructeur : • Class<?>[] args = new Class[] {}; • Constructor<? extendsIPolygone> constructeur = classe.getConstructor(args); • Object[] argsValue = new Object[] {}; • Triangle polygone = (Triangle) constructeur.newInstance(argsValue); • Invoquer une méthode • Class<?>[] parameterTypes =new Class[] {Stack.class}; • Method methode = classe.getMethod("setCotes",parameterTypes); • Object[] arguments = new Object[] { cotes }; • methode.invoke(polygone,arguments); DJBEL- 2010

  23. Introspection (4) • Exemples : • Exploration • Invocation • Proxy dynamic DJBEL- 2010

  24. Introspection (5) DJBEL- 2010

  25. Fichiers et connexions réseaux DJBEL- 2010

  26. Fichiers et Réseau (1) • Lecture d’un fichier: • FileReader et BufferedReader : • FileReaderreader = new FileReader(« fichier »); • BufferedReader buffer = new BufferedReader(reader); • while((ligne = buffer.readLine()) != null) • Ecriture dans un fichier: • FileWriteret BufferedWriter: • FileWriterwriter = new FileWriter(« fichier »); • BufferedWriter(writerbuffer = new BufferedWriter(writer); • buffer.write("ligne " + (i+1)); buffer.newLine(); • Un fichier mode lecture et écriture • RandomAccessFileaccess = new RandomAccessFile("fichier.dat", "rw"); DJBEL- 2010

  27. Fichiers et Réseau (2) • Sérialisation: • Interface Serializable • FileOutputStreamfos = new FileOutputStream(“fichier"); • ObjectOutputStreamoos = new ObjectOutputStream(fos); • oos.writeObject(polygone); • FileInputStreamfis = new FileInputStream("polygone.dat"); • ObjectInputStreamois = new ObjectInputStream(fis); • polygone = (Polygone<IPolygone>) ois.readObject(); DJBEL- 2010

  28. Fichiers et Réseau (3) • Client/Server TCP : • ServerSocket • Socket DJBEL- 2010

  29. Fichiers et Réseau (4) • RMI : DJBEL- 2010

  30. Fichiers et Réseau (5) DJBEL- 2010

  31. Bibliographie • http://www.javaworld.com/javaworld/jw-09-2007/jw-09-multicoreprocessing.html • http://www.deelin.com/downloads/books/java_concurrency_in_practice.pdf • http://jfod.cnam.fr/NSY102/lectures/j-concur-ltr.pdf DJBEL- 2010

More Related