I've reviewed a few other Java game programming books and they're pretty much all stinkers. This one is head and shoulders and feet above the others. And it assumes you know at least some Java and don't have to be hand-held through a dozen chapters of the language basics before they think you're competent enough to get a peek at writing a lame card game or bouncing-ball applet like the other books do. I've only spent a day with this book and have not attempted to compile any code, so keep that in mind while reading the rest of this review. Speaking of code, this is not a code-listing book. It definitely has code in it and dissects it, but the ratio of text to code is very appropriate.
Right off the bat in chapter 1 David starts with a chapter on Threads! Then he moves on to several chapters of 2D graphics and animation and builds a complete 2D scroller in chapter 5! You're probably liking what you're hearing so far if you've read any of the other java game programming books. The next several chapters spend some time on understanding and then programming 3D graphics (great chapters, BTW), then moves on to collision detection, AI and pathfinding, game scripting (using BeanShell - excellent choice), optimization, and more. Somewhere in there is a chapter on multiplayer networking.
All chapters build on the previous ones. The examples all seem worthwhile and demonstrate the concepts and techniques. This is real meat & potatoes game programming, and as the author points out, just happens to be implemented in Java. It looks to me like this guy really knows Java well (I'm a professional Java/J2EE programmer) and points out everything you need to know about using it to implement the game programming concepts.
A few minor nits and notes. The focus of the book is on full-screen applications, not applets or windowed games. You can apply what you've learned to those two, but they're not covered (which is a good thing, but be forewarned). The book is printed with a relatively large font, IMO, especially the code listings, so it's a bit heftier than it should be, but I don't feel like they're over-charging, so I'll live. Also, almost no time was spent talking about writing tools like map editors, assest editors, etc. I feel like those items are important enough to spend a bit more time on, but I can understand why they are only mentioned in brief. The only items other items I would have liked to see some brief coverage of were 2D isometric tile-based maps and 3D terrain.
This is a great intermediate level book on writing games in Java. I'd love to see the author or other writers build on this book to cover more advanced topics like those mentioned above, but you can use the information in this book and other great game programming references (like the Game Programming Gems series, AI Game Programming Wisdom, Strategy Game Programming in DirectX 9.0 (EXCELLENT BOOK), Game Coding Complete, 3D Game Engine Design, Physics for Game Developers, and others) to get where you need to go.
For anyone disappointed with other Java game programming books, this is a must-have. Highly recommended.