JEP 12 Preview features (Aperçu)

Contexte

En s’intéressant sur les nouvelles fonctionnalités du JDK, nous en voyons certaines en mode aperçu (preview). Ce mode a été introduit en 2018 dans le JDK 12. La première utilisation a été pour les expressions switch (JEP 325 Switch Expressions (Preview)).

Le principe

L’objectif est d’apporter des nouveautés au niveau du langage, de la JVM ou l’API Java SE. Le point important est que la fonctionnalité est complètement spécifiée et complètement implémentée mais pas de manière permanente. En effet, l’objectif est de fournir la fonctionnalité en standard dans une prochaine version mais avant l’équipe souhaite avoir un retour et des commentaires sur la fonctionnalité.

Fonctionnement

Par défaut, les fonctionnalités en mode aperçu sont désactivées. Il est nécessaire de rajouter le paramètre --enable-preview. Les exemples ci-dessous sont pour un JDK 16.

Activation à la compilation

javac Programme.java                                // Pas d’aperçu activé (1)
javac --release 16 --enable-preview Programme.java  // Tous aperçu du JDK 16 activés (2)
javac --release 15 --enable-preview Programme.java  // PAS AUTORISE (3)
  1. par défaut, pas d’aperçu activé

  2. les aperçus Java 16 sont disponibles avec un JDK 16

  3. les aperçus Java 15 ne sont pas disponibles avec un JDK 16

avertissementLes aperçus pouvant évolués en fonction des retours. La JVM peut uniquement activé les aperçus correspondant à sa version.

Activation à l’exécution

java Programme                            // Pas d’aperçu activé (1)
java --enable-preview Programme           // Tous aperçu du JDK 16 activés (2)
java --enable-preview -jar Programme.jar  // Tous aperçu du JDK 16 activés (3)
java --enable-preview -m Prg              // Tous aperçu du JDK 16 activés (4)
  1. par défaut, pas d’aperçu activé

  2. mode classpath avec le nom du programme

  3. mode classpath avec une archive

  4. mode module

Configuration via Maven

Côté Maven, il faut passer les paramètre pour les plugins suivante :

  • maven-compiler-plugin

  • maven-surefire-plugin

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <release>16</release>
        <compilerArgs>--enable-preview</compilerArgs>
    </configuration>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.0.0-M3</version>
    <configuration>
        <argLine>--enable-preview</argLine>
    </configuration>
</plugin>

Configuration d’Eclipse

La configuration est faite au niveau des propriétés du projet dans le volet Compilateur Java.

eclipse configure preview on java compiler