Je fais du développement front-end avec TypeScript depuis deux ans. J'avais l'habitude de faire du développement côté serveur en utilisant Java, mais la dernière version que j'ai utilisée était Java 7. Java 9 est sorti en septembre 2017, et il semble qu'il soit complètement laissé pour compte, donc de Java 7 à Java 9 Je vais essayer de rattraper les points modifiés à la fois.
Java 8 est sorti en mars 2014. Java 8 ajoute des fonctionnalités d'écriture de code plus concises telles que les expressions lambda et l'API Stream. La nouveauté de Java 8 est que le code est plus intelligent et Java est un peu plus sophistiqué.
Java est enfin capable d'utiliser des expressions lambda.
java7
//Utiliser une classe anonyme
Arrays.sort(array, new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
return s1.getAge() - s2.getAge();
}
});
Dans Java8, vous pouvez écrire à l'aide de l'opérateur de flèche comme suit. Il existe de nombreuses façons d'écrire une expression lambda, mais je vais l'omettre ici.
java8
//L'expression Lambda peut être utilisée
Arrays.sort(array, (s1, s2) -> s1.getAge() - s2.getAge());
Vous pouvez également définir une méthode qui permet à l'utilisateur d'utiliser une expression lambda en écrivant une méthode qui prend une interface de fonction comme argument.
Stream API Une API pratique pour gérer les tableaux, etc. a été ajoutée. Les traitements utilisés pour etc. jusqu'à Java 7 peuvent maintenant être décrits de manière concise dans la chaîne de méthodes.
java7
String[] list = new String[] {
"ABC", "CDE", "EFG"
};
//Utilisez Java7 pour l'instruction
String target = "";
for (String str : list) {
if (str.contains("C")) {
target += str;
}
}
java8
Optional<String> result = Arrays.stream(list).filter(s -> s.contains("C")).reduce((v1, v2) -> v1 + v2);
Optional Une API est facultative pour bien gérer les valeurs nulles. Vous pourrez encapsuler null et écrire ce qu'il faut faire s'il peut être nul.
Par exemple, jusqu'à Java 7, le code dont la valeur null a été vérifiée comme suit
java7
String str1 = "hoge";
if (str1 != null) {
System.out.println(str1);
}
Si vous utilisez Facultatif, vous pouvez écrire proprement comme suit.
java8
Optional<String> str2 = Optional.ofNullable("hoge");
str2.ifPresent(x -> System.out.println(x));
En outre, le code suivant
java7
String str1 = "hoge";
if (str1 != null) {
System.out.println(str1);
} else {
System.out.println("nul");
}
Vous pouvez l'écrire proprement comme suit.
java8
String str2 = Optional.ofNullable("hoge").orElse("nul");
System.out.println(str2);
Date and Time API Dans java8, un nouveau package java.time a été ajouté, et diverses classes de gestion de la date et de l'heure basées sur ISO8601 ont été ajoutées. Les API minimales à retenir sont:
Nouvelle API | Aperçu |
---|---|
LocalDateTime | Date et heure sans fuseau horaire |
ZonedDateTime | Date et heure avec fuseau horaire |
DateTimeFormatter | Formateur. Équivalent à SimpleDateFormat |
interface Vous pouvez maintenant avoir une implémentation par défaut pour l'interface. Vous pouvez écrire des méthodes et des méthodes statiques comme suit. La méthode par défaut peut être remplacée dans la classe d'implémentation.
java8
public interface IDefaultSample {
default void Print(String value) {
System.out.println(value);
}
public static void Hello() {
System.out.println("hello");
}
}
Jusqu'à java7, c'était une annotation qui ne pouvait être utilisée que pour déclarer des classes et des méthodes, mais à partir de java8 Il peut désormais également être utilisé pour les types (de variables et de génériques).
Viennent ensuite les changements de java8 à java9. Le plus gros ajout est peut-être la modularisation. De plus, il semble y avoir de nombreuses améliorations fonctionnelles.
Il est maintenant possible de définir des dépendances, des paramètres publics, des paramètres de version, etc. dans des unités appelées modules en regroupant plusieurs classes.
Il semble que vous puissiez facilement définir un module en écrivant un fichier appelé "module-info.java". J'ai fait référence au programme dans ici.
Dans module-info.java, déclarez le module et le package à publier comme suit. Ici, il est configuré pour publier le package org.astro en déclarant le module org.astro.
** Description de la déclaration ** --module: Déclaration du module --exports: spécifiez les packages à publier
java:src/org.astro/module-info.java
module org.astro {
exports org.astro;
}
java:src/org.astro/org/astro/World.java
package org.astro;
public class World {
public static String name() {
return "world";
}
}
Voici comment spécifier les modules dépendants. Parce que le module com.greetings utilise le module org.astro dans sa classe interne Cette déclaration est obligatoire.
** Description de la déclaration ** --Requires: Spécifiez le module dépendant
java:src/com.greetings/module-info.java
module com.greetings {
requires org.astro;
}
java:src/com.greetings/com/greetings/Main.java
package com.greetings;
import org.astro.World;
public class Main {
public static void main(String[] args) {
System.out.format("Greetings %s!%n", World.name());
}
}
Les détails peuvent être trouvés à ici.
JShell Le jshell, qui est une REPL de java, est installé. REPL consiste à lire ** R ** (Lire), évaluer ** E ** (Eval) et répéter ** P ** (Imprimer) la sortie ** L ** (Boucle). Certains sont inclus dans d'autres langues.
Pour l'utiliser, transmettez le chemin d'accès au JDK ou accédez au JDK et exécutez la commande jshell.
Vous pouvez maintenant exécuter immédiatement la syntaxe Java comme suit: Je ne peux pas penser à beaucoup d'utilisations, mais cela pourrait être un bon endroit pour essayer un peu de code.
Des méthodes privées peuvent maintenant être ajoutées aux fonctions ajoutées dans java8 qui permettent de décrire les méthodes par défaut et les méthodes statiques dans l'interface.
Les méthodes takeWhile et dropWhile ont été ajoutées à l'API Stream ajoutée dans java8.
Reactive Streams Un Framework qui adopte le modèle Publish / Subscribe a été ajouté pour réaliser des flux asynchrones. Il est expliqué en détail dans cet article d'ITpro.
Il contient beaucoup d'autres changements, mais cette fois, nous nous sommes précipités pour voir les changements majeurs.
Recommended Posts