JDK 12 Release Candidate: Shenandoah, G1, JMH, Arm64. Bugs in Swing schlagen zurück

240 Tage sind seit der Veröffentlichung von JEP 3: JDK Release Process vergangen, und die Höllenmaschine für die Produktion neuer Versionen will nicht aufhören. Es ist also Zeit für den nächsten Release-Kandidaten . Dies ist der Zeitraum, in dem alle Brücken gebrannt sind, Fehler mit P2-P5-Prioritäten bereits nichts bedeuten und die Tage bis zur Veröffentlichung nummeriert sind.



Bugs


Nicht alle Fehler mit der Priorität P1 sind geschlossen. Sie können die vollständige Liste der Probleme im Bugtracker sehen . Und hier erwartet uns das Seltsamste: Alle beziehen sich bei der Verwendung von GTKLookAndFeel ausschließlich auf Swing.



Schon mental gesagt: "Aber was ist los mit diesen Jungs in Swing?" Diesmal sind sie nicht „schuld“. Wenn jemand es nicht weiß, ist Gtk ein kostenloses Toolkit zum Entwickeln grafischer Benutzeroberflächen, insbesondere unter dem GNU / Linux-Betriebssystem für X11 und Wayland.


Ab Gtk 3.20 hat sich die Arbeitsweise mit vielen Stilen und Widgets geändert . Anstelle von Stilklassen und Typnamen werden jetzt Elementnamen verwendet. Gtk 3.20 wurde am 21. März 2016 veröffentlicht und war eine sehr umfangreiche Version - standardmäßig 28933 Commits und Wayland. Im Allgemeinen sah der ganze Gnom etwas anders aus.



Kein Wunder, dass Swing etwas vergessen und nicht testen kann. Ein Teil der Fehler wurde vorrangig auf P2 verschoben und an JDK 13 übertragen. Dieser Fehler über die Tatsache, dass Motif unter MacOS sozusagen weicher ist, ist keine so aktuelle grafische Umgebung mehr:



Es wird lustig sein, wenn jemand wirklich noch Motiv und AWT auf Habré verwendet. Ich hoffe, dass das zwölfte JDK aus diesem Grund nicht abgebrochen wird, da es sonst die epischste Datei in Java in seiner gesamten jungen Neuerscheinungsgeschichte sein wird.


Eigenschaften


JEPs in dieser Liste werden nicht nach Wichtigkeit, sondern ausschließlich nach Seriennummer aufgelistet. Dies ist so, dass Sie nicht plötzlich denken, dass Shenanda und JMH aufgrund persönlicher Sympathien aufgestanden sind.


189: Shenandoah: Ein Müllsammler mit geringer Pause (experimentell)


Es wäre schön, wenn es vor einem Jahr passieren würde und Shenanda in die LTS eintreten würde. Okay, warte - danke dafür. Shenandoah ist ein Low-Pit-Sammler, der aufgrund der Multithread-Evakuierungsphase seine Low-Pit erreicht. Darüber hinaus hängen die Pausen nicht von der Größe der Hüfte ab, sodass Sie die Terabyte-Haufen sicher auf dem Stoß drehen können.


230: Microbenchmark Suite


Dem JDK und JMH selbst wird eine auf JMH basierende Testsuite hinzugefügt. Liegt in jdk/jdk/test/micro/org/openjdk/bench . JMH ist ein Framework zum Erstellen, Zusammenstellen, Ausführen und Analysieren von Mikrobenchmarks für Java und andere JVM-Sprachen, die Sie selbst geschrieben haben und von wem Sie wissen . JMH ist heute der De-facto-Standard für Mikro-Benchmarks, und das Auftreten solcher JEPs ist eine Frage der Zeit.


325: Ausdrücke wechseln (Vorschau)


Anstelle von tausend Beschreibungen:


 int numLetters = switch (day) { case MONDAY, FRIDAY, SUNDAY -> 6; case TUESDAY -> 7; case THURSDAY, SATURDAY -> 8; case WEDNESDAY -> 9; }; 

334: JVM-Konstanten-API


Ziel ist es, eine Reihe von Typen für formale Modellierungsbeschreibungen von Klassen, Methoden und anderen Entitäten in Laufzeit und Klassendatei bereitzustellen und diese auf Hauptklassen wie String oder Class . Sie leben in Paketen wie java.lang.invoke.constant und fragen nicht danach, aber Sie können sich den Patch hier ansehen .


340: Ein AArch64-Port, nicht zwei


Der alte arm64-Port wird in der Kälte weggeworfen, aber der 32-Bit-ARM und aarch64 werden aktiv gesägt. Vielen Dank an RedHat und BellSoft für die Existenz dieser Ports (das BellSoft-Büro befindet sich übrigens in St. Petersburg neben dem ehemaligen Oracle-Büro). Bis zur Veröffentlichung von JDK 12 werden wir versuchen, einen detaillierteren Kommentar von Unternehmensvertretern zu erhalten.


341: Standard-CDS-Archive


Als Feature stand uns CDS lange Zeit zur Verfügung, aber es war unklar, warum Sie jedes Mal, wenn Sie -Xshare:dump schreiben -Xshare:dump selbst -Xshare:dump , wenn das Standardergebnis dieses Befehls selbst in der Phase der Erstellung der JDK-Distribution leicht vorhersehbar ist. Dieses lästige Versehen wird in JDK 12 behoben. Das CDS-Archiv wird von den Erstellern der Distribution auch für Nacht-Builds generiert (vorausgesetzt, sie sind 64-Bit und nativ, nicht für die Cross-Kompilierung).


344: Abbruchfähige gemischte Sammlungen für G1


Diese Funktion wird von den internen Mechanismen des G1-Garbage Collectors benötigt, damit sie häufiger in die Anforderungen für die Dauer der Pause passt. Es kommt also vor, dass Sie feststellen können, wann G1 die Komplexität der Baugruppe immer wieder falsch bewertet, insbesondere für alte Regionen. An diesem Punkt können Sie Angst bekommen und schrittweise mit dem Sammeln beginnen und nach jedem Schritt die Montage unterbrechen. Es wird argumentiert, dass dies eine bessere Anpassung an die erwartete Montagezeit ermöglicht.


346: Nicht verwendeten festgeschriebenen Speicher sofort von G1 zurückgeben


Jetzt gibt G1 den festgeschriebenen Speicher entweder mit vollem GC oder mit paralleler Montage an das Betriebssystem weiter. Sowohl das als auch ein anderer G1 versuchen auf jede erdenkliche Weise zu vermeiden, wofür dank ihm. Dies bedeutet aber auch, dass der Speicher wie an sich verschlungen wird und G1 gezwungen werden kann, den Speicher nur auf externe Weise wieder zu löschen. Dies ist besonders traurig für alle Docker und andere Hipster ohne Terabyte RAM auf dem Server. Stattdessen wird vorgeschlagen, auf die gleiche Weise vorzugehen, wie Shenanda oder GenCon von OpenJ9 bereits wissen, wie eine unzureichende Nutzung des Heapspeichers festgestellt und seine Verwendung entsprechend reduziert werden kann. Bei einigen Tests mit Tomcat konnte der Speicherverbrauch dadurch um fast die Hälfte reduziert werden.


Was weiter


Dies war eine Top-Down-Überprüfung, und wir werden versuchen, eine detaillierte Analyse der Funktionen, die näher an der Veröffentlichung liegen, in Form von separaten Artikeln vorzunehmen - Übersetzungen von JEPs, Screencasts mit Benchmarks oder etwas anderem. Jetzt müssen wir auf die Veröffentlichung warten, die für den 19. März geplant ist.


Minute der Werbung. Sehr bald, vom 5. bis 6. April, wird die JPoint-Konferenz stattfinden, auf der eine große Anzahl von Menschen zusammenkommen wird, die viel über JDK und alle möglichen neuen Funktionen wissen. Zum Beispiel wird es sicherlich Simon Ritter aus Azul geben, der einen Vortrag über „JDK 12: Fallstricke für Unvorsichtige“ hält . Der am besten geeignete Ort, um die neueste Version zu diskutieren! Weitere Informationen zu JPoint finden Sie auf der offiziellen Website .

Source: https://habr.com/ru/post/de440314/


All Articles