Painful Java Puzzlers and Bug Patterns

With experience based on Java Programming Puzzlers (previously presented with Joshua Bloch), looking at thousands of coding mistakes found by FindBugs, and working with students and developers writing Java code for over 15 years, I'll discuss some common Java coding puzzlers and bug patterns, and techniques you can use to avoid them. While inexperienced developers can be particularly subject to many of these mistakes, they also occasionally bite experienced developers. Many of them are puzzlers, in the sense that they are hard to detect in code reviews, exhibit surprising behavior, and hard to debug. I'll avoid esoteric puzzlers that are largely a theoretical possibility, and focus on real bugs that occur with a distressing frequency in real code, illustrated by examples from current open source software. The talk will be accessible and value both to those new to the Java programming language and those with more than a decade of experience.