Bücher

Buchtipp: Java Performance

Tam Hanna

©Shutterstock / AdresiaStock

Ein alter – und durchaus bösartiger – Kalauer besagt, dass Algorithmik eine Wissenschaft für all jene ist, denen zum Kaufen von mehr Arbeitsspeicher das Geld fehlt. O’Reilly bietet nun ein Buch an, das sich auf die Optimierung von Java-Applikationen fokussiert.

Wie so viele andere Wissenschaftsbereiche der Informatik ist auch die Performanceoptimierung ein zutiefst holistisches Fachgebiet. Das erste Kapitel stellt deshalb den Komplex der Systemperformance als Ganzes vor, während man sich danach Fragen und Überlegungen zur Durchführung von Mikrobenchmarks im Allgemeinen zuwendet. Das einfache Anwerfen eines Testkommandos reicht in der heutigen, von Caches, Softwareoptimierungen und anderen Nettigkeiten getriebenen Welt nämlich nicht mehr aus, um zuverlässige Informationen zu erhalten.


Auf dieser soliden theoretischen Grundlage kann man Experimente mit Benchmark-Werkzeugen durchführen. Dem Java-Programmierer stehen dabei nicht nur die in der JRE enthaltenen, sondern auch auf Betriebssystemebene und in Framework-Form vorliegenden Werkzeuge zur Disposition.

Darauf folgt wieder ein theoretisches Kapitel, das sich mit dem JIT-Compiler auseinandersetzt. Java-Code wird schon seit langer Zeit nicht interpretiert, sondern zur Laufzeit in Maschinencode umgewandelt. In diesem übrigens auch in virtuellen Maschinen implementierten Verfahren findet sich die eine oder andere Optimierungsmöglichkeit – lobenswert ist, dass das Werk auch auf die Vergangenheit eingeht, um einen kompletten Überblick über Probleme und Lösungsmöglichkeiten zu geben.

Experimente mit Java im Embedded-Bereich lieben es geradezu, auf der aufgrund der Garbage Collection systembedingt nicht deterministischen Reaktionszeit herumzuhämmern. Das vorliegende Buch widmet diesem Themenkreis gleich zwei Kapitel, um sich danach zu den Themen Speicher am Heap und Speicher vom Betriebssystem auszulassen. Die Themenauswahl ist balanciert, schreckt aber nicht davor zurück, dem Leser tiefergehende Informationen zur technischen Informatik der Probleme anzubieten.

Dieser Trend setzt sich auch in den Kapiteln zur Thread-Synchronisation und zur Arbeit mit Datenbanken fort – dass man auf rund 30 Seiten keine Kompletterklärung der Datenbankoptimierung unterbringen kann, sollte allerdings aus der Logik folgen. Das Kapitel zu Java-basierten Servern geht unter anderem auf NIO ein – da auch in JSON nicht unerhebliches Optimierungspotenzial steckt, darf sich der Leser auch auf Informationen zu diesem Thema freuen.

Zu guter Letzt gibt es noch zwei Kapitel mit allgemeinen Hinweisen zum Java API und mit einer Liste von Tuning Flags zur „Feinjustierung“ des Verhaltens der JVM. Insbesondere Ersteres ist lesenswert, da es kaum einen Funktionsbereich der Klassenbibliothek gibt, in dem man nicht etwas Performance herausholen kann – das Buch beschränkt sich nicht auf low-hanging Fruits wie die Stringverarbeitung.

Als der Rezensent vor vielen Jahren seine Karriere im IT-Bereich startete, war O’Reilly für fachlich exzellente Werke mit großem Tiefgang bekannt. Das vorliegende Werk knüpft an diese (lobenswerte) Tradition an: Wer den Text zur Gänze durcharbeitet, hat danach einen exzellenten Überblick über das Thema Java-Performance. Der Preis ist in Anbetracht des Gebotenen geradezu lächerlich gering. Besitzer der ersten Auflage sollten den Nachfolger ebenfalls erwerben, da er auf die seit Java 8 angefallenen Neuerungen detailliert eingeht.

Scott Oaks

Java Performance

In-Depth Advice for Tuning and Programming Java 8, 11, and Beyond

450 Seiten, 37,95 EuroO’Reilly, 2020ISBN: 978-1492056119

Geschrieben von
Tam Hanna
Tam Hanna
Tam Hanna befasst sich seit der Zeit des Palm IIIc mit der Programmierung und Anwendung von Handcomputern. Er entwickelt Programme für diverse Plattformen, betreibt Onlinenewsdienste zum Thema und steht unter tamhan@tamoggemon.com für Fragen, Trainings und Vorträge gern zur Verfügung.
Kommentare

2
Hinterlasse einen Kommentar

avatar
4000
1 Kommentar Themen
1 Themen Antworten
0 Follower
 
Kommentar, auf das am meisten reagiert wurde
Beliebtestes Kommentar Thema
1 Kommentatoren
benneq Letzte Kommentartoren
  Subscribe  
Benachrichtige mich zu:
benneq
Gast
benneq

„Java-Code wird schon seit langer Zeit nicht interpretiert“. Ganz großer Blödsinn. Es hängt von der jeweiligen JVM und den Einstellungen ab, was, wann und ob überhaupt etwas in nativen Code übersetzt wird. Ganz einfaches Gegenbeispiel: Fast(?) alle JVMs werden niemals Methoden in nativen Code übersetzen, wenn die Methode zu viele Parameter hat und/oder aus zu vielen Anweisungen besteht. Und generell arbeitet fast(?) jede handelsübliche JVM (also nicht sowas wie native code generation mit GraalVM) erst mal ausschließlich als Interpreter, bis dann irgendwann mal die heißen Methoden identifiziert wurden, die erst dann in nativen Code übersetzt werden. Und auch dann kann… Read more »

benneq
Gast
benneq

Oder ist mit „Java-Code“ der eigentliche Source Code gemeint? Der wurde im Grunde noch nie interpretiert. Mama Sun hat Java zusammen mit der JVM auf die Welt gebracht. Falls nicht der Source Code gemeint ist, sollte man wohl lieber ByteCode schreiben, dann trifft oben gesagtes wieder voll und ganz zu. Im Halbsatz danach ist von Maschinencode die Rede. Hier stellt sich auch wieder die Frage, ob damit der Maschinencode für die virtuelle Maschine gemeint ist (also der ByteCode) oder wirklich der Code, der auf der CPU ausgeführt wird. Im falle des ByteCodes wäre der Satz aber inhaltlich falsch, weil der… Read more »