Änderungen in Java 11

Wechselpunkt

Java 11 wurde am 25. September 2018 veröffentlicht.

Unten ist das JEP in Java 11.

Modell von JDK9 freigeben

Ab JDK9 wurde das Release-Modell alle 6 Monate (März und September) auf Feature-Releases geändert. Darüber hinaus wurden Schwachstellen-Gegenmaßnahmen und Fehlerbehebungen behoben, sodass sie im Januar, April, Juli und Oktober viermal im Jahr verfügbar sind. In Bezug auf die Bereitstellung von Binärdateien Bisher wurden die Binärdateien von Oracle kostenlos zur Verfügung gestellt, aber nach 9 werden die kostenlosen Binärdateien von OpenJDK bereitgestellt. Oracle JDK 9 oder höher wird berechnet. Vor 8 gab es einen technischen Unterschied zwischen Oracle JDK und Open JDK, der jedoch verschwunden ist.

LTS Nach JDK11 wird Oracle JDK alle drei Jahre veröffentlicht. Bezahlter Support für Oracle Bietet Sicherheitsupdates für mindestens 8 Jahre. Darüber hinaus wird es seit JDK11 für Entwicklungs-, Test-, Testproduktions- und Demonstrationszwecke kostenlos zur Verfügung stehen.

Java ist immer noch kostenlos (andere, nicht mit JDK verwandt)

Ein japanisches Dokument namens Java ist immer noch kostenlos, das von Dutzenden von Java-Champions in Bezug auf Java-Unterstützung und -Updates geschrieben wurde, wurde veröffentlicht. Es war.

JEP, das einen großen Einfluss auf die Codierung zu haben scheint

JEP181 Nest-Based Access Control Bis Java10 war der Code, der die private Methode der äußeren Klasse aus der inneren Klasse aufrief, eine seltsame Bytecode-Ausgabe.

Sehen Sie sich den folgenden Code in JDK 10 an.

Outer.java


public class Outer {
    private int i = 0;
    
    public class Inner {
        public int i() {
            return i;
        }
    }
}

Versuchen Sie nach dem Kompilieren, die Klassendatei zu demontieren.

python


$ javap -p -c Outer\$Inner
Compiled from "Outer.java"
public class Outer$Inner {
  final Outer this$0;

  public Outer$Inner(Outer);
    Code:
       0: aload_0
       1: aload_1
       2: putfield      #1                  // Field this$0:LOuter;
       5: aload_0
       6: invokespecial #2                  // Method java/lang/Object."<init>":()V
       9: return

  public int i();
    Code:
       0: aload_0
       1: getfield      #1                  // Field this$0:LOuter;
       4: invokestatic  #3                  // Method Outer.access$000:(LOuter;)I
       7: ireturn
}

Kompilieren Sie als Nächstes denselben Code mit JDK 11 und versuchen Sie, ihn in umgekehrter Reihenfolge zusammenzusetzen.

python


$ javap -p -c Outer\$Inner
Compiled from "Outer.java"
public class Outer$Inner {
  final Outer this$0;

  public Outer$Inner(Outer);
    Code:
       0: aload_0
       1: aload_1
       2: putfield      #1                  // Field this$0:LOuter;
       5: aload_0
       6: invokespecial #2                  // Method java/lang/Object."<init>":()V
       9: return

  public int i();
    Code:
       0: aload_0
       1: getfield      #1                  // Field this$0:LOuter;
       4: getfield      #3                  // Field Outer.i:I
       7: ireturn
}

Für diejenigen, die mit JDK10 kompiliert haben, ruft die Inner-Klasse den statischen Methodenzugriff von Outer auf $ 000 auf. In JDK11 ruft die innere Klasse die äußere Klasse Outer.i direkt anstelle der Zugriffsmethode $ 000 auf.

Ein Video dazu ist auf dem JVM Language Summit 2018 verfügbar.

JEP309 Dynamic Class-File Constants Erweitert das Dateiformat der Java-Klasse, um dynamische Konstanten zu unterstützen. Bis Java10 konnten nur Zeichenfolgen mit Grundelementen und Literalen im Konstantenpool gespeichert werden, andere Zeichenfolgen können jetzt im Konstantenpool verarbeitet werden. Der Vorteil dynamischer Konstanten scheint zu sein, dass sie Ihnen mehr Freiheit in Ihrer Sprache und Ihrem Compiler und mehr Freiheit in Ihrem Bytecode geben.

Ein Video dazu ist auf dem JVM Language Summit 2018 verfügbar.

JEP320 Remove the Java EE and CORBA Modules Die JavaEE- und CORBA-Module wurden entfernt. Ziele sind CORBA, JAXB, JAX-WS, Common Activation Framework und JTA. Diese Proxy-Module sind wie folgt.

Der Grund für das Löschen scheint zu sein, dass der Unterschied in der Entwicklungsgeschwindigkeit nicht mit der Geschwindigkeit von Java SE mithalten kann. Es scheint, dass es in Zukunft als Jakarta EE entwickelt wird.

JEP321 HTTP Client (Standard) Die HTTP-Client-API wurde standardisiert. Unterstützt asynchrones und auch HTTP / 2. Der Modulname lautet java.net.http.

Ein Video dazu wurde veröffentlicht.

JEP323 Local-Variable Syntax for Lambda Parameters Sie können jetzt var mit Lambda-Parametern sowie die in Java 10 eingeführte Inferenz lokaler Variablentypen verwenden. Weitere Anmerkungen können hinzugefügt werden. Ein Video dazu wurde veröffentlicht.

Recommended Posts

Änderungen in Java 11
Änderungen in Mockito 2
Partisierung in Java
Änderungen in mybatis-spring-boot-Starter 2.0
Änderungen im Mybatis-Spring-Boot-Starter 2.1
Änderungen im Mybatis-Spring-Boot-Starter 1.3
Janken in Java
Änderungen im Mybatis-Spring-Boot-Starter 1.2
Umfangsrate in Java
FizzBuzz in Java
Lesen Sie JSON in Java
Interpreter-Implementierung durch Java
Machen Sie einen Blackjack mit Java
Janken App in Java
Einschränkungsprogrammierung in Java
Setzen Sie Java8 in Centos7
Änderungen von Java 8 zu Java 11
NVL-artiger Typ in Java
Verbinden Sie Arrays in Java
"Hallo Welt" in Java
Aufrufbare Schnittstelle in Java
Azure funktioniert in Java
Formatieren Sie XML in Java
Einfache HTML-Spezialchars in Java
Boyer-Moore-Implementierung in Java
Hallo Welt in Java
Verwenden Sie OpenCV mit Java
WebApi-Memorandum mit Java
Typbestimmung in Java
Befehle in Java ausführen (Ping)
Verschiedene Threads in Java
Implementierung der Heap-Sortierung (in Java)
Zabbix API in Java
ASCII-Kunst in Java
Listen in Java vergleichen
POST JSON in Java
Fehler in Java ausdrücken
Erstellen Sie JSON in Java
Datumsmanipulation in Java 8
Was ist neu in Java 8?
Änderungen in JUnit5M4-> M5
Verwenden Sie PreparedStatement in Java
Was ist neu in Java 9,10,11
Parallele Ausführung in Java
Versuchen Sie es mit RocksDB mit Java
Lesen Sie Binärdateien in Java 1
Holen Sie sich EXIF-Informationen in Java
[Neta] Sleep Sort in Java
Java-Geschichte in dieser Welt
Segfo Java in 6 Zeilen
Versuchen Sie, JavaScript in Java aufzurufen
Lassen Sie uns Spresense mit Java entwickeln (1)
Probieren Sie den Funktionstyp in Java aus! ①
Ich habe ein Roulette in Java gemacht.
Refactoring: Machen Sie Blackjack in Java
Schreiben Sie Flyway-Rückrufe in Java
Themenanalyse (LDA) in Java