Fonctionnalité | Description | Exemple | Avantages |
---|---|---|---|
Syntaxe de variable locale pour les paramètres Lambda | Permet l'utilisation de var dans les expressions lambda pour une meilleure lisibilité. | (var x, var y) -> x + y | Cohérence dans le code. |
Client HTTP (standard) | Nouvelle API client HTTP prenant en charge HTTP/1.1 et HTTP/2. | HttpClient client = HttpClient.newHttpClient(); | API moderne et riche en fonctionnalités. |
Epsilon : un éboueur sans opération | Un garbage collector qui ne récupère pas de mémoire. | java -XX:+UseEpsilonGC MyApp | Utile pour les tests de performances. |
Contrôle d'accès basé sur Nest | Simplifie le contrôle d’accès pour les types imbriqués. | private static class NestedClass {} | Performance améliorée. |
Constantes de fichier de classe dynamique | Nouveau formulaire de pool constant CONSTANT_Dynamic . | N / A | Coût et limites réduits. |
Améliorations de l'API de chaîne | De nouvelles méthodes comme lines() , strip() , et repeat(int) . | text.strip() | Manipulation de chaînes plus puissante. |
Améliorations de l'API de fichiers | Méthodes de lecture et d'écriture de fichiers sous forme de chaînes. | Files.writeString(path, "Hello!"); | Simplifie les opérations sur les fichiers. |
Unicode10 | Prend en charge la dernière norme Unicode. | N / A | Prise en charge des personnages plus complète. |
Enregistreur de vol | Outil de profilage intégré. | N / A | Surveillance améliorée des performances. |
Suppression des modules Java EE et CORBA | Modules Java EE et CORBA supprimés. | N / A | JDK simplifié. |
Déprécier les outils et l'API Pack200 | Outils de compression et API Pack200 obsolètes. | N / A | Signaler une future suppression. |
Java 11 a introduit de nombreuses fonctionnalités et améliorations qui méritent d'être explorées. Ci-dessous, nous approfondirons chacune de ces nouvelles fonctionnalités, en fournissant des descriptions détaillées, des exemples pratiques et les avantages qu'elles apportent aux développeurs.
Syntaxe de variable locale pour les paramètres Lambda
L'un des ajouts les plus remarquables de Java 11 est la prise en charge de var
mot-clé dans les expressions lambda. Cette fonctionnalité simplifie la syntaxe et améliore la lisibilité du code en permettant aux développeurs d'utiliser var
pour déclarer les paramètres formels des expressions lambda implicitement typées.
Exemple:
(var x, var y) -> x + y
Avantages:
- Cohérence: En utilisant
var
dans les paramètres lambda rend le code cohérent avec les déclarations de variables locales, réduisant ainsi la charge cognitive des développeurs.
Client HTTP (standard)
La nouvelle API client HTTP, standardisée dans Java 11, prend en charge à la fois HTTP/1.1 et HTTP/2. Cette API moderne et riche en fonctionnalités facilite l'exécution d'opérations HTTP.
Exemple:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
Avantages:
- API moderne : Offre un moyen plus puissant et flexible de gérer les requêtes et les réponses HTTP.
- Performance améliorée: Prend en charge HTTP/2, qui peut améliorer les performances avec des fonctionnalités telles que le multiplexage.
Epsilon : un éboueur sans opération
Java 11 introduit Epsilon, un garbage collector sans opération qui ne récupère pas de mémoire. Ceci est particulièrement utile pour les tests de performances et l’évaluation de la pression de la mémoire.
Exemple:
java -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -Xmx2g MyApp
Avantages:
- Test de performance: Aide à l'analyse comparative et aux tests de performances en supprimant la surcharge de garbage collection.
- Gestion de la mémoire: Utile dans les scénarios où l'allocation de mémoire est gérée en externe.
Contrôle d'accès basé sur Nest
Le contrôle d'accès basé sur Nest dans Java 11 simplifie les règles d'accès pour les types imbriqués, permettant une meilleure encapsulation et un meilleur contrôle d'accès au sein des classes imbriquées.
Exemple:
public class OuterClass {
private static class NestedClass {
private void nestedMethod() {
System.out.println("Inside NestedClass");
}
}
}
Avantages:
- Encapsulation améliorée : Fournit un meilleur contrôle sur l’accès des membres de la classe imbriquée.
- Performance: Améliore les performances en simplifiant les règles de contrôle d’accès.
Constantes de fichier de classe dynamique
L'introduction de CONSTANT_Dynamic
dans le pool de constantes permet des constantes plus flexibles et plus efficaces dans les fichiers de classe.
Avantages:
- Coût réduit: Réduit le coût et les limitations associés à la création de nouveaux types de constantes de fichier de classe.
- La flexibilité: Fournit des moyens plus dynamiques et flexibles de gérer les constantes dans le bytecode Java.
Améliorations de l'API de chaîne
Java 11 apporte plusieurs améliorations à String
classe, y compris de nouvelles méthodes comme lines()
, strip()
, stripLeading()
, stripTrailing()
, repeat(int)
, et isBlank()
.
Exemples:
String multiline = "line1\nline2\nline3";
multiline.lines().forEach(System.out::println);
String text = " hello ";
System.out.println(text.strip()); // "hello"
System.out.println(text.stripLeading()); // "hello "
System.out.println(text.stripTrailing()); // " hello"
System.out.println("=".repeat(5)); // "====="
Avantages:
- Manipulation puissante des chaînes : De nouvelles méthodes offrent des moyens plus puissants et plus pratiques de manipuler les chaînes.
- Propreté du code : Simplifie les opérations de chaîne courantes, conduisant à un code plus propre et plus lisible.
Améliorations de l'API de fichiers
Le Files
la classe en Java 11 inclut de nouvelles méthodes comme readString(Path)
et writeString(Path, CharSequence)
pour lire et écrire des fichiers sous forme de chaînes.
Exemple:
Path path = Paths.get("file.txt");
Files.writeString(path, "Hello, World!");
String content = Files.readString(path);
System.out.println(content);
Avantages:
- Opérations de fichiers simplifiées : Rend la lecture et l'écriture dans des fichiers plus simples et moins sujettes aux erreurs.
- Productivité améliorée : Réduit le code passe-partout, améliorant ainsi la productivité des développeurs.
Unicode10
Java 11 prend en charge Unicode 10, qui inclut de nouveaux caractères et scripts, garantissant que les applications Java peuvent gérer les derniers caractères internationaux.
Avantages:
- Prise en charge complète des personnages : Fournit un meilleur support pour l’internationalisation et la localisation.
Enregistreur de vol
Java Flight Recorder (JFR) est désormais inclus dans OpenJDK, fournissant un outil puissant pour le profilage et la surveillance des applications Java.
Avantages:
- Suivi de la performance: Aide à diagnostiquer les problèmes de performances en enregistrant des informations détaillées sur l'exécution de l'application.
- Outil intégré : Intégré au JDK, le rendant facilement disponible sans avoir besoin d'outils externes.
Suppression des modules Java EE et CORBA
Java 11 a supprimé les modules Java EE et CORBA, qui étaient obsolètes dans les versions précédentes. Ces API sont désormais disponibles sous forme de bibliothèques distinctes.
Avantages:
- JDK simplifié : Réduit la taille et la complexité du JDK, le rendant plus léger et efficace.
Déprécier les outils et l'API Pack200
Les outils de compression et les API Pack200 sont obsolètes dans Java 11, signalant leur suppression dans une prochaine version.
Avantages:
- Pérennité : Encourage les développeurs à migrer vers des outils de compression plus modernes, en prévision de la suppression éventuelle de Pack200.
Conclusion
Java 11 apporte une multitude de nouvelles fonctionnalités et améliorations qui améliorent les capacités du langage et la productivité des développeurs. De l'API client HTTP moderne aux puissantes améliorations de l'API de chaînes et de fichiers, ces mises à jour font de Java une plate-forme plus robuste et plus efficace. Bien que la suppression de modules obsolètes et l'introduction de nouveaux garbage collectors comme Epsilon montrent clairement l'accent mis sur les performances et la modernisation, les développeurs devraient adopter ces changements pour exploiter tout le potentiel de Java 11.
Tableaux et descriptions détaillées : Pour fournir une compréhension plus complète, vous trouverez ci-dessous des descriptions détaillées et des exemples de certaines fonctionnalités avec des tableaux intégrés :
Tableau des améliorations de l'API String
Méthode | Description | Exemple |
---|---|---|
lines() | Divise la chaîne en lignes. | multiline.lines().forEach(System.out::println); |
strip() | Supprime les espaces de début et de fin. | text.strip() |
stripLeading() | Supprime les espaces de début. | text.stripLeading() |
stripTrailing() | Supprime les espaces de fin. | text.stripTrailing() |
repeat(int) | Répète la chaîne à des reprises données. | "=".repeat(5) |
Les nouvelles fonctionnalités de Java 11 garantissent que les développeurs ont accès à des outils et des API modernes et efficaces, ce qui en fait une mise à niveau essentielle pour tout projet de développement Java.