Alles, was Sie über Java 8 gehört haben, dreht sich um Lambda -Ausdrücke. Aber es ist nur ein Teil von Java 8. Java 8 hat viele neue Funktionen - einige leistungsstarke neue Klassen und Syntax und andere Dinge, die von Anfang an haben sollten.
Ich werde 10 wesentliche Funktionen einführen, von denen ich denke, dass sie wissenswert sind. Mindestens ein oder zwei von ihnen werden auch da sein, damit Sie es versuchen können, also beginnen wir!
1. Standardmethode
Eine neu hinzugefügte Funktion der Java -Sprache ist, dass Sie Methodenkörper (als Standardmethoden) zu Methoden von Schnittstellen hinzufügen können. Diese Methoden werden der Klasse implizit hinzugefügt, die diese Schnittstelle implementiert.
Auf diese Weise können Sie vorhandene Bibliotheken neue Funktionen hinzufügen, ohne Ihren Code zu brechen. Dies ist offensichtlich eine Verbesserung. Andererseits verschleiert dies jedoch die Grenzen zwischen Schnittstellen und Klassen, da Schnittstellen zur Definition von Verträgen verwendet werden, während Klassen zur Definition von konkreten Implementierungen verwendet werden. Auf der positiven Seite macht es die Schnittstelle auf elegante Weise intelligenter und vermeidet die Duplizierung und Erweiterung von Bibliotheken. Aber auf der schlechten Seite werden wir später sehen, dass die Schnittstellenmethode dies abfragt und sie in konkrete Klassen umwandelt. Schauer….
2. Prozessabschluss
Ein externer Prozess zu starten ist die Hälfte Ihrer Tätigkeit - wenn der Prozess abfällt, hängt oder 100% CPU verbraucht, müssen Sie zurückgehen und debuggen. Die Prozessklasse ist jetzt mit zwei neuen Methoden ausgestattet, mit denen Sie widerspenstige Prozesse kontrollieren können.
Das erste ist iSalive (), mit dem Sie prüfen können, ob der Prozess noch ausgeführt wird, ohne auf den Vorgang zu warten. Die zweitmächtigere Methode ist Destroyforcible (), mit der Sie Tötungsprozesse erzwingen können, die zeitlich festgelegt sind oder nicht mehr benötigt werden.
3. Stampedlocks
Es gibt jetzt etwas Aufregendes. Niemand mag es, Code zu synchronisieren. Es ist der Schuldige für die Reduzierung des Durchsatzes Ihrer Anwendung (insbesondere skalierbare Anwendungen) oder dazu, dass die Anwendung stärker aufgehängt ist. Trotzdem haben Sie irgendwann keine Wahl.
Es gibt viele Möglichkeiten, den Zugriff auf kritische Ressourcen auf multitHhread -synchrone Weise zu begrenzen. Die berühmtesten davon sind Leseschreiber (ReadWriteLock) und Implementierungen, die sich darauf beziehen. Es reduziert den Ressourcenwettbewerb, indem mehrere Threads auf dieselbe Ressource zugreifen können, aber Threads blockieren, die die Ressource betreiben. Das klingt theoretisch gut, aber in der Tat ist dieses Schloss ziemlich langsam, besonders wenn es eine große Anzahl von Schreibthreads gibt.
HINWEIS: Das Lese-schreiben unterteilt Ressourcenbesucher in zwei Kategorien: Leser und Schriftsteller. Der Leser führt schreibgeschützte Operationen in der Ressource aus, und der Autor kann die Ressource bedienen.
Java 8 führt ein brandneues Leseschloss namens Stampedlock vor. Dieses Schloss ist nicht nur schneller, sondern bietet auch einen leistungsstarken Satz von Optimismus -Schlössern, durch die Sie eine Leserschloss zum Mindestkosten erhalten können, und möchten sogar keine Schreibvorgänge während der Auswahl. Nachdem die Auswahl beendet ist, können Sie das Schloss abfragen, um festzustellen, ob während der Auswahl eine Schreiboperation vorliegt. In diesem Fall können Sie auswählen, ob Sie es erneut versuchen, das Schloss aktualisieren oder aufgeben können.
Dieses Schloss ist ein sehr leistungsfähiges Werkzeug und braucht einen speziellen Artikel, um es zu beschreiben. Ich war so aufgeregt über dieses neue Ding, dass ich schwindelig und gut gemacht war!
Weitere Informationen finden Sie hier hier
4. Gleichzeitige Addierer
Dies ist ein weiteres kleines Baby für diejenigen, die in Multithread -Anwendungen arbeiten. Dies ist eine einfache und effiziente neue API für Multithread -Zähler, die schneller ist als die Verwendung von Atomicinder. So verdammt cool!
5. Optionale Werte
Oh, Nullzeiger, ein Albtraum für alle Java -Entwickler. Von Anfang an (oder zumindest 1965) war es wahrscheinlich die beliebteste Ausnahme.
Java 8 zeichnet aus Skala und Hashell und hat eine neue Vorlage, die als optional bezeichnet wird, um Referenzen zu verkörpern, die möglicherweise null sind. Es ist keineswegs eine Silberkugel, NULL zu beenden. Es ist eine Möglichkeit, den API -Designer aus der Codeebene (anstatt der Dokumentstufe) anzugeben, dass ein Nullwert in eine Methode übergeben oder aus einer Methode zurückgegeben wird, um den Anrufer auf den Nullwert vorzubereiten. Daher kann dies nur unter der neuen API funktionieren, und unter der Annahme, dass der Anrufer der Referenz nicht der Einkapselung entkommen lässt, die zu unsicheren Derervordern führt.
Ich muss sagen, ich bin sehr in Konflikt mit dieser Funktion. Einerseits gibt es ein großes Problem mit Null, also tende ich dazu, alles gut zu machen, bevor Null passiert. Andererseits bezweifle ich, dass es Erfolg haben wird. Dies liegt daran, dass die Verwendung optional ständig Anstrengungen des gesamten Unternehmens erfordert, aber keinen direkten Wert hat. Wenn es nicht entscheidend ist, wird es wahrscheinlich aufgegeben.
Weitere Informationen zu optional finden Sie hier
6. Annotieren Sie alles
Eine weitere kleine Java -Sprachverbesserung ist, dass Anmerkungen jetzt zu fast allem in Ihrem Code hinzugefügt werden können. In der Vergangenheit konnten Anmerkungen nur der Klasse oder der Methodenerklärung hinzugefügt werden. Anmerkungen mit Java 8 können zu Variablen- und Parameterdeklarationen hinzugefügt werden, nicht nur, wenn Sie einen Wert an einen bestimmten Typ weitergeben, sondern auch beim Zuweisung von Speicherplatz an ein neues Objekt. Dies ist Teil der Java -Sprache, die freundlicher und fokussierter (zusammen mit Java -Dokumentationstools und API -Verbesserungen) durch statische Analyse- und Assistenten -Tools wie Findbugs gestaltet werden. Dies ist ein großartiges Merkmal, aber eher eine Sache wie invocedynamic, die in Java 7 eingeführt wurde, und ihr wahrer Wert ist das, was die Community damit macht.
7. Überlaufoperation
Hier finden Sie hier eine Reihe von Methoden, die von Anfang an in die Kernbibliothek aufgenommen werden sollten. Eine meiner Lieblingsgewohnheiten ist es, Überflüsse zu debuggen, wenn int 2^32 überschreitet und dann weiterhin zufällig diesen berüchtigten Fehler erzeugt (z. B. "Wie habe ich diesen seltsamen Wert bekommen?").
Diesmal gibt es keine Silberkugel, aber es gibt eine Reihe von Funktionen, die Zahlen bedienen, die Ausnahmen auswirken, wenn Überlauf auf eine Weise auftritt, die toleranter ist als der Standard +/* -Operator, der implizit Überlauf verursacht. Wenn es mich wäre, würde ich es als Standardmodus des JVM einstellen, das explizite Funktionen verwendet, die Arithämetik -Überfluss (eher die ARA -Operatorin).
8. Ordnertraversal
Der Inhalt von Iterating -Verzeichnisbäumen ist bei Google -Suchanfragen sehr früh erscheinen (in diesem Fall können Sie Apache.fileutils verwenden). Java 8
10 neue Methoden für Dateien hinzugefügt. Mein Favorit ist Walk (), der einen faulen Stream (wichtig für große Dateisysteme) erstellt, um zu iterieren
Inhalt der Verzeichnisstruktur.
9. Starke Zufallszahlengenerierung
Das heutige Gespräch über die Verwundbarkeit von Passwörtern und Schlüssel ist ein Muss. Programmsicherheit ist ein schwieriges Problem und es ist einfach, Fehler zu machen. Das mag ich auch
Der Grund für die neue Methode für Securerandom.getInstancestong (), mit der automatisch den stärksten Zufallszahlengenerator in JVM auswählen kann. Es reduziert sich
Die Chancen eines Generatorausfalls oder eines schwachen Generators werden standardmäßig erhalten, was zu einer Wahrscheinlichkeit führt, dass der Schlüssel- oder Verschlüsselungswert leicht geknackt wird.
10. Datum.Toinstant ()
Java 8 führt eine brandneue Datumszeit -API vor. Da die vorhandene API nicht gut ist, ist dies ziemlich verständlich. Jetzt hat Joda seit vielen Jahren die Java -Datumspflicht -API konzentriert und eingedrungen. Trotz der neuen API gibt es immer noch ein großes Problem - es gibt unzählige Code und Bibliotheken, die die alte API verwenden.
Wir alle wissen, dass wir uns mit diesem Problem stellen. Was sollen wir also tun?
Da Java 8 ziemlich elegant gemacht wurde, wurde eine neue Methode zuinstant () zur Datumsklasse hinzugefügt, um sie in eine neue API umzuwandeln. Selbst wenn Sie die alte Datum -API (gleiche Zeit in absehbarer Zeit) können Sie schnell auf die neue API aufrüsten.
Was ist Ihrer Meinung nach der Artikel andere Merkmale, die nicht erwähnt werden sollten, oder stimmen Sie unserer Analyse nicht einig? Bitte kommentieren Sie uns - dies ist der Zweck des Postens!
Das obige ist eine Zusammenstellung der Informationen zu den neuen Funktionen von Java 8. Wir werden in Zukunft weiterhin relevante Informationen hinzufügen. Vielen Dank für Ihre Unterstützung für diese Website!