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-APIBisher 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); } }
System.out.println("Your pid is " + Process.getCurrentPid());
//新的类型: 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
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