Speed issues? Stop and think about this, CLR/C# compiles to native code before executing; Java compiles on the fly. You leverage that how you want to.
(Disclaimer: This post is meant for educational purposes, not to start any fights)
I have to correct this statement, it's been driving me nuts. Java does NOT compile on the fly. It is NOT a scripting language. Java does get compiled before you run the code. It gets compiled into bytecode. Which is an executable for the Java Virtual Machine. Think of java like an emulator. The Virtual Machine is being emulated on the native machine. The .class file is the executable for that virtual machine. The Virtual Machine is just that, a "ficticious" machine that Sun created that they create an "emulator" for existing machines. Smalltalk does the same thing. This isn't a new concept in the programming world. Been around for along time. Just java is MUCH faster virtual machine based language than any others that have existed.
But java code does get compiled to a .class file, which is a binary file that is ready to execute in the virtual machine. So nno, it does not compile on the fly. Scripting language like javascript (which is not related to java!!!), perl, and vbscript the code is interpreted (hence they use interpreters, not compilers) at runtime.
The sole purpose of java or any virtual machine based language is portability, being able to run on any machine without recompiling a seperate executable for each OS.If you plan on just making a windows version of something, java is not the best choice. If you plan on making a mac, linux, os/2, windows, AIX, whatever version of an internet based software java is exactly what you want.
BTW, because the fact that java is VM based and C++ is compiled I would not say java is a watered down C++. All java shares with C++ is some syntax, but that's it. Making the syntax simular is a smart thing as C++ devs can pick up how to use java quickly. Actually, alot of languages use very simular syntax. Java does have ALOT better string handling capabilities than most other languages, so it definately isn't a watered down anything. Perl and any language that uses regex is the ultimate for string handling, but oh wait, there is regex in java now but as third party

Perl's regex is just so freeking fast...