Well, if we wanted to be totally binary about things, any part of Java that isn't a good part might be considered a bad part. But I'm less harsh than that; I think that the things are talked about in the book are really good, but there is a lot about Java that is somewhere between nearly good and merely ok.
Of course, there are also bad parts, some of which I talk about in the book. I think generics would have been better if there were runtime support for them, but they turned out better than I had feared. The IO library was clunky enough that they got redesigned to new IO (NIO), and I've heard that there is a new new IO package either in the works or part of Java 7 (I use a Mac, so haven't really looked at Java 7 yet). And the graphics packages have always been something of a problem; getting good performance and being platform independent is a real challenge, and it isn't clear that any of the attempts at a graphics library have really been great.
I personally think that the most problematic part of Java is the security model, which is really a series of security models, one grafted on top of the other. The end result is that most people run their programs with a policy that grants all rights to the program, which is the way around things. This just makes Java the same as other programming languages and environments, however, so you can't really blame Java for having tried to do security.