Java SE 7

1 335 vues

Publié le

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 335
Sur SlideShare
0
Issues des intégrations
0
Intégrations
554
Actions
Partages
0
Téléchargements
22
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Java SE 7

  1. 1. Nouveautés Frédéric Renout Novembre 2011
  2. 2.  Introduction Java GUI Java « core » Java dynamic binding Java Concurrent Frédéric Renout Novembre 2011
  3. 3. Déploiement Client graphique Collections Langage Réseau SécuritéDynamique Concurrent I/O Frédéric Renout Novembre 2011
  4. 4. Client GraphiqueDéploiement Frédéric Renout Novembre 2011
  5. 5. Client graphique Nouveau Look and Feel : Nimbus Transparence , gradient et formes libres pour les fenêtres swing Interactions graphiques améliorées entre awt et swingDéploiement Amélioration de JNLP  Embeddable  Signature partielle Frédéric Renout Novembre 2011
  6. 6. Frédéric Renout Novembre 2011
  7. 7. Frédéric Renout Novembre 2011
  8. 8. Frédéric Renout Novembre 2011
  9. 9. Frédéric Renout Novembre 2011
  10. 10.  Collection Sécurité Réseau Langage Frédéric Renout Novembre 2011
  11. 11.  Interface de Queue bloquante (LinkedTranferQueue) Dérive de Blocking Permet d’attendre qu’un item envoyé soit consommé Méthodes:  hasWaitingConsumer / getWaitingConsumerCount  transfer : bloquant  tryTransfer : bon bloquant et paramétrable Démo Frédéric Renout Novembre 2011
  12. 12.  Nouveaux algo basés sur ECC (Elliptic Curve Cryptography) Possibilité de désactiver l’utilisation d’algos « faibles » durant l’utilisation de TLS (=SSL) Frédéric Renout Novembre 2011
  13. 13. Courbe elliptique :y2mod p =x3+ax+b mod pIci : y2=x3-5x+3Courbe ayant des propriétés decalcul « simples » pour + Frédéric Renout Novembre 2011
  14. 14. Algorithme : A et B choisissent publiquement une courbe C et un point P decette courbe A choisi secrètement un entier dA B choisi secrètement un entier dB A envoie publiquement dAP = P+P+…dA fois…+P B envoie publiquement dBP = P+P+…dB fois…+P A et B peuvent calculer dA(dBP) = dB(dAP) = (dBdA)P qui est leurclé de chiffrement secrète Un espion E doit pouvoir retrouver dA et dB et aujourd’hui letemps nécessaire pour résoudre ce problème est très longPlus d’infos : http://www.apprendre-en-ligne.net/crypto/moderne/elliptique.htmlhttp://fr.wikipedia.org/wiki/Cryptographie_sur_les_courbes_elliptiques Frédéric Renout Novembre 2011
  15. 15.  UrlClassLoader.close  Fermer le classLoader pour libérer les ressources chargées et les remplacer Socket Direct Protocol  Solaris & Linux  Utilisé par infiniBand qui permet de faire des accès mémoire entre machine sans passer par l’OS Frédéric Renout Novembre 2011
  16. 16. Projet Coincoin something : to invent a new word or phrase that other peoplethen begin to useModification mineure du langage visant à rendre le codeplus facile à écrire et à maintenir Frédéric Renout Novembre 2011
  17. 17. L’utilisation de varargs de types paramétrés génère deswarnings à l’utilisation des méthodesJava 7 permet deGénérer un warning à la déclaration : possible heappollutionSupprimer ces warnings @SafeVarargs  Retire tout warnings @SuppressWarnings(« unchecked », »varargs »)  Retire les warnings à la déclaration -Xlint:-varargs Frédéric Renout Novembre 2011
  18. 18. Possibilité de séparer les nombres par des _5000000 = 5_000_000Limite les erreurs de lecturePossibilité de représenter un nombre sous sa formebinaire42 = 0b101010Facilite la représentation des bitmasks… Frédéric Renout Novembre 2011
  19. 19. … ou d’une bitmappublic static final short[] HAPPY_FACE = {(short)0b0000011111100000;(short)0b0000100000010000;(short)0b0001000000001000;(short)0b0010000000000100;(short)0b0100000000000010;(short)0b1000011001100001;(short)0b1000011001100001;(short)0b1000000000000001;(short)0b1000000000000001;(short)0b1001000000001001;(short)0b1000100000010001;(short)0b0100011111100010;(short)0b0010000000000100;(short)0b0001000000001000;(short)0b0000100000010000;(short)0b0000011111100000; } Frédéric Renout Novembre 2011
  20. 20. … ou d’une bitmappublic static final short[] HAPPY_FACE = {(short)0b0000011111100000;(short)0b0000100000010000;(short)0b0001000000001000;(short)0b0010000000000100;(short)0b0100000000000010;(short)0b1000011001100001;(short)0b1000011001100001;(short)0b1000000000000001;(short)0b1000000000000001;(short)0b1001000000001001;(short)0b1000100000010001;(short)0b0100011111100010;(short)0b0010000000000100;(short)0b0001000000001000;(short)0b0000100000010000;(short)0b0000011111100000; } Frédéric Renout Novembre 2011
  21. 21. On peut switcher sur des types primitif (ou leurs wrappers) des enums des Strings Frédéric Renout Novembre 2011
  22. 22. List<IndexOutOfBoundsException> dictionnaire = newArrayList<IndexOutOfBoundsException >();Map<String,Map<String,String>> i18nDictionnaire = newHashMap<String,Map<String,String>>(); Frédéric Renout Novembre 2011
  23. 23. List<IndexOutOfBoundsException> dictionnaire = newArrayList<>();Map<String,Map<String,String>> i18nDictionnaire = newHashMap<>(); Frédéric Renout Novembre 2011
  24. 24.  Multiple catch Re-throw precis Frédéric Renout Novembre 2011
  25. 25. try { try { File input = new File("input.txt"); File input = new File("input.txt"); FileReader fr = new FileReader(input); FileReader fr = new FileReader(input); File output = new File("output.txt"); File output = new File("output.txt"); FileWriter fw = new FileWriter(output); FileWriter fw = new FileWriter(output); int readed; int readed; while ((readed = fr.read()) != -1) { while ((readed = fr.read()) != -1) { fw.write(readed); fw.write(readed); } } fw.flush(); fw.flush(); fw.close(); fw.close(); fr.close(); fr.close(); } catch (FileNotFoundException e) { } catch (FileNotFoundException | IOException e) { log(e); log(e); }catch (IOException e) { } log(e); } } } Frédéric Renout Novembre 2011
  26. 26. public void copy() throws FileNotFoundException , IOException { public void copy() throws FileNotFoundException , IOException {try { try { File input = new File("input.txt"); File input = new File("input.txt"); FileReader fr = new FileReader(input); FileReader fr = new FileReader(input); File output = new File("output.txt"); File output = new File("output.txt"); FileWriter fw = new FileWriter(output); FileWriter fw = new FileWriter(output); int readed; int readed; while ((readed = fr.read()) != -1) { while ((readed = fr.read()) != -1) { fw.write(readed); fw.write(readed); } } fw.flush(); fw.flush(); fw.close(); fw.close(); fr.close(); fr.close(); } catch (FileNotFoundException e) { } catch (Exception e) { log(e); log(e); throw e; throw e; }catch (IOException e) { } log(e); } throw e; } } }} Frédéric Renout Novembre 2011
  27. 27.  Nouvelle interface : AutoClosable On passe les ressources au try En sortie les ressources sont fermées dans le sens inverse de la déclaration En cas d’exception dans le try les exceptions du à la fermeture sont supprimées mais accessibles via Throwable.getSuppressed Démo Frédéric Renout Novembre 2011
  28. 28. InvokeDynamic Frédéric Renout Novembre 2011
  29. 29. Quels langages tournent sur une JVM? Groovy Scala Jython Java Erjang Rhino JRuby Et pleins d’autres... Frédéric Renout Novembre 2011
  30. 30. Beaucoup de ces langages sont des langagesdynamiquesJava est fortement typé. Les traitements dynamiquesdoivent être « émulés » et sont couteux.Nouvelle instruction au niveau du bytecode :invokeDynamicNouvelle API de réflection : java.lang.invoke CallSite MethodHandleDémo Frédéric Renout Novembre 2011
  31. 31.  ThreadLocaleRandom Phaser Fork/join Frédéric Renout Novembre 2011
  32. 32.  Utilisation de nombre aléatoires dans des threads ou des ForkJoinTask Garanti que chaque Thread à son propre Random Frédéric Renout Novembre 2011
  33. 33. Permet de synchroniser de traitements, de gérer desphases :1. Enregistrer le nombre d’entités se synchronisant sur le Phaser2. Démarrer les Threads3. Se synchroniser avec arriveAndAwaitAdvance()4. Attendre une phase : awaitAdvance(#phase)Démo Frédéric Renout Novembre 2011
  34. 34. Fork : diviser un tache en sous-tachesJoin : combiner les résultats des sous-tâches Frédéric Renout Novembre 2011
  35. 35.  Utiliser efficacement plusieurs processeurs WorkStealing : les threads inutilisés prennent des tâches à ceux occupés. Similaire à Map/Reduce de Google mais avec une granularité différente (on peut définir des seuils de fork) et une scalabilité différente : MapReduce fonctionne sur des clusters, fork/join sur une JVM et sa machine Frédéric Renout Novembre 2011
  36. 36.  Déclenchements  Synchrone -> invoke  Asynchrone -> execute  Asynchrone et future ->submit Frédéric Renout Novembre 2011
  37. 37. ForkJoinPoolForkJoinTask invocation compute() compute() Frédéric Renout Novembre 2011
  38. 38. Frédéric Renout Novembre 2011
  39. 39. A Jean-Michel  Frédéric Renout Novembre 2011
  40. 40. Frédéric Renout Novembre 2011

×