Not at all. Python, Ruby, and Perl are no more the best solution for every problem than Java is. (Personally, I find fewer problems for which they are the best solution, but that may be based on sampling.)
Put another way, while a primarily static and compile bound language like Java may be the best tool for an overall project, it may well not be the best solution for some of the tasks in that project. At that point, you either look at Jython, or runtime-called Perl, or you use the dynamic capabilities in Java.
Reflection is the primary Java dynamic tool, with classloaders as accomplices, and interfaces as the way you keep they dynamic parts for creeping into otherwise static code.