Ein neuer Ingenieur ging zu JJUG ~ "Java SE 10 / JDK 10 Release Special Feature" (26.03.2018 (Montag)) ~
Ankündigung des JDK-Release-Modells
Mark Reinhold wird am nächsten Java Day Tokyo zu einem Grundvortrag nach Japan kommen! ..
Die Registrierungsseite wird bald geöffnet!
JDK Überprüfung des neuen Release-Modells
- OpenJDK
- Da das Lizenzmodell GPL ist, kann es kostenlos zur Verfügung gestellt werden.
- Gleicher Inhalt wie Oracle JDK
- Alle 6 Monate veröffentlichen
- Patch Release alle 3 Monate
- OracleJDK
- Nur gegen Gebühr zur Verfügung gestellt
――Die Support-Frist für 1 Version beträgt 8 Jahre
- Veröffentlichung alle 3 Jahre
- Neues Modell wird von JDK11 veröffentlicht
- Lassen Sie uns verhindern, dass das JDK von Open und Oracle getrennt, bezahlt und kostenlos ist und das Release-Modell von JDK11 wechselt.
Vielen Dank für die Inferenz des lokalen Variablentyps JDK10, David Buck
Aktueller Standort
- JDK 9 veröffentlicht am 21. September 2017
- The Java Shell
--jdk10 Kurzzeitversion (Support endet im September dieses Jahres), eine Entwicklungsversion.
--jdk11 veröffentlicht Long Term Support (LTS)
- Aktive Forschung und Entwicklung neuer GC
- Eine hervorragende Sache mit einer Verzögerung von 10 ms, selbst mit einem ZGC 4 TB Heap
- Shenandoah Redhad-Projekt, gleichzeitige Speicherkomprimierung
--Projekt Panama ... Forgin Function Interface Speicherlayout
--Projekt Valhalla Werttyp, generische Spezialisierung
- Lassen Sie uns herausfinden, ob es ein Projekt Loom (Geschirr) usw. gibt.
Inferenz des lokalen Variablentyps
Arraylist<String> list = new ArrayList<>();
Stream<String> stream = list.stream();
//Wird kommen, um so anzurufen
var list = new new ArrayList<>();
var stream = = list.stream();
** Beachten Sie, dass die Typinferenz nicht dynamisch typisiert wird !!! **
Warum jetzt?
--java betonte die Lesbarkeit gegenüber der Schreibbarkeit
- In der Vergangenheit gab es viele Zeilenumbrüche
- Var macht es kürzer und leichter zu lesen. Nur die Erklärung verschwindet.
- Gleich für andere Sprachen C ++ ... auto, Scala ... var / val Go ...: =
Warum nur lokale Variablen?
- Der Effekt von Feld- und Methodenargumenten besteht darin, dass sie mehrere Dateien umfassen. Lokale Variablen werden in einer Datei vervollständigt. Ich möchte keine weitere Datei für die Typinferenz sehen.
Wie benutzt man
-
Es gibt verschiedene Einschränkungen außer der Verwendung von var
--Beschränkungen
--Initialisierung ist erforderlich
--Array-Klammern sind nicht verfügbar
-
Niedrige Nummerndeklarationen sind verboten
-
Array wörtlich
-
keine Initialisierung
--Poly-Ausdruck, der nicht aufgelöst werden kann
-
Kann in der Sprache Denotable types () ausgedrückt werden. -> Kann nicht durch Java dargestellt werden
var hogehoge = new Object() {
public void say(){~}
}
hogehoge.say();
Was ist var?
--Reservierte Wörter? Schlüsselwörter?
--const und goto sind reservierte Wörter, aber keine Schlüsselwörter
- Schlüsselwörter ... Ausdrücke, die etwas in der Sprache bedeuten
--Reservierte Wörter ... können nicht verwendet werden
--var kann nicht als Klasse oder Schnittstelle verwendet werden. Erwartet, dass es keine Klasse für ...
- Kann als Variablenname oder Feldname verwendet werden
int var = 1; ... ok
class var {
}... ng
var var = var();Kompilieren Sie Pässe!
Wie codiere ich?
--Veröffentlichter OPEN JDK Style Guide
――Ich schreibe, wann ich var verwenden soll
- Lesbarkeit statt Beschreibbarkeit. Nur bei Verwendung von var verwenden, um das Lesen zu erleichtern
- Wenn Sie mit lokalem Code verstehen können
- Verlassen Sie sich nicht auf Tools wie IDEs, sagen Sie nicht, dass es in Ordnung ist, weil Sie es sehen können, indem Sie mit der Maus schauen!
- Es war ein Kompromiss, den Typ explizit zu deklarieren, und die Richtlinie bestand darin, Lambda-Ausdrücke und keine anonymen inneren Klassen zu verwenden. Diesmal ist es aber nicht der Fall. Das Schreiben aller lokalen Variablen in var ist unterschiedlich
- Wie zu verwenden? Richtlinien
- Verwenden Sie Variablennamen, die nützliche Informationen darstellen
- Begrenzen Sie den Umfang lokaler Variablen
- Erwägen Sie die Verwendung von var, wenn Sie den Typ nur aus der Initialisierung kennen
- Verwenden Sie var, um aufeinanderfolgende Anrufe zu zerlegen (häufig in Stream).
- Sie müssen sich nicht um die Schnittstellenprogrammierung kümmern (Programmierung auf die Schnittstelle)
var List = new ArrayList<>();
- Seien Sie vorsichtig, wenn Sie den Diamantoperator und die generische Methode verwenden.
- Seien Sie vorsichtig, wenn Sie mit Literalen arbeiten.
Andere
- Es gibt nur wenige andere neue Funktionen von Java10, da es kurzfristig ist
--Garbage Collector Interface JIT, GC, HosSpotRuntime JIT und GC waren beteiligt. Das JDK verfügt über separate GC- und JIT-Schnittstellen
- Können Sie für G1 G1 Full GC mit Parallel Full GC verwenden?
--thread local hondshakes Jeder Thread bezieht sich auf sich selbst Wenn Sie einen Thread stoppen möchten, müssen Sie die anderen Threads nicht stoppen.
--jacac -h ... Sie können gleichzeitig mit dem Erstellen einer Klassendatei eine Header-Datei erstellen.
--Zeichencode von de_DE_EURO Deutsch, Euro hinzugefügt
--Günstige Zuordnung auf einem alternativen Speichergerät Ich möchte hier Java für den Speicher verwenden! Usw.?
- Über den JIT-Compiler
NTT OSS Center Yuji Kubota Kishida "Wie wird Java 10 unser Leben verändern?"
Yushi Kubota
Kishida-san
12 neue Funktionen
--Docker verfügt über nützlichere APIs
- Nachteile ... Die Kosten für die Aktualisierung sind hoch
- Bewegen Sie sich und sehen Sie mit Java 10
--Kompilieren Sie mit Java 10
--Versuchen Sie mit jdeps jdeprscan ... Überprüfen Sie, ob Sie die API für interne Angelegenheiten oder die veraltete API verwenden, und korrigieren / aktualisieren Sie sie
Informationssammlung von java10
- Siehe neue Funktion JEP AppCDS @ OpenJDK
--API ändert View JSR
- Siehe die inkompatible Version
--JEP310: Datenfreigabe für Anwendungsklassen Wird für Stapel verwendet, die in großer Anzahl in Containern ausgeführt werden
Kommerzielle Funktionen des Oracle JDK
- AppCDS
- Resource Management
- Java Flight Recorder
- Java Misson Control
- Die vollständige GC von G1 GC, bei der es sich um eine einzelne Thread-Ausführung handelte, ist parallelisiert ... Da dies ein letzter Ausweg ist, ist die Missbrauchssituation selbst nicht gut.
Unvereinbarkeit
--forRemoval = true wird in der nächsten Version oder später entfernt
Verbesserungen für Docker-Container
- Es wurde ein Problem behoben, bei dem Installation und Betrieb basierend auf der Anzahl der CPUs und dem Speicher des Hosts ohne Erkennung des Containers durchgeführt wurden Verbraucht mehr Speicher! Gleiches gilt für die CPU
- Die für Hepi verwendete Systemspeichermenge wurde flexibel gestaltet ... Die Notation wurde in% geändert. Einfach zu verstehen
- Es wurde verbessert, dass vom Host aus Prozesse an den Container angehängt werden können
API
- Add
--java.util.Optional.orElseThrow () ... Ersatz empfohlen
- java.util.{LIST SET MAP} :: copyOf
- Wenn die Argumentensammlung geändert werden kann, kopieren Sie sie und geben Sie die unveränderliche Sammlung zurück. Eine Methode, die die Referenz so zurückgibt, wie sie ist, wenn sie nicht geändert werden kann
--Prozess-ID kann erhalten werden
javadoc
- Die Annotation @Summary wurde erstellt. Die Zusammenfassung wird sicher angewendet.
- Firmennotation, Lizenzanzeige, die per Kopf- und Fußzeile erfolgen kann
- Override-Methoden
--policytool entfernt
--javah hat java -h gelöscht
Das, Eindruck
»Was ich dachte, ich musste mich von nun an erinnern
-
JVM, JIT-Compiler, GC
»Ich dachte, ich muss mich an den Lambda-Ausdruck erinnern
-
Swing und AWT
――Ich konnte das Vertrauen spüren, dass die Sprecher und das Publikum mit Java vertraut sind.
-
Beachten Sie, dass JDK10 nicht sofort freigegeben werden kann und dass Sie sich auf JDK11 vorbereiten sollten.
-
Die Geschichte, einen Fehler in Java JDK 10 zu finden ... Kishida no Hatena
-
Die Produktion sollte immerhin Long Time Record verwenden
-
Sie können zum Fehlerbericht gehen, sobald Sie ihn bei ML eingereicht haben.
――Wenn der Schwellenwert hoch ist, kann es sinnvoll sein, auf Twitter zu twittern.
--java8-> 9 Übertragung ist sehr inkompatibel. Es scheint, dass es ein kompatibles Buch von etwa 350p wurde.
-
Es gibt einen solchen HP JJUG (ich habe zum ersten Mal von Jay Jug erfahren) JJUGs HP
-
IntelliJ https://qiita.com/syu_chan_1005/items/46f94412f7493d6e60eb
-
Vielleicht möchten Sie mehr über Swing und AWT erfahren.
-
Zusammenfassung der neuen Java 10-Funktionen