Heim  >  Artikel  >  Java  >  Java 9 – die ultimative Funktionsliste

Java 9 – die ultimative Funktionsliste

伊谢尔伦
伊谢尔伦Original
2016-11-25 10:24:211268Durchsuche

Dieser Artikel wird synchron basierend auf den neuen Funktionen von Java 9 aktualisiert, die bald veröffentlicht werden (letzte Aktualisierung: 9.9.2014)

Beschleunigen Sie die Entwicklung von OpenJDK: Nach der Veröffentlichung von Java 8 im März 2014. Wir treten in den nächsten zweijährigen Veröffentlichungszyklus ein. Die Veröffentlichung von Java 9 wird für 2016 erwartet, und gleichzeitig wurde eine frühe Liste im JEP (JDK Improvement Proposal) angekündigt haben einige neue Funktionen in der JSR (Java Specification Request) organisiert. Es wird auch vorgeschlagen, dass einige andere Funktionen in die neue Version aufgenommen werden.

Diese wichtigen Funktionen sind im Jigsaw-Projekt enthalten. Zu den wesentlichen Leistungsverbesserungen und lang erwarteten APIs gehören: Prozess-API-Updates, JSON wird Teil von java.util, Währungsverarbeitungs-API. Für Sie, die auf dem neuesten Stand der Technik sein möchten, sind hier frühe Versionen von Java 9 verfügbar 🎜>

Dieser Artikel wird basierend auf den neuen Funktionen von Java 9 kontinuierlich aktualisiert. Bleiben Sie dran!

1. Jigsaw-Projekt; modularer Quellcode

Das Jigsaw-Projekt besteht darin, Java-Code zu modularisieren und JRE in Komponenten aufzuteilen, die miteinander zusammenarbeiten können von Java 9 eins. JEP ist der erste von vier Schritten in Richtung Jigsaw und ändert nichts an der tatsächlichen Struktur von JRE und JDK. JEP wurde entwickelt, um den JDK-Quellcode zu modularisieren und es dem Build-System zu ermöglichen, Module zu kompilieren und Modulgrenzen zur Build-Zeit zu überprüfen. Dieses Projekt wurde ursprünglich mit Java 8 veröffentlicht, wird aber aufgrund von Verzögerungen zu Java 9 hinzugefügt.

Sobald es abgeschlossen ist, können die Komponenten möglicherweise an die Anforderungen eines Projekts angepasst werden, wodurch die Größe von rt reduziert wird .Krug . Es gibt etwa 20.000 Klassen im rt.jar-Paket von JDK 7 und JDK 8, aber viele davon werden in bestimmten Umgebungen nicht verwendet (obwohl einige Lösungen in der kompakten Verteilungsfunktion von Java 8 enthalten sind). Es besteht Quasi-Redundanz ). Dies geschieht, um Java einfacher auf kleine Computergeräte (z. B. Netzwerkgeräte) anwendbar zu machen, seine Sicherheit und Leistung zu verbessern und es Entwicklern außerdem einfacher zu machen, diese Klassenbibliotheken zu erstellen und zu warten.

 Mehr JEP 201-Inhalte

 2. Vereinfachte Prozess-API

Bisher ist die Fähigkeit von Java, Systemprozesse zu steuern und zu verwalten, begrenzt. Um nun beispielsweise einfach die Prozess-PID Ihres Programms zu erhalten, müssen Sie entweder ein natives Programm aufrufen oder selbst eine Problemumgehung verwenden. Darüber hinaus erfordert jede (System-)Plattform eine andere Implementierung, um sicherzustellen, dass Sie die richtigen Ergebnisse erhalten.

Es wird erwartet, dass der Code Linux PIDS erhalten kann. Jetzt lautet er wie folgt:

public static void main(String[] args) throws Exception
{
    Process proc = Runtime.getRuntime().exec(new String[]{ "/bin/sh", "-c", "echo $PPID" });
  
    if (proc.waitFor() == 0)
    {
        InputStream in = proc.getInputStream();
        int available = in.available();
        byte[] outputBytes = new byte[available];
  
    in.read(outputBytes);
    String pid = new String(outputBytes);
  
    System.out.println("Your pid is " + pid);
    }
}
In Java 9 kann er wie folgt umgewandelt werden (unterstützt alle Betriebssysteme). :

System.out.println("Your pid is " + Process.getCurrentPid());
Dieses Update erweitert die Fähigkeit von Java, mit dem Betriebssystem zu interagieren: Es werden neue, unkomplizierte Methoden für den Umgang mit PIDs, Prozessnamen und -zuständen, die Aufzählung mehrerer JVMs und Prozesse und vieles mehr hinzugefügt.

 3. Lightweight JSON API

Derzeit gibt es eine Vielzahl von Java-Tools zur Verarbeitung von JSON, aber die Einzigartigkeit der JSON API besteht darin, dass die JSON API Teil der Java-Sprache sein wird, Lightweight und nutzt die neuen Funktionen von Java 8. Es wird zusammen im java.util-Paket veröffentlicht (aber der JSON in JSR 353 wird mit Paketen von Drittanbietern oder anderen Methoden verarbeitet).

**Codebeispiele werden später aufgeführt!

 4. Geld- und Währungs-API

Nachdem Java 8 die Datums- und Uhrzeit-API eingeführt hatte, führte Java 9 eine neue Währungs-API ein, um Währungen darzustellen und verschiedene komplexe Operationen durchzuführen Weitere Informationen zu diesem Projekt finden Sie unter https://github.com/JavaMoney. Dort finden Sie Anweisungen und Beispiele. Hier einige wichtige Beispiele:

//新的类型: Money & FastMoney
  
Money amt1 = Money.of(10.1234556123456789, "USD"); // Money is a BigDecimal
FastMoney amt2 = FastMoney.of(123456789, "USD"); // FastMoney is up to 5 decimal places
Money total = amt1.add(amt2);
// 钱表达成各国货币的方法:
  
MonetaryAmountFormat germanFormat = MonetaryFormats.getAmountFormat(
Locale.GERMANY);
  
System.out.println(germanFormat.format(monetaryAmount)); // 1.202,12 USD
5. Verbessern Sie den Sperrkonfliktmechanismus

Sperrenkonflikte sind ein Engpass, der die Leistung vieler Java-Multithread-Anwendungen einschränkt. Während des Tests wurden neue Mechanismen verwendet, um die Leistung von Java-Objektmonitoren zu verbessern Der Kommunikationsserver öffnete eine große Anzahl von Prozessen, um eine Verbindung zum Client herzustellen, von denen viele dieselbe Ressource beanspruchten, um tägliche Anwendungen mit hoher Auslastung zu simulieren.

Durch Stresstests wie diesen können wir den endgültigen Durchsatz der JVM (Anzahl der Nachrichten pro Sekunde) in 22 verschiedenen Tests abschätzen. Wenn ja, ist die Leistung von Die Anwendung wird erheblich verbessert.

6. Code-Segmentierungs-Caching

Eine weitere Leistungsverbesserung von Java 9 ergibt sich aus dem JIT-Compiler (Just-in-Time), wenn ein bestimmter Codeabschnitt verwendet wird Wird wiederholt ausgeführt, kompiliert die virtuelle Maschine den Code in Maschinencode (nativen Code) und speichert ihn im Code-Cache. Anschließend verbessert sie die Effizienz des Compilers, indem sie auf verschiedene Codesegmente im Cache zugreift.

Im Gegensatz zum ursprünglichen Einzel-Cache-Bereich ist der neue Code-Cache entsprechend dem Lebenszyklus des Codes selbst in drei Typen unterteilt:

- Permanenter Code (in JVM integrierter/nicht methodischer Code)

– Kurzfristiger Code (profilierter Code, der nur unter bestimmten Bedingungen gilt)

– Langfristiger Code (nicht profilierter Code)

Die Cache-Fragmentierung erfolgt zu jedem Zeitpunkt Um die Leistung des Programms zu verbessern, können Sie beispielsweise beim Garbage-Collection-Scannen Nicht-Methodencode (permanenten Code) direkt überspringen und so die Effizienz verbessern.

 7. Intelligente Java-Kompilierung, die zweite Stufe

Die erste Phase des intelligenten Java-Kompilierungstools sjavac begann mit dem Projekt JEP 139, mit dem die Kompilierungsgeschwindigkeit von JDK auf Mehrkernprozessoren verbessert werden sollte. Nun ist dieses Projekt in die zweite Phase eingetreten (JEP 199). , mit dem Ziel, sjavac zu verbessern und es zum standardmäßigen universellen Kompilierungstool für Java zu machen, das das aktuelle JDK-Kompilierungstool javac ersetzt

Weitere Inhalte, auf die es sich zu freuen lohnt:

8. HTTP 2.0-Client

Obwohl der HTTP 2.0-Standard noch nicht offiziell veröffentlicht wurde, befindet er sich in der letzten Überprüfungsphase und wird voraussichtlich vor der Veröffentlichung von Java 9 abgeschlossen sein. JEP 110 wird neu definiert und implementiert ein neuer Java-HTTP-Client, der die aktuelle HttpURLConnection ersetzt und auch HTTP 2.0 und Websockets implementiert. Er ist noch nicht offiziell von JEP anerkannt, aber wir hoffen, dieses Projekt in Java 9 aufzunehmen.

Offizieller HTTP 2.0 RFC (Anfrage für Kommentare, offizielle technische Diskussion / Sitzungsprotokolle usw.) sollte im Februar 2015 veröffentlicht werden. Es basiert auf dem von Google veröffentlichten SPDY-Protokoll (Speedy, Fast). Das auf dem SPDY-Protokoll basierende Netzwerk hat 11,81 % im Vergleich zu Netzwerk basierend auf dem HTTP 1.1-Protokoll zu einer erheblichen Geschwindigkeitssteigerung von 47,7 %, und jetzt gibt es Browser, die dieses Protokoll implementiert haben

9. Kulla-Projekt: Javas REPL-Implementierung

Dieses Projekt heißt Kulla hat kürzlich angekündigt, dass es im April 2015 integrierte Tests geben wird. Obwohl es keine Hoffnung gibt, mit der Veröffentlichung von Java 9 Schritt zu halten, kann es sein, dass es bei schnellen Fortschritten einfach aufholen wird. Es gibt kein offizielles REPL (Read-Eval-Print). -Loop) für Java, das heißt, wenn Sie ein paar Zeilen Java-Code ausführen möchten, um einen schnellen Test durchzuführen, müssen Sie diese Codezeilen immer noch in einem Projekt oder einer Methode kapseln REPL-Tools in einigen beliebten IDEs, es gibt keine offizielle Unterstützung, und das Kulla-Projekt wird möglicherweise eine offiziell veröffentlichte REPL-Lösung für Java

Mehr über das Kulla-Projekt

Woher kommen diese neuen Funktionen? kommen von?

JEP und JSR sind nicht aus dem Nichts entstanden. Hier ist eine Einführung in die ökologische Umgebung der Java-Entwicklung:

Gruppe – Organisationen und Einzelpersonen mit gemeinsamen Interessen an bestimmten technischen Inhalten. wie Sicherheit, Netzwerk, Swing, HotSpot

Projekte – Schreiben von Code, Dokumentation und anderen Arbeiten, die von mindestens einer Gruppe gesponsert und unterstützt werden, wie zum Beispiel das aktuelle Lambda-Projekt, Jigsaw-Projekt und Sumatra-Projekt.

JDK Improvement Proposal (JEP) – Wann immer ein neuer Versuch erforderlich ist, kann JEP vor oder gleichzeitig mit JCP (Java Community Process) eine informelle Spezifikation vorschlagen. Diese wird offiziell in die genehmigte JEP JDK-Entwicklungs-Roadmap geschrieben und zugewiesen Versionsnummern.

Java Specification Proposal (JSR) – Spezifikationen für neue Funktionen erscheinen in dieser Phase und können von Gruppen/Projekten, JEP-, JCP-Mitgliedern oder dem Vorschlag der Java-Community (Community) stammen Wird vom entsprechenden JSR unterstützt, Java 9 ist noch nicht verfügbar


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn