Dieser Artikel beschreibt die Funktionen von ** Java ** Version 8 und höher aus Entwicklersicht und beschreibt, wie Entwickler sie verwenden können, um die Leistung zu verbessern.
Von Leijuan, Senior Technical Expert der Alibaba Group
Programmiersprachen wie Python und JavaScript werden immer beliebter. Die ehemals dominierende Sprache Java bleibt jedoch trotz des Verlusts an Gunst an der Spitze der verschiedenen Ranglisten der wichtigsten Programmiersprachen. Java bleibt die Sprache Nummer eins für die Anwendungsentwicklung für Mainstream-Unternehmensanwendungen. Seit dem Start von Java 8 hat Java viele nützliche neue Sprachfunktionen und Tools eingeführt, um die Leistung zu verbessern. Viele Programmierer haben jedoch kein Upgrade auf Java 8 oder eine spätere Version für die Entwicklung durchgeführt. Aus Entwicklersicht beschreibt dieser Artikel Java-Sprachfunktionen in Java 8 und späteren Versionen.
Erstens ist Java 8 für die meisten Java-Programmierer wohl eine bahnbrechende Version. Die bekanntesten Funktionen sind Stream- und Lambda-Ausdrücke, die eine funktionale Programmierung ermöglichen und Java aktivieren. Genau aus diesem Grund sind viele Cloud-Anbieter seit langem aktiv und unterstützen Java 8 hervorragend, obwohl Oracle die Aktualisierung eingestellt hat.
Installation des Alibaba Cloud SDK für Java
Viele Programmierer haben für die Entwicklung kein Upgrade auf eine spätere Version als Java 8 durchgeführt. Daher behandeln wir spätere Versionen von Sprachfunktionen. Dieser Artikel konzentriert sich auf die Entwicklung und überspringt Garbage Collections (GCs), Compiler, Java-Module und Plattformen. Diese Themen können in anderen Artikeln behandelt werden. Die folgenden Funktionen spielen beim Schreiben von Code eine Rolle:
Mit Java 13 werden in Kürze alle Java-Versionen von Java 9 bis Java 13 abgedeckt. Java-Versionen wurden optimiert, je nach Version wurde eine Vorschau eingeführt, und dann werden Verbesserungen und Verbesserungen basierend auf dem Feedback der Benutzer vorgenommen. In diesem Artikel wird nicht speziell darauf hingewiesen, welche Version welche Funktion hat. Sie können sich dies jedoch als eine Mischung aus Funktionen aller Versionen von Java 8 und höher vorstellen. Die Quelle dieses Artikels ist eine detaillierte Einführung in jede Java-Version im Abschnitt "Features and Pluralsight" der offiziellen Java-Website.
Java unterstützt Generika, aber wenn der Typ die Länge nicht wirklich interessiert, verwenden Sie das Schlüsselwort var. Dies vereinfacht Ihren Code erheblich. Die Java-IDE funktioniert perfekt mit var, sodass Sie sich nicht oft mit Code-Hinweisen befassen müssen.
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));
Kopieren Sie die confd-Datei in das bin-Verzeichnis und starten Sie confd.
sudo cp bin/confd /usr/local/bin
confd
In der Praxis werden einige kleine Einschränkungen erwartet, z. B. das Zuweisen eines Werts zu einem Nullwert. Dies sind jedoch keine großen Probleme, sodass Sie sofort loslegen können.
Das Aufrufen von Systembefehlen in Java ist selten. Natürlich verwenden Sie dafür meistens Process Builder. Eine weitere Funktion ist die Verbesserung des Prozesshandles, mit der die Aktualisierungsinformationen anderer Prozesse abgerufen werden können. ProcessHandle ist nützlich, um den Startbefehl und die Startzeit aller Prozesse, eines bestimmten Prozesses usw. abzurufen.
ProcessHandle ph = ProcessHandle.of(89810).get();
System.out.println(ph.info());
Haben Sie noch keine ArrayList oder HashSet mit der neuen Methode erstellt? Sie können zu spät sein. Verwenden wir die Factory-Methode direkt.
Set<Integer> ints = Set.of(1, 2, 3);
List<String> strings = List.of("first", "second");
Es ist nicht möglich, alle neuen APIs hier aufzulisten, aber mit einigen wichtigen APIs können Sie die StringUtils von Drittanbietern entfernen. Die folgenden APIs sind repeat, isEmpty, isBlank, strip, line, indent, transform, trimIndent, formatiert.
Es ist einfacher, OkHTTP 3 zu verwenden, aber wenn Sie keine anderen Entwicklungspakete möchten und sich an HTTP 2 halten möchten, ist das in Ordnung. Java unterstützt HTTP 2 und unterstützt sowohl synchrone als auch asynchrone Programmiermodelle. Auch der Code ist grundsätzlich der gleiche.
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());
In früheren Versionen mussten Sie lange Sätze eingeben und doppelte Anführungszeichen vermeiden. Die Lesbarkeit wird schlechter. Zum Beispiel:
String jsonText = "{"id": 1, "nick": "leijuan"}";
Neue Methode des Textblocks:
//language=json
String cleanJsonText = """
{"id": 1, "nick": "leijuan"}""";
Es ist viel einfacher, nicht wahr? Sie müssen sich keine Gedanken darüber machen, doppelte Anführungszeichen zu vermeiden oder Kopien zu teilen und zu konvertieren, indem Sie sich auf das Schreiben von Code konzentrieren.
Warten Sie eine Minute, was wird die // language = json
hinzugefügt, bevor cleanJsonText? Dies ist eine Funktion von IntelliJ IDEA und die Textblöcke sind semantisch. Wenn Sie Ihrem HTML-, JSON- oder SQL-Code // language = json
hinzufügen, erhalten Sie sofort einen Code-Hinweis.
Textblöcke entsprechen auch grundlegenden Vorlagenmerkmalen. Fügen Sie eine Kontextvariable in den Textblock ein und geben Sie% s ein, um die formatierte Methode aufzurufen. Damit ist Ihre Arbeit abgeschlossen.
//language=html
String textBlock = """
<span style="color: green">Hello %s</span>""";
System.out.println(textBlock.formatted(nick));
Mit der Einführung des Schalterpfeils "→" müssen nicht mehr so viele Zeilenumbrüche vorgenommen werden. Der Beispielcode wird unten vorgestellt.
//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);
}
Dies bedeutet, dass der Schalter einen Rückgabewert hat. Der Beispielcode ist unten dargestellt.
//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;
}
};
Die Schlüsselwortausbeute repräsentiert den Rückgabewert des Schalterausdrucks.
Alle diese Funktionen sehen gut aus, aber wie können Sie sie verwenden, während Sie noch in Java 8 arbeiten? Was können wir außer der Berücksichtigung dieser Funktionen noch tun? Bitte mach dir keine Sorgen. Ich habe eine Lösung gefunden.
Dieses Element unterstützt das transparente Kompilieren der gesamten JDK 12+ -Syntax in Java 8-VMs. Mit anderen Worten, das Ausführen dieser Syntaxen unter Java 8 ist kein Problem. Alle diese Funktionen sind auch in der Java 8-Umgebung verfügbar.
Wie kann es also verwendet werden? Es ist alles sehr einfach und leicht.
Laden Sie zunächst das neueste JDK herunter, z. B. JDK 13, und fügen Sie Ihren Abhängigkeiten das Jabel-Java-Plugin hinzu.
<dependency>
<groupId>com.github.bsideup.jabel</groupId>
<artifactId>jabel-javac-plugin</artifactId>
<version>0.2.0</version>
</dependency>
Optimieren Sie dann das Compiler-Plug-In von Maven und stellen Sie die Quelle auf die erforderliche Java-Version ein, z. B. Java 13. Ziele und Releases können auf Java 8 festgelegt werden. IntelliJ IDEA kann automatisch erkannt werden und muss nicht angepasst werden.
<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>
Beginnen wir mit diesen Funktionen eine angenehme Erfahrung.
In diesem Blog haben wir einige der beliebtesten und nützlichsten Funktionen in Java behandelt. Einige nützliche Funktionen, wie z. B. API-Optimierungen, werden in diesem Artikel nicht erwähnt. Sie können es jedoch jederzeit über Blogs und Foren mit unserer Community teilen.
Recommended Posts