A good book though not one of those books that transcends time. It is a very practical, concrete handbook whose principles are tightly bound with the implementations of the current crop of popular programming frameworks, Java and C# (though mostly Java). Still, I consider it an essential read. Well written, extremely knowledgeable, full of clearly explained examples. As an architecture book I find it wanting. The chapter on concurrency is frankly shallow. The focus is very much at the level of micro-architecture. Other than that, really good stuff.