In regards to the bytecode issue, how do you think that Perl works now? It turns out that Perl compiles your program to bytecode and runs that in a VM! We just don't advertise it that way.
The current differences between Java and Perl on this issue are that currently Perl's bytecodes are not a standard that is written down somewhere, and Perl's bytecodes are designed around units of action that make sense for scripting. Java's are written down in detail, and are designed to create something that looks like a virtual machine. I don't think that making Perl's bytecode into a written standard is going to be that big of a problem.