Java Puzzlers: Traps, Pitfalls, and Corner Cases
Rezension von Sven Woltmann
In diesem sehr unterhaltsamen Buch decken Joshua Bloch und Neil Gafter, beide Mitentwickler der Java-Plattform, zahlreiche Fallstricke und Eckfälle der Java-Plattform auf.
Das Buch enthält 95 Rätsel in Form eines wenige Zeilen langen, scheinbar trivialen Java-Programms. Die Aufgabe des Lesers besteht darin, vorherzusagen, was das Programm tun wird. Die offensichtliche Antwort ist selten die richtige – und selbst wenn man die Falle erkennt, die die Autoren einem gestellt haben, tappt man oft in eine zweite, noch obskurere Falle.
Zu jedem Rätsel beschreiben die Autoren detailliert die Gründe für das unerwartete Verhalten (mit Verweisen auf die Java Language Specification) und liefern praktische Regeln, um das gezeigte Verhalten von vornherein zu vermeiden.
Einige der Rätsel sind stark konstruiert, um Ausnahmeregelungen aus den Tiefen der Java-Sprachspezifikation greifen zu lassen, mit denen ich in 25 Jahren Java noch kein einziges Mal zu tun hatte. Denn die meisten dieser Kuriositäten treten nicht auf, wenn man sauberen, lesbaren Code ohne „clevere“ Tricks schreibt.
Vielen der Fälle begegnet man jedoch regelmäßig, wie z. B. dem %-Operator, den Eigenheiten vorzeichenbehafteter Integer-Typen, Ungenauigkeiten bei Fließkommazahlen, stillen Überläufen, versteckten (statt überschriebenen oder überladenen) Methoden oder der Initialisierung statischer Klassenvariablen, um nur einige zu nennen.
Jedes einzelne Rätsel ist spannend und lehrreich, und die Erklärungen sind humorvoll und unterhaltsam. Sehr amüsant ist, dass die Namen einiger Rätsel einen Hinweis auf die Lösung geben. Das mindert aber keineswegs den Spaß, denn man merkt es in der Regel erst hinterher beim großen „Aha“-Moment.
Das einzige Manko des Buchs ist, dass es auf dem Stand von Java 5 ist. Einige der Besonderheiten treten in modernen Java-Versionen nicht mehr auf – dafür gibt es sicherlich einige neue.
🎧 Als Hörbuch geeignet? Nein, wegen der zahlreichen Code-Beispiele.
Andere Empfehlungen aus den Genres dieses Buches
Effective Java: Best Practices für die Java-Plattform
Java Concurrency in Practice
Java Generics and Collections
Core Java: Fundamentals (Volume 1)
Core Java: Advanced Features (Volume 2)
Mastering Lambdas: Java Programming in a Multicore World
Spring Boot 3: So geht moderne Java-Entwicklung – Konzepte und Anwendungen
Concurrent Programming in Java: Design Principles and Pattern, 2nd Edition
Get Your Hands Dirty on Clean Architecture: A hands-on guide to creating clean web applications with code examples in Java
Der pragmatische Programmierer: Ihr Weg zur Meisterschaft
Clean Code – Refactoring, Patterns, Testen und Techniken für sauberen Code
Refactoring: Wie Sie das Design bestehender Software verbessern
Clean Craftsmanship: Best Practices, Standards und Ethik für die Softwareentwicklung
The Programmer’s Brain: What Every Programmer Needs to Know About Cognition
Effektives Arbeiten mit Legacy Code. Refactoring und Testen bestehender Software