Just because it happens to have a slow compiler that obliges keeping the compiler separate from the VM doesn't mean it isn't a scripting language.
Actually I think most programmers would draw the line between scripting and "normal" languages at the separation of compiler and architecture specific machine code. The fact that Java code is compiled down to a particular, albeit portable, architecture -- the Java Runtime Environment -- puts it in a separate category from languages like Perl and Python. To flip your statement, just because a language runs on a virtual machine does not mean it's a scripting language.
So because perl has a speedy compiler and can invoke it during execution it is a scripting language while Java has a slow compiler and can't invoke it during execution and it isn't? I'd say that both cases are scripting languages - they both run on a VM and are interpreted. There's no fundamental distinction here that I can see.