Java 8 in Aktion
Java 8 in ActionVon Raoul-Gabriel Urma Mario Fusco, Alan Mycroft,
Rezensionen: 29 | Gesamtbewertung: Gut
Ausgezeichnet | |
Gut | |
Durchschnitt | |
Schlecht | |
Schrecklich |
Java 8 in Aktion ist eine klar geschriebene Anleitung zu den neuen Funktionen von Java 8. Das Buch behandelt Lambdas, Streams und funktionale Programmierung. Mit den Funktionsfunktionen von Java 8 können Sie jetzt in kürzerer Zeit präziseren Code schreiben und automatisch von Multicore-Architekturen profitieren. Es ist Zeit zu graben!
Rezensionen
Die Sprache hat für diese Version viele Änderungen erfahren. Wenn Sie in Java 8 geschriebenen Code lesen und Lambdas und Streams nicht kennen, scheint dies eine andere Sprache zu sein als das alte gute Java.
Ich empfehle dieses Buch jedem Programmierer, der sich gerne über die neuen Dinge auf dem Laufenden hält, die Java heutzutage zu bieten hat. Es gibt viele interessante und leicht verständliche Beispiele, die Ihre Lese- und Lernerfahrung reibungslos gestalten.
Ich verwende Java seit dem Jahr 2010 in meinen täglichen Aktivitäten. Dieses Buch hat mich nun in die funktionale Welt mit Java eingeführt, nachdem ich Scala eine Weile verwendet habe. Ich empfehle dieses Buch nachdrücklich Entwicklern, die die funktionale Programmierung verstehen möchten oder denen, die es bereits kennen, aber mit Java 8 auf dem neuesten Stand sein möchten.
Dies ist kein Buch über Java-Programmierung, in dem auch Java 8-Funktionen beschrieben werden.
Es konzentriert sich nur auf die neuen Java 8-Funktionen und die erwartete Java-Programmierung.
Streams und Lambda-Ausdrücke nehmen den größten Teil des Buches ein, aber auch die Standardmethoden der Benutzeroberfläche, die neue Datums- / Uhrzeit-API, Optional und CompletableFuture, werden angemessen behandelt.
Themen werden sanft vorgestellt und umfassend und gründlich diskutiert.
Erst nachdem ich die Kosten für dieses Buch in Polen überprüft hatte, wurde mir klar, dass es für mich nicht klug genug ist, bei einem Jahresabonnement für Safari Books einen riesigen Haufen Totholz zu kaufen.
Ich hatte eine große Lücke in meiner Java-Erfahrung, da ich zu Scala und dann zu anderen Sprachen gewechselt bin. Die meisten von ihnen hatten nichts mit JVM zu tun. Javascript, Ruby, Python, GO ... Sie nennen es, ich wurde dafür bezahlt, dass ich darin geschrieben habe, hauptsächlich dank der Freundlichkeit meiner Arbeitgeber und nicht wegen eines besonderen Bedarfs. Der Hauptgrund, warum ich von Java zu Scala gewechselt bin, war, dass sich letzteres mit viel syntaktischem Zucker und netten FP-Abstraktionen viel sexyer anfühlte, die sich viel näher anfühlten als die Monstrosität, die ich oft in den Java-Projekten sah, an denen ich arbeiten wollte. Habe ich auch erwähnt, dass eine der ersten Programmiersprachen, die ich gelernt habe, LISP war? Funktionale Programmierung war ein großer Teil meiner Ausbildung.
Und nach all den Jahren bemerkte ich eine allmähliche Änderung in der Art und Weise, wie der Java-Code geschrieben wurde, die sich ähnlich wie Scala anfühlte, aber ohne die Komplexität, die er hatte. Insbesondere nachdem ich alle meine Illusionen mit GO verloren hatte, beschloss ich, neues Java auszuprobieren. Ich habe ein bisschen mit Streams und Lambdas gespielt, aber ich konnte weder verstehen, wie sie funktionierten, noch sie effizient nutzen.
Mit diesem Buch konnte ich diese Lücke füllen. Wenn Sie aus Java 6 & 7 kommen, ist dieses Buch ein Muss für Sie. Viele Beispiele, detaillierte Erklärungen mit mehreren Blicken unter dem Deckmantel von JVM.
Das einzige kleine Problem ist, dass Java nach der Änderung der Release-Richtlinie weit von den in diesem Buch beschriebenen Änderungen entfernt war. Schade, dass dieses Buch nicht aktualisiert wird, nachdem jede neue Java-Version GA wurde
Das Buch behandelt die Stream-API und wie sie von Lambdas und Methodenreferenzen profitiert. Mir gefällt, wie es die funktionale Schnittstelle eines Lambda-Ausdrucks basierend auf dem Kontext ableiten kann (siehe Abbildung 3.5 auf Seite 67). Es ist eine interessante Alternative zu dem locker typisierten Ansatz in Groovy.
Ich finde es interessant, wie Streams eine verzögerte Implementierung verwenden und wie ihre Pipelines nachfrageorientiert sind. Es ermöglicht unendliche Streams mit iterierten (nimmt eine UnaryFunction) und generierten (nimmt einen Lieferanten) Variationen. Es macht es jedoch schwieriger, wenn eine Pipeline mehrere Ergebnisse berechnet. Ich konnte keine Rechtfertigung dafür finden, warum es spezielle Versionen für int, long und double gibt, aber für float (oder Byte). Die Verträge für Collector und Spliterator sind recht komplex.
Ich bin nicht daran interessiert, Optional überall zu verwenden, insbesondere angesichts der null-sicheren Dereferenzierungsoperatoren von Groovy. und .*. Es hilft zwar beim Erstellen von Anrufketten, aber die mentale Belastung ist ziemlich hoch. Kombinieren Sie es mit CompleteableFuture und Sie müssen wirklich gründlich darüber nachdenken, was bei jedem Methodenaufruf vor sich geht.
Alle diese neuen APIs sind abhängig viel auf statischen Hilfsmethoden. Ich brauche etwas Übung, um besser zu verstehen, wie man Code verwendet, der sie verwendet.
Ich hatte Hoffnung auf die Flow-API und die reaktive Programmierung, aber es gibt noch viel zu tun. Ich hatte auf etwas gehofft, das näher an ereignisbasierten Modellen liegt, bei denen Verlage und Abonnenten nichts voneinander wissen und wie Sie auch eine zeitliche Entkopplung erreichen können, wenn sie nicht gleichzeitig verfügbar sein müssen.
Ich sehe derzeit keine Notwendigkeit für das Java-Modulsystem.
Die Teile zur funktionalen Programmierung waren interessant, aber ich würde es nicht in Java machen wollen. Funktionale Sprachen handhaben diese Konzepte viel besser. Um Streams gut nutzen zu können, müssen Sie jedoch über reine Funktionen Bescheid wissen und Code ohne Nebenwirkungen schreiben.
Die Autoren sehr verweisen häufig auf vorherige Abschnitte. Nach einer Weile wird es etwas nervig. Aber ich kann sehen, wie hilfreich es sein kann, wenn jemand mitten im Buch anfängt zu lesen und einem bestimmten Thema nachjagt, damit er versteht, woher der aktuelle Kontext kommt.
Der Ton kann manchmal etwas herablassend gegenüber eher theoretischen Ansätzen wie der reinen Mathematik wirken. Es begünstigt definitiv mehr praktische Experimente.
Ein kurzes Zitat, das mir eine Pause gab:
Programmer efficiency is often more important than small differences in execution time. p. 458
Dies ist ein gefährlicher Rat, wenn Sie nicht mehr Kontext angeben. Wie oft wird dieser Code ausgeführt? Wie wichtig ist es, dass der einschließende Code reagiert? Ich bin damit einverstanden, dass in 90% der Fälle die Effizienz des Programmierers gewinnt. Aber Sie dürfen diese anderen 10% nicht aus den Augen verlieren.
Ich beherrsche die Java 8-Funktionen gut, habe also die Teile durchgesehen, die ich bereits kannte (was gut erklärt zu sein schien) - ich habe höchstens mehrere Stunden gebraucht, um sie zu lesen.
Es scheint eine gute Einführung in Java im Funktionsstil sowie in andere neue Funktionen zu sein, die in Java 8 eingeführt wurden.
Ein wesentlicher Teil ist auch dem funktionalen Programmierstil in Java- und Scala-Sprachen sowie den wahrscheinlichen Sprachfunktionen in zukünftigen Versionen gewidmet - diese Teile waren für mich am interessantesten.
Ich wollte unbedingt die Lamda-Funktionen von Java 8 kennenlernen, da es die funktionale Programmierung in objektorientiertem Java einführte. Ich habe nur wenige Online-Kurse zu Java 8 absolviert, obwohl sie gut, aber nicht ausführlich waren.
Dieses fehlende Gefühl ist nach dem Lesen dieses Buches verschwunden. Die Konzepte werden anhand detaillierter Beispiele klar erläutert, indem auch das zugrunde liegende Design und die zugrunde liegenden Klassen angegeben und erläutert werden.
Dieses Buch enthält auch die Umgestaltung des Legacy-Codes auf Java 8, was besonders hilfreich ist, wenn Sie an einem Legacy-Java-Projekt arbeiten.
Die Übungen sind herausfordernd genug, um Ihr Lernen in die Praxis umzusetzen. Ich kann dies nur empfehlen, wenn Sie ein solides Verständnis der Java 8-Funktionen wünschen.
Meine einzige (geringfügige) Beschwerde ist, dass das Buch manchmal etwas ausführlich ist. Ich fand, dass ein wenig ironisch, wenn man bedenkt, dass ein großer Vorteil von Lambdas darin besteht, die Ausführlichkeit im Code zu verringern.
Dieses Buch wird nicht für jemanden empfohlen, der sein Abenteuer gerade mit dem Programmieren beginnt. Es ist gut, einige Java-Kenntnisse zu haben, bevor Sie nach diesem Buch greifen.
Liebte es
Die Kapitel sind tatsächlich so angeordnet, dass Sie immer das Gefühl haben, mehr lesen zu wollen. Wenn Sie ein erfahrener Java-Entwickler sind, werden Sie überrascht sein, wie schnell Sie dieses Buch fertigstellen und jeden einzelnen Teil davon genießen werden.
Ein großes Lob an die Autoren und ihren Schreibstil, ich habe ihren Stil bewundert und werde ihnen natürlich folgen, um mehr Bücher zu lesen, die von irgendjemandem von ihnen geschrieben wurden.
Wenn es jedoch um etwas komplexere Themen geht, können Sie meiner Meinung nach an anderer Stelle bessere Erklärungen finden. Zum Beispiel wurde das Thema Methodenreferenzen von Venkat Subramaniam in einem Online-Vortrag besser erklärt. (also wahrscheinlich auch in seinem Buch)
Die Beispiele hätten besser sein können. Sie waren langweilig und sehr uninteressant.
Eigentlich ist dies kein Buch, das Sie von Anfang bis Ende lesen werden. Sie können jedoch in Java 8 nach neuen Konzepten suchen (z. B. nach Optionen, Programmierung im funktionalen Stil, Streams usw.). Auch wenn Java 9 voraussichtlich in einem Jahr herauskommt, können Sie dieses Buch in Zukunft verwenden, um die hier vorgestellten Konzepte zu verstehen.
Dieses Buch behandelt die wichtigsten Java 8-Funktionen und bietet gute Vergleiche mit Softwaremustern und anderen "Trend" -Sprachenprogrammen.
Es behandelt die neuen Inhalte von Java 8 (wie Streams und Lambdas) und einige von Java 9 (wie die Flow / Reactive-Schnittstelle). Es macht einen guten Job bei Streams und Lambdas, scheint aber bei der reaktiven Schnittstelle etwas zu kurz zu kommen, vielleicht weil es nur eine Schnittstelle ist, obwohl ich fand, dass die Beispiele in einigen Punkten etwas fehlen, wie zum Beispiel die drei Schnittstellen, Subscriber , Abonnement und Herausgeber, zeigt jedoch Beispiele ohne den Herausgeber. Ein bisschen schlimmer (IMHO) ist, dass, um ein Beispiel zu erstellen, anstatt einige Daten zu veröffentlichen, ein generischer Herausgeber von fortlaufenden Nummern angezeigt wird, in dem er den tatsächlichen Herausgeber aufruft.
Außerdem scheinen die Autoren etwas zu begeistert von Lambdas zu sein. Selbst wenn der Code weniger lesbar wird - insbesondere in den Flow-Beispielen - verwenden sie immer noch Lambdas. Sie sind so begeistert, dass das Beispiel eines für Die Konvertierung in einen Stream wird mindestens viermal angezeigt.
Es gibt zu viele "wie folgt"; es gibt zu viele "im nächsten Abschnitt" kurz vor dem nächsten Abschnitt; Es gibt zu viele Wiederholungen, die nicht da sein sollten.
Auch hier ist der Inhalt gut, aber der Text ist schrecklich.