Ich habe in den letzten zwei Jahren Front-End-Entwicklung mit TypeScript durchgeführt. Ich habe die serverseitige Entwicklung mit Java durchgeführt, aber die letzte Version, die ich verwendet habe, war Java 7. Java 9 wurde im September 2017 veröffentlicht und scheint völlig zurückgelassen zu sein, also von Java 7 auf Java 9 Ich werde versuchen, die geänderten Punkte sofort nachzuholen.
Java 8 wurde im März 2014 veröffentlicht. Java 8 bietet präzisere Funktionen zum Schreiben von Code wie Lambda-Ausdrücke und die Stream-API. Neu in Java 8 ist, dass der Code intelligenter und Java etwas ausgefeilter ist.
Java kann endlich Lambda-Ausdrücke verwenden.
java7
//Verwenden Sie eine anonyme Klasse
Arrays.sort(array, new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
return s1.getAge() - s2.getAge();
}
});
In Java8 können Sie mit dem Pfeiloperator wie folgt schreiben. Es gibt viele Möglichkeiten, einen Lambda-Ausdruck zu schreiben, aber ich werde ihn hier weglassen.
java8
//Der Lambda-Ausdruck kann verwendet werden
Arrays.sort(array, (s1, s2) -> s1.getAge() - s2.getAge());
Sie können auch eine Methode definieren, mit der der Benutzer einen Lambda-Ausdruck verwenden kann, indem Sie eine Methode schreiben, die eine Funktionsschnittstelle als Argument verwendet.
Stream API Eine praktische API für die Handhabung von Arrays usw. wurde hinzugefügt. Die Verarbeitung, die für usw. bis Java 7 verwendet wurde, kann nun in der Methodenkette kurz beschrieben werden.
java7
String[] list = new String[] {
"ABC", "CDE", "EFG"
};
//Verwenden Sie Java7 als Anweisung
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 Optional ist eine API für den guten Umgang mit Nullen. Sie können null umbrechen und schreiben, was zu tun ist, wenn es null sein könnte.
Beispielsweise bis Java 7 der Code, der wie folgt auf Null geprüft wurde
java7
String str1 = "hoge";
if (str1 != null) {
System.out.println(str1);
}
Wenn Sie Optional verwenden, können Sie wie folgt ordentlich schreiben.
java8
Optional<String> str2 = Optional.ofNullable("hoge");
str2.ifPresent(x -> System.out.println(x));
Auch der folgende Code
java7
String str1 = "hoge";
if (str1 != null) {
System.out.println(str1);
} else {
System.out.println("Null");
}
Sie können es ordentlich wie folgt schreiben.
java8
String str2 = Optional.ofNullable("hoge").orElse("Null");
System.out.println(str2);
Date and Time API In java8 wurde ein neues java.time-Paket hinzugefügt und verschiedene Klassen für die Behandlung von Datum und Uhrzeit basierend auf ISO8601 wurden hinzugefügt. Die Mindest-APIs, an die Sie sich erinnern sollten, sind:
Neue API | Überblick |
---|---|
LocalDateTime | Datum und Uhrzeit ohne Zeitzone |
ZonedDateTime | Datum und Uhrzeit mit Zeitzone |
DateTimeFormatter | Formatierer. Entspricht SimpleDateFormat |
interface Sie können jetzt eine Standardimplementierung für die Schnittstelle festlegen. Sie können Methoden und statische Methoden wie folgt schreiben. Die Standardmethode kann in der Implementierungsklasse überschrieben werden.
java8
public interface IDefaultSample {
default void Print(String value) {
System.out.println(value);
}
public static void Hello() {
System.out.println("hello");
}
}
Bis zu Java7 war es eine Annotation, die nur zum Deklarieren von Klassen und Methoden verwendet werden konnte, jedoch von Java8 Es kann jetzt auch für Typen (von Variablen und Generika) verwendet werden.
Als nächstes folgen die Änderungen von Java8 zu Java9. Die vielleicht größte Neuerung ist die Modularisierung. Darüber hinaus scheint es viele funktionale Verbesserungen zu geben.
Es ist jetzt möglich, Abhängigkeiten, öffentliche Einstellungen, Versionseinstellungen usw. in Einheiten festzulegen, die als Module bezeichnet werden, indem mehrere Klassen zusammengefasst werden.
Es scheint, dass Sie ein Modul einfach definieren können, indem Sie eine Datei mit dem Namen "module-info.java" schreiben. Ich habe auf das Programm in [hier] verwiesen (http://openjdk.java.net/projects/jigsaw/quick-start).
Deklarieren Sie in module-info.java das zu veröffentlichende Modul und das zu veröffentlichende Paket wie folgt. Hier wird festgelegt, dass das Paket org.astro durch Deklarieren des Moduls org.astro veröffentlicht wird.
** Beschreibung der Erklärung ** --module: Deklaration des Moduls --exports: Geben Sie die zu veröffentlichenden Pakete an
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";
}
}
Im Folgenden werden die abhängigen Module angegeben. Weil das com.greetings-Modul das org.astro-Modul in seiner inneren Klasse verwendet Diese Erklärung ist erforderlich.
** Beschreibung der Erklärung **
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());
}
}
Details finden Sie unter hier.
JShell Die jshell, eine REPL von Java, ist installiert. REPL soll ** R ** (Lesen) lesen, ** E ** (Auswerten) auswerten und ** P ** (Drucken) Ausgabe ** L ** (Schleife) wiederholen. Einige sind in anderen Sprachen enthalten.
Um es zu verwenden, übergeben Sie den Pfad an das JDK oder gehen Sie zum JDK und führen Sie den Befehl jshell aus.
Jetzt können Sie die Java-Syntax sofort wie folgt ausführen: Ich kann mir nicht viele Verwendungszwecke vorstellen, aber es könnte ein guter Ort sein, um ein wenig Code auszuprobieren.
Zu den in Java8 hinzugefügten Funktionen können jetzt private Methoden hinzugefügt werden, mit denen Standardmethoden und statische Methoden in der Schnittstelle beschrieben werden können.
Die Methoden takeWhile und dropWhile wurden der in java8 hinzugefügten Stream-API hinzugefügt.
Reactive Streams Ein Framework, das das Publish / Subscribe-Modell übernimmt, wurde hinzugefügt, um asynchrone Streams zu realisieren. Es wird ausführlich in diesem Artikel von ITpro erläutert.
Es enthält viele andere Änderungen, aber dieses Mal haben wir uns beeilt, die wichtigsten Änderungen zu sehen.
Recommended Posts