JavaRush /Java-Blog /Random-DE /Java 12 ist da: Was ist neu?

Java 12 ist da: Was ist neu?

Veröffentlicht in der Gruppe Random-DE
Java erschien also auf Platz 12. Und obwohl dies keine LTS-Version ist (d. h. keine Langzeitunterstützung, keine Version, die für lange Zeit unterstützt wird. Version 11 gilt als die erste LTS-Version mit einer acht- Jahr Supportzeitraum ), erschienen interessante Dinge in den Updates. Schauen wir uns die wichtigsten davon an. Denken Sie daran, dass Änderungsvorschläge in Java als jeps (von JDK Enhancement Proposal) abgekürzt werden. Java 12 ist da: Was ist neu?  - 1

Das interessanteste JDK 12 von Jep

189: Shenandoah: Ein Garbage Collector mit geringer Pausenzeit (experimentell) Der Garbage Collector, Shenandoah, verwendet einen neuen Algorithmus, der die Laufzeit verkürzt, indem er gleichzeitig mit der Ausführung von Java-Threads bereinigt. In diesem Fall ist die Pausenzeit in Shenandoah unabhängig von der Größe des Heaps gleich. Aus irgendeinem Grund hat Oracle Sheandoah nicht in seine „offiziellen“ Release-Builds aufgenommen, obwohl die Entwickler diese Funktion als eine der wichtigsten in der neuen Version betrachten. Wenn Sie also vorhaben, den erweiterten Garbage Collector auszuprobieren, müssen Sie Builds von Drittanbietern wie Azul verwenden . 230: Microbenchmark Suite Microbenchmark ist ein Mikrobenchmark, der die Leistung eines kleinen Elements misst. In Java werden sie mithilfe des JMH-Frameworks geschrieben und ausgeführt. Seit Version 12 wurde JMH zum JDK hinzugefügt und es sind bereits Tests darin geschrieben, was Entwicklern das Leben erleichtert. 325: Switch-Ausdrücke (Vorschau) Eine neue Form des Schreibens eines Ausdrucks mit einer Switch-Anweisung. Die Funktionsseite bietet Beispielcode für die Verwendung herkömmlicher Switches, wobei die ständige Verwendung von break den Code unnötig ausführlich macht, was zu häufigen zufälligen Fehlern führt.
switch (day) {
    case MONDAY:
    case FRIDAY:
    case SUNDAY:
        System.out.println(6);
        break;
    case TUESDAY:
        System.out.println(7);
        break;
    case THURSDAY:
    case SATURDAY:
        System.out.println(8);
        break;
    case WEDNESDAY:
        System.out.println(9);
        break;
}
Die Autoren des Updates schlagen vor, eine neue Form der Schalterbezeichnung „case L ->“ einzuführen, um deutlich zu machen, dass nur der Code rechts von der Bezeichnung ausgeführt wird, wenn diese Bezeichnung geeignet ist. Somit kann der oben gezeigte Code durch die neue Syntax deutlich verkürzt werden:
switch (day) {
    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);
}
334: JVM Constants API Der Konstantenpool enthält sogenannte ladbare Konstanten. Dies sind Werte, beispielsweise vom Typ String oder einem beliebigen primitiven Typ, sowie Laufzeitartefakte wie Klassen und Methoden. Bei der Arbeit mit Klassendateien würden Programmierer von praktischen Tools zum Bearbeiten ladbarer Konstanten profitieren. Die Autoren dieses JEP begannen, dieses Problem zu lösen, indem sie neue wertbasierte Typen symbolischer Verknüpfungen einführten, von denen jeder einen bestimmten Typ von Konstanten beschreibt. Innovationskodex . 340: Ein AArch64-Port, nicht zwei Hinter diesem komplexen Namen verbirgt sich eine Lösung für ein Problem, das in Java 9 auftrat, als gleichzeitig 64-Bit-ARM-Ports von Oracle und aarch64 von Red Hat im Kit auftauchten. Darüber hinaus unterstützte bereits zum Zeitpunkt der Veröffentlichung von JDK 11 nicht einmal Oracle selbst die 64-Bit-Version der Oracle-Ports. Jetzt wurden die 64-Bit-Oracle-Ports entfernt, sodass 32-Bit-ARM32 und das produktivere 64-Bit-aarch64 übrig bleiben. 341: Standard-CDS-Archive Ein sehr schönes Update, da es den Anwendungsstart wirklich beschleunigt. Es ist kein Geheimnis, dass beim Start einer Java-Anwendung eine große Anzahl von Klassen geladen wird, und das ist ein ziemlich langwieriger Prozess. CDS steht für Class Data Sharing und diese Funktion ermöglicht es Ihnen, alle diese beim Start gestarteten Klassen in ein spezielles Klassendaten-Sharing-Archiv zu packen und dabei die Standardliste dieser Klassen zu verwenden. Dadurch erhöht sich die Geschwindigkeit des Anwendungsstarts erheblich. 344: Abortable Mixed Collections für G1 G1 ist ein Garbage Collector, der in JDK 9 zum Haupt-Garbage Collector wurde und Parallel GC ersetzte. In Java 10 hat G1 gelernt, Müll in mehreren Threads zu sammeln. Allerdings waren nicht alle mit seiner Arbeit zufrieden; eines der Hauptprobleme waren lange Pausen. Jetzt können sie storniert werden. G1 bestimmt auf der Grundlage einer Analyse des Programmverhaltens den Arbeitsaufwand und sammelt dann „lebende“ Objekte in einem Sammlungssatz, bis alles gesammelt ist, ohne anzuhalten. Häufig hat G1 die Berechnung des Arbeitsaufwands versäumt und zu lange gearbeitet. Sobald jep-344 implementiert ist, kann G1 zur inkrementellen Garbage Collection wechseln und wenn der nächste Schritt länger als sinnvoll dauert, kann dieser Schritt abgebrochen werden. 346: Ungenutzten, zugesicherten Speicher umgehend von G1 zurückgeben Und noch ein paar Updates im Lager des oben genannten G1-Assemblers. Manchmal kam es vor, dass es eine Menge Java-Heap-Speicher gab, aber niemand nutzte ihn, diesen Speicher. In Java 12 können Sie nun inaktiven Speicher an das Betriebssystem „zurückgeben“. Früher kam es sehr selten vor, dass G1 Speicher aufgab, aber jetzt wurde alles vereinfacht. Mit der neuen Funktion wird die Anwendung als inaktiv definiert, wenn das Intervall seit dem letzten Build abgelaufen ist und kein gleichzeitiger Zyklus vorhanden ist. Eine andere Situation liegt vor, wenn die seit einiger Zeit überwachte Funktion getloadavg() eine Auslastung unterhalb des eingestellten akzeptablen Schwellenwerts anzeigt. Wenn eines von zwei Ereignissen eintritt, beginnt die teilweise Garbage Collection. Was Java 12 nicht hat: Rohe String-Literale Viele Entwickler waren an dieser Funktion interessiert, aber sie erschien in dieser Version nie. Die Autoren kamen zu dem Schluss, dass noch Arbeit nötig sei. Wir wagen also zu hoffen, dass in einer der nächsten Java-Versionen eine Funktion zum komfortablen Arbeiten mit String-Literalen erscheinen wird. Durch die Unterstützung roher String-Literale können Sie unabhängig von der Sprache mit String-Informationen arbeiten. Dadurch entfällt die Notwendigkeit einer Abschirmung. Besonders nützlich in regulären Ausdrücken, wo Backslashes häufig verwendet werden, und im Windows-Pfad, wo Backslashes als Trennzeichen verwendet werden. Das heißt, um solche Konstruktionen zu vermeiden: C:\\My\\Test\\Pack\\
Jeder Programmierer stößt bei seiner Arbeit oft auf die eine oder andere Schwierigkeit. Manchmal hängen sie mit der Unerfahrenheit des Entwicklers zusammen, manchmal aber auch mit der Unvollkommenheit des Tools selbst. Java ist eine großartige Sprache, aber alles andere als perfekt. Vielleicht ist Ihnen in Java schon etwas aufgefallen und Sie wissen, was Sie an Ihrem „Werkzeug“ (Sprache) ändern möchten? Teilen Sie es in den Kommentaren!

Schlussfolgerungen

In Java 12 gab es keine Revolution. Allerdings hat es niemand geplant. Eine Reihe von Neuerungen zielen jedoch darauf ab, den Betrieb von Anwendungen zu optimieren und die Arbeit zu beschleunigen, was eine gute Nachricht ist. IDEA unterstützt übrigens bereits JDK 12, sodass Sie seine Fähigkeiten ausprobieren können. Natürlich wirken sich nur wenige Updates direkt auf Anfänger aus, obwohl auch diejenigen, die gerade erst mit dem Erlernen von JavaRush begonnen haben, mit dem neuen Schalter spielen können (nachdem das Flag --enable-preview gesetzt wurde).
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION