SlideShare une entreprise Scribd logo
1  sur  12
AGENDA
1. INFÉRENCE DE TYPE POUR LES ARGUMENTS DES EXPRESSIONS LAMBDA
2. LANCEMENT SIMPLIFIÉ DE PROGRAMMES À FICHIER UNIQUE
3. EVOLUTION DE L’API HTTP CLIENT
4. QUELQUES APIS
5. GESTION DE LA VISIBILITÉ DES ATTRIBUTS DES CLASSES IMBRIQUÉES
6. DYNAMIC CLASS-FILE CONSTANTS
7. LE GARBAGE COLLECTOR EPSILON
8. UNICODE 10
9. SUPPRESION DES MODULES
INTRODUCTION
• JAVA 11, SORTI EN SEPTEMBRE 2018, EST UNE NOUVEAUTÉ MAJEURE DU LANGAGE JAVA EN CE QU’ELLE
CONSTITUE UNE VERSION LTS (LONG TIME SUPPORT) QUI SERA SOUTENUE PAR ORACLE JUSQU’EN 2023 –
ET MÊME AU-DELÀ SI ON SOUHAITE BÉNÉFICIER D’UN SUPPORT ÉTENDU. DE CE FAIT, JAVA 11 APPARAÎT
COMME UNE VERSION INCONTOURNABLE À L’HORIZON DES PROCHAINES ANNÉES. DANS CET ARTICLE, JE
VOUS PROPOSE DE VOUS FAMILIARISER AVEC UNE SÉLECTION DE 9 NOUVEAUTÉS CONTENUES DANS LE
JDK 11.
INFÉRENCE DE TYPE POUR LES ARGUMENTS
DES EXPRESSIONS LAMBDA
Evolution Syntaxe
La référence de type des variables
ajoutée avec Java 8
Function<Integer, Integer> cube = (Integer x) -> x * x * x;
l’inférence de type des variables
ajoutée avec Java 11
Function<Integer, Integer> cube = (var x) -> x * x * x;
Omettre un type pour les paramètres
des lambdas
Function<Integer, Integer> cube = (x) -> x * x * x;
Exemple list.stream().map((@NotNull var s) -> s.toUpperCase());
LANCEMENT SIMPLIFIÉ DE PROGRAMMES À
FICHIER UNIQUE
Evolution
Syntaxe
Avant Java 11, pour lancer le traditionnel
HelloWorld.java, on exécutait :
javac -d <memory> HelloWorld.java
java -cp <memory>
avec Java 11, on pourra directement lancer des
applications contenues dans un seul fichier
java HelloWorld.java (*)
(*) Cette fonctionnalité, en complément de JShell, complète les outils à dispositions des développeurs
débutants et permet également à Oracle de faire évoluer Java vers un langage plus léger à
exécuter.
EVOLUTION DE L’API HTTP CLIENT
• AMÉLIORATION DU PACKAGE JAVA.NET.HTTP
Evolution Package Syntaxe
HTTPCLIENT
(java 9)
jdk.incubator.httpclient Ne fonctionne qu’en mode synchrone
HTTP/1.1 and HTTP/2
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.getDefault()).build();
HTTPCLIENT
(java 11)
java.net.http fonctionne en 2 modes (A)synchrone:
private static final HttpClient HTTP_CLIENT =
HttpClient.newBuilder().build();
Le nom du module et du package de l’API est désormais
java.net.http.
QUELQUES APIS
Evolution package syntaxe
Evolution « String » java.lang.String boolean isBlank(): retourne true si le String est vide ou n’est composé que de whitespaces, sinon false.
Stream lines(): retourne un stream des lignes extraites du String.
String repeat(int): retourne un String qui est le String d’origine concaténé avec lui-même n fois.
String strip(): retourne un String débarrassé de ses trailing et leading whitespaces. Pour faire simple,
strip() est la version «Unicode-aware » de trim() dont la définition du whitespace date des premières
versions de Java.
String stripLeading(): retourne un String débarrassé de ses leading whitespaces.
String stripTrailing(): retourne un String débarrassé de ses trailing whitespaces
Evolution « function » java.util.function.Predicate Predicate not(Predicate). Retourne un Predicate qui est la négation du Predicate passé en argument.
Exemple pour list.stream().filter(Predicate.not(String::isBlank));
java.lang.CharSequence: int compare(CharSequence, CharSequence): compare deux instances de
CharSequence en suivant l’ordre lexicographique. Retourne une valeur negative, nulle ou positive.
java.lang.StringBuffer / java.lang.StringBuilder: Ces deux classes ont désormais accès à une nouvelle
méthode compareTo() qui prend en argument un StringBuffer/StringBuilder et retourne un int. La
logique de comparaison suit le même ordre lexicographique que pour la nouvelle méthode de la classe
CharSequence
Evolution « math » Java.lang.Math sin (sine trigonometric function)
cos (cosine trigonometric function)
log (logarithm of a number)
Evolution »facilite la conversion to
array »
Java.util.Collection
Collection.toArray (Function <T []>).
Evolution »facilite la lecture et
l'écriture de fichiers »
java.nio.file.Files
Files.readString(Path)
Files.writeString(Path, CharSequence, OpenOption)
GESTION DE LA VISIBILITÉ DES ATTRIBUTS
DES CLASSES IMBRIQUÉES
Evolution Package Syntaxe
Evolution « visibilités des
classes nested »
Java.lang.class • Ajout des getters sur les classes imbriqées (Nested)
public class NestingClass {
private int nestingInt;
class NestedClass {
public void printNestingInt(){
System.out.println("Nesting Int = " + nestingInt);
}
}
}
Ajout de 3 méthodes Java.lang.class Class getNestHost()
Class[] getNestMembers()
boolean isNestmateof(Class)
DYNAMIC CLASS-FILE CONSTANTS
Evolution Package Syntaxe
Ajout d’un constante
dynamique
java.lang.invoke.Constant
Bootstraps
public static VarHandle arrayVarHandle(Lookup lookup, String name,
Class<java.lang.invoke.VarHandle> type, Class<?> arrayClass )
public static VarHandle fieldVarHandle( Lookup lookup, String name,
Class<java.lang.invoke.VarHandle> type, Class<?> declaringClass, Class<?> fieldType )
public static Object getStaticFinal( Lookup lookup, String name, Class<?> type, Class<?>
declaringClass )
public static Object getStaticFinal( Lookup lookup, String name, Class<?> type )
public static Object invoke( Lookup lookup, String name, Class<?> type, MethodHandle
handle, Object[] args )
public static Object nullConstant( Lookup lookup, String name, Class<?> type )
public static Class<?> primitiveClass( Lookup lookup, String name, Class<?> type )
public static VarHandle staticFieldVarHandle( Lookup lookup, String name,
Class<java.lang.invoke.VarHandle> type, Class<?> declaringClass, Class<?> fieldType )
Ajout d’un constante
dynamique
java.lang.invoke.Constant
Bootstraps
LE GARBAGE COLLECTOR EPSILON
• JAVA 7 A INTRODUIT GARBAGEFIRST (G1). ELLE EST ENSUITE DEVENUE LA RAMASSE-MIETTES PAR DÉFAUT
AVEC JAVA 9. G1 EST OPTIMISÉE POUR UNE PROBABILITÉ ET UN DÉBIT ÉLEVÉS. COMME INDIQUÉ PAR
THOMAS SCHATZL, JAVA 11 AMÉLIORE LES TEMPS DE PAUSE DE PRÈS DE 60% SUR LES PROCESSEURS X64
AVEC UN ENCOMBREMENT MÉMOIRE TRÈS RÉDUIT.
• DE PLUS, CETTE VERSION DE JAVA INTRODUITE DEUX RAMASSE-MIETTES EXPÉRIMENTALES :
• Z GARBAGE COLLECTOR (ZGC)
• ET EPSILON
UNICODE 10
• Le JDK 11 a pris note de l'arrivée d'Unicode 10, et prend donc en charge la nouvelle
version de cette norme.
• Cette version comprend 8 518 nouveaux symboles (du Bitcoin aux emojis en passant
par les signes traditionnels chinois, arabes ou bouddhistes) que vous pouvez utiliser
avec Java 11
SUPPRESION DES MODULES
Evolution Module Statut
Suppression de modules corba
transaction
activation
xml.bind
xml.ws
xml.ws.annotation
Removed

Contenu connexe

Tendances

Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Jean-Michel Doudoux
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
Presentation of framework Angular
Presentation of framework AngularPresentation of framework Angular
Presentation of framework AngularLhouceine OUHAMZA
 
Alphorm.com Formation Big Data & Hadoop : Le Guide Complet
Alphorm.com Formation Big Data & Hadoop : Le Guide CompletAlphorm.com Formation Big Data & Hadoop : Le Guide Complet
Alphorm.com Formation Big Data & Hadoop : Le Guide CompletAlphorm
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux javaInes Ouaz
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 
API Asynchrones en Java 8
API Asynchrones en Java 8API Asynchrones en Java 8
API Asynchrones en Java 8José Paumard
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
 
P3 listes et elements graphiques avancés
P3 listes et elements graphiques avancésP3 listes et elements graphiques avancés
P3 listes et elements graphiques avancésLilia Sfaxi
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à androidLilia Sfaxi
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiquesdenier
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfacesAziz Darouichi
 
Devoxx France 2023 - Les nouveautés de Java 19 et 20
Devoxx France 2023 - Les nouveautés de Java 19 et 20Devoxx France 2023 - Les nouveautés de Java 19 et 20
Devoxx France 2023 - Les nouveautés de Java 19 et 20Jean-Michel Doudoux
 

Tendances (20)

Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
Presentation of framework Angular
Presentation of framework AngularPresentation of framework Angular
Presentation of framework Angular
 
Alphorm.com Formation Big Data & Hadoop : Le Guide Complet
Alphorm.com Formation Big Data & Hadoop : Le Guide CompletAlphorm.com Formation Big Data & Hadoop : Le Guide Complet
Alphorm.com Formation Big Data & Hadoop : Le Guide Complet
 
Nouveautés de java 8
Nouveautés de java 8Nouveautés de java 8
Nouveautés de java 8
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
 
Spring ioc
Spring iocSpring ioc
Spring ioc
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
API Asynchrones en Java 8
API Asynchrones en Java 8API Asynchrones en Java 8
API Asynchrones en Java 8
 
P4 intents
P4 intentsP4 intents
P4 intents
 
Java Class Design
Java Class DesignJava Class Design
Java Class Design
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
 
P3 listes et elements graphiques avancés
P3 listes et elements graphiques avancésP3 listes et elements graphiques avancés
P3 listes et elements graphiques avancés
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à android
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatique
 
Cours java
Cours javaCours java
Cours java
 
Spring security
Spring securitySpring security
Spring security
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
 
Devoxx France 2023 - Les nouveautés de Java 19 et 20
Devoxx France 2023 - Les nouveautés de Java 19 et 20Devoxx France 2023 - Les nouveautés de Java 19 et 20
Devoxx France 2023 - Les nouveautés de Java 19 et 20
 
Java
JavaJava
Java
 

Similaire à Java version 11 - les 9 nouveautes

MarsJUG - Le classpath n'est pas mort, mais presque
MarsJUG - Le classpath n'est pas mort, mais presqueMarsJUG - Le classpath n'est pas mort, mais presque
MarsJUG - Le classpath n'est pas mort, mais presqueAlexis Hassler
 
Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Jean-Michel Doudoux
 
Programmation Android - 09 - Web services
Programmation Android - 09 - Web servicesProgrammation Android - 09 - Web services
Programmation Android - 09 - Web servicesYann Caron
 
Presentation hibernate nfe103
Presentation hibernate nfe103Presentation hibernate nfe103
Presentation hibernate nfe103MRamo2s
 
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfdevoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfJean-Michel Doudoux
 
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
Workshop Spring  3 - Tests et techniques avancées du conteneur SpringWorkshop Spring  3 - Tests et techniques avancées du conteneur Spring
Workshop Spring 3 - Tests et techniques avancées du conteneur SpringAntoine Rey
 
Marzouk une introduction à jdbc
Marzouk une introduction à jdbcMarzouk une introduction à jdbc
Marzouk une introduction à jdbcabderrahim marzouk
 
GWT : under the hood
GWT : under the hoodGWT : under the hood
GWT : under the hoodsvuillet
 
[Java] Versioning & Nouveautés JDK 12-15
[Java] Versioning & Nouveautés JDK 12-15[Java] Versioning & Nouveautés JDK 12-15
[Java] Versioning & Nouveautés JDK 12-15Romain Schlick
 
#5 Java EE5 Client Lourd et Smart Client
#5 Java EE5  Client Lourd  et Smart Client#5 Java EE5  Client Lourd  et Smart Client
#5 Java EE5 Client Lourd et Smart ClientGuillaume Sauthier
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework springAntoine Rey
 
PréSentation Qualoo Le Generateur De Code Java J2 Ee
PréSentation Qualoo   Le Generateur De Code Java J2 EePréSentation Qualoo   Le Generateur De Code Java J2 Ee
PréSentation Qualoo Le Generateur De Code Java J2 EeST informatique services
 
Présentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptxPrésentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptxsalmachtioui1
 

Similaire à Java version 11 - les 9 nouveautes (20)

575
575575
575
 
MarsJUG - Le classpath n'est pas mort, mais presque
MarsJUG - Le classpath n'est pas mort, mais presqueMarsJUG - Le classpath n'est pas mort, mais presque
MarsJUG - Le classpath n'est pas mort, mais presque
 
Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017
 
Java RMI
Java RMIJava RMI
Java RMI
 
JAVA Chapitre1
JAVA Chapitre1 JAVA Chapitre1
JAVA Chapitre1
 
Programmation Android - 09 - Web services
Programmation Android - 09 - Web servicesProgrammation Android - 09 - Web services
Programmation Android - 09 - Web services
 
Presentation hibernate nfe103
Presentation hibernate nfe103Presentation hibernate nfe103
Presentation hibernate nfe103
 
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfdevoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
 
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
Workshop Spring  3 - Tests et techniques avancées du conteneur SpringWorkshop Spring  3 - Tests et techniques avancées du conteneur Spring
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
 
JAVA Chapitre7
JAVA Chapitre7JAVA Chapitre7
JAVA Chapitre7
 
Jdbc
JdbcJdbc
Jdbc
 
Marzouk une introduction à jdbc
Marzouk une introduction à jdbcMarzouk une introduction à jdbc
Marzouk une introduction à jdbc
 
Programmation Java
Programmation JavaProgrammation Java
Programmation Java
 
GWT : under the hood
GWT : under the hoodGWT : under the hood
GWT : under the hood
 
Atmosphere Framework
Atmosphere FrameworkAtmosphere Framework
Atmosphere Framework
 
[Java] Versioning & Nouveautés JDK 12-15
[Java] Versioning & Nouveautés JDK 12-15[Java] Versioning & Nouveautés JDK 12-15
[Java] Versioning & Nouveautés JDK 12-15
 
#5 Java EE5 Client Lourd et Smart Client
#5 Java EE5  Client Lourd  et Smart Client#5 Java EE5  Client Lourd  et Smart Client
#5 Java EE5 Client Lourd et Smart Client
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework spring
 
PréSentation Qualoo Le Generateur De Code Java J2 Ee
PréSentation Qualoo   Le Generateur De Code Java J2 EePréSentation Qualoo   Le Generateur De Code Java J2 Ee
PréSentation Qualoo Le Generateur De Code Java J2 Ee
 
Présentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptxPrésentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptx
 

Java version 11 - les 9 nouveautes

  • 1.
  • 2. AGENDA 1. INFÉRENCE DE TYPE POUR LES ARGUMENTS DES EXPRESSIONS LAMBDA 2. LANCEMENT SIMPLIFIÉ DE PROGRAMMES À FICHIER UNIQUE 3. EVOLUTION DE L’API HTTP CLIENT 4. QUELQUES APIS 5. GESTION DE LA VISIBILITÉ DES ATTRIBUTS DES CLASSES IMBRIQUÉES 6. DYNAMIC CLASS-FILE CONSTANTS 7. LE GARBAGE COLLECTOR EPSILON 8. UNICODE 10 9. SUPPRESION DES MODULES
  • 3. INTRODUCTION • JAVA 11, SORTI EN SEPTEMBRE 2018, EST UNE NOUVEAUTÉ MAJEURE DU LANGAGE JAVA EN CE QU’ELLE CONSTITUE UNE VERSION LTS (LONG TIME SUPPORT) QUI SERA SOUTENUE PAR ORACLE JUSQU’EN 2023 – ET MÊME AU-DELÀ SI ON SOUHAITE BÉNÉFICIER D’UN SUPPORT ÉTENDU. DE CE FAIT, JAVA 11 APPARAÎT COMME UNE VERSION INCONTOURNABLE À L’HORIZON DES PROCHAINES ANNÉES. DANS CET ARTICLE, JE VOUS PROPOSE DE VOUS FAMILIARISER AVEC UNE SÉLECTION DE 9 NOUVEAUTÉS CONTENUES DANS LE JDK 11.
  • 4. INFÉRENCE DE TYPE POUR LES ARGUMENTS DES EXPRESSIONS LAMBDA Evolution Syntaxe La référence de type des variables ajoutée avec Java 8 Function<Integer, Integer> cube = (Integer x) -> x * x * x; l’inférence de type des variables ajoutée avec Java 11 Function<Integer, Integer> cube = (var x) -> x * x * x; Omettre un type pour les paramètres des lambdas Function<Integer, Integer> cube = (x) -> x * x * x; Exemple list.stream().map((@NotNull var s) -> s.toUpperCase());
  • 5. LANCEMENT SIMPLIFIÉ DE PROGRAMMES À FICHIER UNIQUE Evolution Syntaxe Avant Java 11, pour lancer le traditionnel HelloWorld.java, on exécutait : javac -d <memory> HelloWorld.java java -cp <memory> avec Java 11, on pourra directement lancer des applications contenues dans un seul fichier java HelloWorld.java (*) (*) Cette fonctionnalité, en complément de JShell, complète les outils à dispositions des développeurs débutants et permet également à Oracle de faire évoluer Java vers un langage plus léger à exécuter.
  • 6. EVOLUTION DE L’API HTTP CLIENT • AMÉLIORATION DU PACKAGE JAVA.NET.HTTP Evolution Package Syntaxe HTTPCLIENT (java 9) jdk.incubator.httpclient Ne fonctionne qu’en mode synchrone HTTP/1.1 and HTTP/2 HttpClient client = HttpClient.newBuilder() .proxy(ProxySelector.getDefault()).build(); HTTPCLIENT (java 11) java.net.http fonctionne en 2 modes (A)synchrone: private static final HttpClient HTTP_CLIENT = HttpClient.newBuilder().build(); Le nom du module et du package de l’API est désormais java.net.http.
  • 7. QUELQUES APIS Evolution package syntaxe Evolution « String » java.lang.String boolean isBlank(): retourne true si le String est vide ou n’est composé que de whitespaces, sinon false. Stream lines(): retourne un stream des lignes extraites du String. String repeat(int): retourne un String qui est le String d’origine concaténé avec lui-même n fois. String strip(): retourne un String débarrassé de ses trailing et leading whitespaces. Pour faire simple, strip() est la version «Unicode-aware » de trim() dont la définition du whitespace date des premières versions de Java. String stripLeading(): retourne un String débarrassé de ses leading whitespaces. String stripTrailing(): retourne un String débarrassé de ses trailing whitespaces Evolution « function » java.util.function.Predicate Predicate not(Predicate). Retourne un Predicate qui est la négation du Predicate passé en argument. Exemple pour list.stream().filter(Predicate.not(String::isBlank)); java.lang.CharSequence: int compare(CharSequence, CharSequence): compare deux instances de CharSequence en suivant l’ordre lexicographique. Retourne une valeur negative, nulle ou positive. java.lang.StringBuffer / java.lang.StringBuilder: Ces deux classes ont désormais accès à une nouvelle méthode compareTo() qui prend en argument un StringBuffer/StringBuilder et retourne un int. La logique de comparaison suit le même ordre lexicographique que pour la nouvelle méthode de la classe CharSequence Evolution « math » Java.lang.Math sin (sine trigonometric function) cos (cosine trigonometric function) log (logarithm of a number) Evolution »facilite la conversion to array » Java.util.Collection Collection.toArray (Function <T []>). Evolution »facilite la lecture et l'écriture de fichiers » java.nio.file.Files Files.readString(Path) Files.writeString(Path, CharSequence, OpenOption)
  • 8. GESTION DE LA VISIBILITÉ DES ATTRIBUTS DES CLASSES IMBRIQUÉES Evolution Package Syntaxe Evolution « visibilités des classes nested » Java.lang.class • Ajout des getters sur les classes imbriqées (Nested) public class NestingClass { private int nestingInt; class NestedClass { public void printNestingInt(){ System.out.println("Nesting Int = " + nestingInt); } } } Ajout de 3 méthodes Java.lang.class Class getNestHost() Class[] getNestMembers() boolean isNestmateof(Class)
  • 9. DYNAMIC CLASS-FILE CONSTANTS Evolution Package Syntaxe Ajout d’un constante dynamique java.lang.invoke.Constant Bootstraps public static VarHandle arrayVarHandle(Lookup lookup, String name, Class<java.lang.invoke.VarHandle> type, Class<?> arrayClass ) public static VarHandle fieldVarHandle( Lookup lookup, String name, Class<java.lang.invoke.VarHandle> type, Class<?> declaringClass, Class<?> fieldType ) public static Object getStaticFinal( Lookup lookup, String name, Class<?> type, Class<?> declaringClass ) public static Object getStaticFinal( Lookup lookup, String name, Class<?> type ) public static Object invoke( Lookup lookup, String name, Class<?> type, MethodHandle handle, Object[] args ) public static Object nullConstant( Lookup lookup, String name, Class<?> type ) public static Class<?> primitiveClass( Lookup lookup, String name, Class<?> type ) public static VarHandle staticFieldVarHandle( Lookup lookup, String name, Class<java.lang.invoke.VarHandle> type, Class<?> declaringClass, Class<?> fieldType ) Ajout d’un constante dynamique java.lang.invoke.Constant Bootstraps
  • 10. LE GARBAGE COLLECTOR EPSILON • JAVA 7 A INTRODUIT GARBAGEFIRST (G1). ELLE EST ENSUITE DEVENUE LA RAMASSE-MIETTES PAR DÉFAUT AVEC JAVA 9. G1 EST OPTIMISÉE POUR UNE PROBABILITÉ ET UN DÉBIT ÉLEVÉS. COMME INDIQUÉ PAR THOMAS SCHATZL, JAVA 11 AMÉLIORE LES TEMPS DE PAUSE DE PRÈS DE 60% SUR LES PROCESSEURS X64 AVEC UN ENCOMBREMENT MÉMOIRE TRÈS RÉDUIT. • DE PLUS, CETTE VERSION DE JAVA INTRODUITE DEUX RAMASSE-MIETTES EXPÉRIMENTALES : • Z GARBAGE COLLECTOR (ZGC) • ET EPSILON
  • 11. UNICODE 10 • Le JDK 11 a pris note de l'arrivée d'Unicode 10, et prend donc en charge la nouvelle version de cette norme. • Cette version comprend 8 518 nouveaux symboles (du Bitcoin aux emojis en passant par les signes traditionnels chinois, arabes ou bouddhistes) que vous pouvez utiliser avec Java 11
  • 12. SUPPRESION DES MODULES Evolution Module Statut Suppression de modules corba transaction activation xml.bind xml.ws xml.ws.annotation Removed