Java
Par PlaceOweb le mardi, septembre 19 2023, 13:21 - JAVA - Lien permanent
Quelques notes sur java, ses versions et sa syntaxe telle que :
- java syntaxe try parenthèse / java parenthesis try syntax
java syntaxe try parenthèse / java parenthesis try syntax
@NoNull @NotNull
- Tu utiliseras @NotNull, @Nullable
- The Advantages of @NotNull
- Annotation javax.annotation.Nonnull problématique : comment la mettre en oeuvre ?
Java 21 (LTS)
- String Templates
- Virtual Threads
- Sequenced Collections
- java.net.http.HttpClient Is Now AutoCloseable
En route vers Java 21 par Jean-Michel Doudoux
Java 21 Launch Event : Java 21 is about to be released! Come celebrate with us on the Java YouTube Channel on September 19th from 13:00 to 21:00 UTC.
Youtube : Java 21 Launch Event
JDK 21 : la First Release Candidate est disponible
Java 18, 19, 20
- Java 20 : quoi de neuf ?
- Java 19 : quoi de neuf ?
- Java 18 : quoi de neuf ? (UTF-8 by Default, ...)
Java 17 (LTS)
Java 17 vs Java 11: Exploring the Latest Features and Improvements
Java 16
JDK 16: What’s coming in Java 16 : Due March 2021, the next Java upgrade targets a new metaspace memory allocator, support for C++ 14 language features in JDK source code, and a vector API
Java 15
Quelles nouveautés pour Java 15 ?
- Les classes sealed
- Les Text Blocks en version définitive
- Légère évolution des Records
- Livraison de nouveaux Garbage Collectors : Les ramasses miettes ZGC et Shenandoah ne sont plus expérimentaux et sont livrés en version finale dans le JDK 15. Cependant G1 reste pour le moment le ramasse miette par défaut
- Le JDK sur GitHub
Tutoriel pour découvrir les nouveautés de Java 15
Java 14
Les principales nouveautés de Java 14
Les nouveautés de Java 14 - Blog Invivoo
Détail du NPE
Quel est l’élément null dans le retour "java.lang.NullPointerException" ? message d’erreur plus précis pour les NPE, mais à condition de l'activer, car cette fonctionalité est désactivée par défaut, il faut ajouter l’option : -XX:+ShowCodeDetailsInExceptionMessages au compilateur java pour l’activer.
joueur.club().stade().name();
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "utils.stade.name()" because the return value of "utils.club.stade()" is null at features.TestJava14.main(TestJava14.java:24)
Le "record"
Pattern Matching pour instanceof
if (obj instanceof String) {
String s = (String) obj; // use s // Avant Java 14
// use s // Depuis Java 14 : Avec l’utilisation du pattern matching, on simplifie l’écriture car le transtypage se fait automatiquement dans la condition.
}
Switch mot-clé yield
String s = switch(month) {
case JANUARY, FEBRUARY, MARCH:
yield "Winter"; // Le Java 13 a signé l’introduction d’un nouveau mot-clé yield qui permet de faire retourner une valeur par un switch et de l’affecter à une variable.
Text Blocks (déclaration de string multilignes)
Dorénavant, il n’est plus nécessaire d’ajouter le signe + pour concaténer les lignes ni d’ajouter la séquence d’échappement \n pour le saut de ligne.
C’est remplacé par l’usage du triple guillemet """.
Si l’on ne veut pas de saut de ligne, il suffit d’ajouter à chaque fin de ligne la séquence d’échappement \.
String html = """
<html>
<body>
<p>Hello, \
JAVA\
world</p>
</body>
</html>
""";
Java 13
Les nouveautés de Java 13 - Blog Invivoo
- les blocs de texte
- l’apparition du mot clé « yield » sur les expressions switch.
Text blocks (par exemple pour vos requêtes SQL)
String sqlWithTextBlock = """
SELECT u.name FROM user AS u
JOIN city AS c ON c.id = u.city_id
WHERE city.name ?"""; // Il faut obligatoirement faire un retour à la ligne à la suite des premiers """ sinon le code ne compilera pas.
Java 12
A la découverte des nouveautés de Java 12 - Blog Invivoo
- switch
- les flèches
- la portée des variables
switch (jour) {
case LUNDI ->
int temp = ...
break;
case MARDI ->
int temp = ... // Çà ne cause pas problème en Java 12 contrairement aux précédente versions de Java
Java 11
Les 9 nouveautés de Java 11 - Blog Invivoo
Suppression des modules Java EE et CORBA, d’abord, après avoir été dépréciés en Java SE 9, ont été retirés de Java SE Plateform et du JDK :
- corba
- transaction
- activation
- xml.bind
- xml.ws
- xml.ws.annotation
Ensuite, les modules JavaFX ont également été retirés du JDK 11. Ces modules faisaient partis des JDKs Oracle précédents, mais pas des livraisons des derniers OpenJDK. Cependant, pas de panique ! Ces modules sont toujours accessibles en dehors du JDK.
JavaFX a été supprimé de la JDK Java, il faut ajouter JavaFX en tant que module externe : télécharger JavaFX.
JavaFX et l'avenir des technologies client Java
JavaFX est déjà open source depuis 2011 (OpenJFX sponsored by the Swing Group) dans le cadre de l'Open JDK, et l'évolution de la technologie sera désormais la responsabilité de la communauté OpenFX.
Cela laisse Swing et AWT, ironiquement probablement les plus anciennes des technologies Java Client, les seules qui survivront.
- JavaFX will be removed from the Java JDK : Oracle’s rich media web technology will be broken out of standard Java as of JDK 11, and will proceed at its own pace
- Removed from JDK 11, JavaFX 11 arrives as a standalone module : Developers must now explicitly include JavaFX modules in applications
Java Web Start (jnlp) également supprimé
L'autre technologie de déploiement couverte, Java Web Start, qui était devenue un chemin de migration pour les développeurs s'éloignant d'Applets, sera également exclue de Java SE 11 et au-delà.
Java 10
Les nouveautés de Java 10 - Blog Invivoo
var
Le mot " var " pour déclarer une variable :
// HashMap myVar= new HashMap(); // Avant Java 10
var myVar= new HashMap(); // Depuis Java 10
Java 9
What’s New for the Java Language in JDK 9 + Java Language Changes for Java SE 9
Entre autre, un changement possible sur la portée des variables déclarées avec "try-with-resources" : The try-with-resources Statement
Java Try With Resources + Try-with-resources Java 9 Enhancement 9 + Custom AutoClosable Implementations
Après Java 8, les nouveautés de Java 9 - Blog Invivoo
Tutoriel pour découvrir les nouveautés de Java 9
Java 8
lambda
stream
Les nouveautés de Java 8 - WeLoveDevs.com
- Les lambdas
- Les streams sur les collections
Tutoriel sur les nouveautés du langage 8 : le projet Lambda
8 super nouveautés de Java 8 dont personne ne parle
Java 7
Utilisation des underscores dans les entiers littéraux
int maValeur = 123_1456_789;
Utilisation des strings dans l'instruction switch
switch(leCasString) {
case "oui" :
case "Oui" :
resultat = true;
break;
default:
resultat = null;
break;
}
L'opérateur diamant (diamond operator)
// Map<Integer, String> maMap = new HashMap<Integer, String>(); // Avant Java 7
Map<Integer, String> maMap = new HashMap<>(); // Depuis Java 7
Ressource AutoCloseable L'instruction try-with-resources
Vous pouvez implémenter vos classes avec AutoCloseable, et utiliser celles qui le sont déjà tels que les Reader, InputStream, PreparedStatement,
try (Reader closeableReader = flux) {
int donnee;
while ((donnee = flux.read()) >= 0) {
System.out.print((char) donnee);
}
}
// public class MaRessource implements AutoCloseable {
Exemple pour une connexion SQL, avec PreparedStatement et ResultSet auto-fermés :
String sql = "SELECT * FROM myTable";
List list = new ArrayList();
try (Connection con = ds.getConnection();
PreparedStatement ps = con.prepareStatement(sql);) {
try (ResultSet rs = ps.executeQuery();) {
while (rs.next()) {
list.add(rs.getInt("id"));
}
}
} catch (SQLException e) {
e.printStackTrace();
}
Catching Multiple Exceptions in Java 7
// Avant Java 7
try {
// code qui peut générer des Exception de type SQLException et IOException
} catch(SQLException e) {
logger.log(e);
} catch(IOException e) {
logger.log(e);
}
// Depuis Java 7
try {
// code qui peut générer des Exception de type SQLException et IOException
} catch(SQLException | IOException e) {
logger.log(e);
}
Java versions
Les dates de publication, fin de vie et support de Java : Java/OpenJDK : endoflife.date et Oracle Java SE Support Roadmap
- 2014-2022 Java 8 (LTS)
- 2018-2023 Java 11 (LTS)
- 2023-2028 Java 21 (LTS)
La planification de publications des versions majeurs des JDK Releases
- JDK 21 Release Notes
- JDK 20 Release Notes
- JDK 19 Release Notes
- JDK 18 Release Notes
- JDK 17 Release Notes
- JDK 16 Release Notes
- JDK 15 Release Notes
- JDK 14 Release Notes
- JDK 13 Release Notes
- JDK 12 Release Notes
- JDK 11 Release Notes
- JDK 10 Release Notes
- Release Notes for JDK 9 and JDK 9 Update Releases
- JDK 8 Release Notes,
- JDK 7 Release Notes,
- JDK 6 Release Notes,
Les différentes éditions et versions de Java par Jean-Michel DOUDOUX.
Migrer vers une nouvelle version de java
De Java 8 à Java 17 : Un voyage passionnant
La migration vers Java 9 - Blog Invivoo
État des lieux avant migration
Utiliser l’outil « jdeps » pour collecter des informations et cartographier les dépendances pour :
- Vérifier pour chaque dépendance si une version modulaire existe,
- Nettoyer les dépendances,
- Prévoir les montées de version des dépendances.
De Java 8 à 11 : nouveautés et conseils pour migrer
- De Java 7 à 9
- Jigsaw, le système modulaire
- Méthodes privées dans les interfaces
- Try-with-resources
- Instanciation de collections immuables
- L’annotation @Deprecated enrichie
- API Flow
- JShell
- Java 10
- Inférence de type : var myList = List.of("I", "love", "Java");
- copier une List sans craindre de modifier la copie quand la List d’origine est modifiée : var copy = List.copyOf(original);
- Java 11
- Inférence de type pour les paramètres de lambdas
- Nouveau client HTTP (HttpClient est compatible avec la version 2 du protocole HTTP ainsi que les WebSocket.)