I just finished the new book from Bruce Tate: Beyond Java, published by O'Reilly. For the record, I'm a big fan - I really enjoyed his Bitter Java. And while Beyond Java is well worth your time and money, it is important to realize the book has some limitations. Tate acknowledges these himself; this is from page 177:
Of course, the whole premise of this book is arrogant beyond belief. I'm making an incredible number of assumptions and drawing some aggressive conclusions based on little more than a couple of dozen interviews, a keen sense of intuition, and a few massive piles of circumstancial evidence.
The bigger limitation to keep in mind, though, is that Tate's conclusions may not apply to you. This is from page 43: "I'd guess that as many as half of all commercial applications involve a web frontend that baby-sits a plain old relational database." I don't necessarily disagree with his guess, but here's the key thing to understand: Tate makes his living building those sorts of applications. So when he describes the pain that Java forces him to endure in order to build systems for his clients, you have to ask yourself: "Does this apply to me?"
It appears that in Tate's view, most Java developers are like him: building web front ends that do create/read/update/delete operations on a relational database, with perhaps some additional business logic. And while I don't dispute that a large proportion of Java developers are building those sorts of applications, not everyone makes their living that way.
His central point is that Java has drifted away from serving the needs of developers such as himself. The addition of enterprise features and frameworks has added complexity that is not needed by the majority of applications and therefore just ends up making developers less productive. It is important to note that he disdains the use of Java for rich client applications. Also of note is that development of mobile applications gets very little mention in the book.
Regardless of what type of Java development you do, though, the book is still a good read. Tate points out several problems with the current world of Java. Coupled with the emergence of new languages and their attendant frameworks (e.g. Ruby on Rails) it only makes sense to ask if there's a better way than Java. The most interesting parts of the book are the chapters that look at those alternatives.
I spotted only a few typos in the text - certainly below average for a book like this. The only real annoyance is the repetition. The quote I used above from page 43 is repeated in similar form several times throughout the book. More grating, though, is that a lot of the information about alternatives in chapter 5 is repeated in chapter 9. The best example is that the sample PHP source code on page 173 is identical to the source code example on page 92. Kind of ironic for a guy who espouses "don't repeat yourself." :-)
Those flaws are worth overlooking though if this book causes you to question your assumptions. Exposure to new ideas is usually healthy.