Cet article décrit les fonctionnalités de ** Java ** depuis la version 8 du point de vue d'un développeur et explique comment les développeurs peuvent les utiliser pour améliorer les performances.
De Leijuan, expert technique principal, Alibaba Group
Les langages de programmation tels que Python et JavaScript sont de plus en plus populaires. Cependant, l'ancien langage dominant, Java, malgré sa perte de faveur, reste en tête des différents classements des principaux langages de programmation. Java reste le premier langage de développement d'applications pour les applications d'entreprise grand public. Depuis le lancement de Java 8, Java a introduit de nombreuses nouvelles fonctionnalités et outils de langage utiles pour améliorer les performances. Cependant, de nombreux programmeurs n'ont pas mis à niveau vers Java 8 ou une version ultérieure pour le développement. Du point de vue du développeur, cet article décrit les fonctionnalités du langage Java dans Java 8 et les versions ultérieures.
Tout d'abord, Java 8 est sans doute une version révolutionnaire pour la plupart des programmeurs Java. Ses fonctionnalités les plus connues sont les expressions stream et lambda, qui permettent la programmation fonctionnelle et activent Java. C'est exactement pourquoi de nombreux fournisseurs de cloud sont actifs depuis longtemps avec un excellent support pour Java 8, même si Oracle a arrêté la mise à jour.
Installation du SDK Cloud d'Alibaba pour Java
De nombreux programmeurs n'ont pas mis à niveau vers une version ultérieure à Java 8 pour le développement, nous couvrons donc les fonctionnalités linguistiques des versions ultérieures. Cet article se concentre sur le développement et ignore les garbage collection (GC), les compilateurs, les modules Java et les plates-formes. Ces sujets peuvent être traités dans d'autres articles. Les fonctionnalités suivantes jouent un rôle dans l'écriture de code:
Avec Java 13 bientôt disponible, toutes les versions de Java de Java 9 à Java 13 sont couvertes. Les versions Java ont été réglées, des aperçus sont introduits en fonction de la version, puis des améliorations et des améliorations sont apportées en fonction des commentaires des utilisateurs. Cet article ne précise pas spécifiquement quelle version a quelle fonctionnalité. Cependant, vous pouvez le considérer comme un mélange de fonctionnalités de toutes les versions de Java 8 et supérieures. La source de cet article est une introduction détaillée à chaque version de Java dans la section «Fonctionnalités et Pluralsight» du site officiel Java.
Java prend en charge les génériques, mais si le type ne se soucie pas vraiment de la longueur, utilisez le mot-clé var. Cela simplifie grandement votre code. L'EDI Java fonctionne parfaitement avec var, vous n'avez donc pas à gérer souvent les conseils de code.
Map<String, List<Map<String,Object>>> store = new ConcurrentHashMap<String, List<Map<String,Object>>>();
Map<String, List<Map<String,Object>>> store = new ConcurrentHashMap<>();
Map<String, List<Map<String,Object>>> store = new ConcurrentHashMap<String, List<Map<String,Object>>>();
//lambda
BiFunction<String, String, String> function1 = (var s1, var s2) -> s1 + s2;
System.out.println(function1.apply(text1, text2));
Copiez le fichier confd dans le répertoire bin et démarrez confd.
sudo cp bin/confd /usr/local/bin
confd
En pratique, de petites restrictions sont attendues, telles que l'attribution d'une valeur à une valeur Null. Mais ce ne sont pas de gros problèmes, vous pouvez donc commencer tout de suite.
L'appel de commandes système en Java est rare. Bien sûr, la plupart du temps, vous utilisez Process Builder pour cela. Une autre fonctionnalité est l'amélioration de Process Handle qui peut obtenir les informations de mise à jour d'autres processus. ProcessHandle est utile pour obtenir la commande de démarrage et l'heure de début de tous les processus, d'un processus spécifique, etc.
ProcessHandle ph = ProcessHandle.of(89810).get();
System.out.println(ph.info());
N'avez-vous pas encore créé une ArrayList ou un HashSet en utilisant la nouvelle méthode? Vous pouvez être en retard. Utilisons directement la méthode factory.
Set<Integer> ints = Set.of(1, 2, 3);
List<String> strings = List.of("first", "second");
Il n'est pas possible de lister toutes les nouvelles API ici, mais avec certaines API importantes, vous pouvez vous débarrasser des StringUtils tiers. Les API suivantes sont repeat, isEmpty, isBlank, strip, line, indent, transform, trimIndent, formatted.
Il est plus facile d'utiliser OkHTTP 3, mais si vous ne voulez pas d'autres packages de développement et que vous voulez vous en tenir à HTTP 2, c'est très bien. Java prend en charge HTTP 2 et prend en charge les modèles de programmation synchrones et asynchrones. De plus, le code est fondamentalement le même.
HttpClient client = HttpClient.newHttpClient();
HttpRequest req =
HttpRequest.newBuilder(URI.create("https://httpbin.org/ip"))
.header("User-Agent", "Java")
.GET()
.build();
HttpResponse<String> resp = client.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.body());
Les versions antérieures vous obligeaient à saisir de longues phrases et à éviter les doubles guillemets. La lisibilité sera pire. Par exemple:
String jsonText = "{"id": 1, "nick": "leijuan"}";
Nouvelle méthode de bloc de texte:
//language=json
String cleanJsonText = """
{"id": 1, "nick": "leijuan"}""";
C'est beaucoup plus simple, non? Vous n'avez pas à vous soucier d'échapper des guillemets doubles ou de partager et de convertir des copies, en vous concentrant sur l'écriture de code.
Attendez une minute, qu'est-ce que le // language = json
a ajouté avant cleanJsonText? Il s'agit d'une fonctionnalité d'IntelliJ IDEA et les blocs de texte sont sémantiques. Ajoutez // language = json
à votre code HTML, JSON ou SQL et vous obtiendrez immédiatement un indice de code.
Les blocs de texte correspondent également aux caractéristiques des modèles de base. Introduisez une variable de contexte dans le bloc de texte et entrez% s pour appeler la méthode formatée. Ceci termine votre travail.
//language=html
String textBlock = """
<span style="color: green">Hello %s</span>""";
System.out.println(textBlock.formatted(nick));
Avec l'introduction de la flèche de commutation "→", il n'est plus nécessaire de faire autant de sauts de ligne. L'exemple de code est présenté ci-dessous.
//legacy
switch (DayOfWeek.FRIDAY) {
case MONDAY: {
System.out.println(1);
break;
}
case WEDNESDAY: {
System.out.println(2);
break;
}
default: {
System.out.println("Unknown");
}
}
//Arrow labels
switch (DayOfWeek.FRIDAY) {
case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
case TUESDAY -> System.out.println(7);
case THURSDAY, SATURDAY -> System.out.println(8);
case WEDNESDAY -> System.out.println(9);
}
Cela signifie que le commutateur a une valeur de retour. L'exemple de code est illustré ci-dessous.
//Yielding a value
int i2 = switch (DayOfWeek.FRIDAY) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
default -> {
yield 10;
}
};
Le mot-clé yield représente la valeur de retour de l'expression de commutateur.
Toutes ces fonctionnalités semblent bonnes, mais comment pouvez-vous les utiliser pendant que vous travaillez encore sous Java 8? Que pouvons-nous faire d'autre en plus de considérer ces fonctionnalités? s'il te plait ne t'inquiète pas. J'ai trouvé une solution.
Cet élément prend en charge la compilation transparente de toute la syntaxe JDK 12+ dans des machines virtuelles Java 8. En d'autres termes, exécuter ces syntaxes sur Java 8 n'est pas un problème. Toutes ces fonctionnalités sont également disponibles dans l'environnement Java 8.
Alors, comment peut-il être utilisé? Tout cela est très simple et facile.
Tout d'abord, téléchargez le dernier JDK, tel que JDK 13, et ajoutez jabel-java-plugin à vos dépendances.
<dependency>
<groupId>com.github.bsideup.jabel</groupId>
<artifactId>jabel-javac-plugin</artifactId>
<version>0.2.0</version>
</dependency>
Réglez ensuite le plug-in du compilateur de Maven et définissez la source sur la version Java requise, telle que Java 13. Les cibles et les versions peuvent être définies sur Java 8. IntelliJ IDEA peut être automatiquement reconnu et n'a pas besoin d'être ajusté.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>13</source>
<target>8</target>
<release>8</release>
</configuration>
</plugin>
Commençons une expérience confortable avec ces fonctionnalités.
Dans ce blog, nous avons couvert certaines des fonctionnalités les plus populaires et les plus utiles de Java. Certaines fonctionnalités utiles, telles que les ajustements d'API, ne sont pas mentionnées dans cet article. Mais vous pouvez toujours le partager avec notre communauté via des blogs et des forums.
Recommended Posts