Your SlideShare is downloading. ×
Java SE 7
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Java SE 7

1,105
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,105
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Nouveautés Frédéric Renout Novembre 2011
  • 2.  Introduction Java GUI Java « core » Java dynamic binding Java Concurrent Frédéric Renout Novembre 2011
  • 3. Déploiement Client graphique Collections Langage Réseau SécuritéDynamique Concurrent I/O Frédéric Renout Novembre 2011
  • 4. Client GraphiqueDéploiement Frédéric Renout Novembre 2011
  • 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. Frédéric Renout Novembre 2011
  • 7. Frédéric Renout Novembre 2011
  • 8. Frédéric Renout Novembre 2011
  • 9. Frédéric Renout Novembre 2011
  • 10.  Collection Sécurité Réseau Langage Frédéric Renout Novembre 2011
  • 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.  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. 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. 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.  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. 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. 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. 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. … 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. … 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. On peut switcher sur des types primitif (ou leurs wrappers) des enums des Strings Frédéric Renout Novembre 2011
  • 22. List<IndexOutOfBoundsException> dictionnaire = newArrayList<IndexOutOfBoundsException >();Map<String,Map<String,String>> i18nDictionnaire = newHashMap<String,Map<String,String>>(); Frédéric Renout Novembre 2011
  • 23. List<IndexOutOfBoundsException> dictionnaire = newArrayList<>();Map<String,Map<String,String>> i18nDictionnaire = newHashMap<>(); Frédéric Renout Novembre 2011
  • 24.  Multiple catch Re-throw precis Frédéric Renout Novembre 2011
  • 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. 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.  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. InvokeDynamic Frédéric Renout Novembre 2011
  • 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. 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.  ThreadLocaleRandom Phaser Fork/join Frédéric Renout Novembre 2011
  • 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. 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. Fork : diviser un tache en sous-tachesJoin : combiner les résultats des sous-tâches Frédéric Renout Novembre 2011
  • 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.  Déclenchements  Synchrone -> invoke  Asynchrone -> execute  Asynchrone et future ->submit Frédéric Renout Novembre 2011
  • 37. ForkJoinPoolForkJoinTask invocation compute() compute() Frédéric Renout Novembre 2011
  • 38. Frédéric Renout Novembre 2011
  • 39. A Jean-Michel  Frédéric Renout Novembre 2011
  • 40. Frédéric Renout Novembre 2011