Why Java?
This book gives its examples in Java because Java is popular and important and will probably be the basis of future generations of computer languages. The popularity of a language is recursive. Developers invest their learning cycles in technology that they believe will last for at least a few years. The more popular a technology becomes, the more people want to learn it, and the more popular it becomes. This can lead to hype, or overexcitement about a technology's potential value. But Java is more than hype.
At a superficial level, Java is important because it is popular, but Java is also popular because it is a stride forward in computer languages. Java is a consolidation language, having absorbed the strengths and discarded the weaknesses of its predecessors. This consolidation has fueled Java's popularity and helps ensure that future languages will evolve from Java rather than depart radically from it. Your investment in Java will almost surely yield value in any language that supplants Java.
The patterns in Design Patterns apply to Java because, like Smalltalk and C++, Java follows a class/instance paradigm. Java is much more similar to Smalltalk and C++ than it is to, say, Prolog or Self. Although competing paradigms are important, the class/instance paradigm appears to be the most practical next step in applied computing. This book uses Java because of Java's popularity and because Java appears to lie along the evolutionary path of languages that we will use for decades ahead.