As previously stated Java is (like C# is now) the wierd one as far as programming languages go. It's "Compiled" into java byte code, which is then interpreted by the Java Virtual Machine, which I've heard is very similar to the sparc architectures bytecode. Which mean that it is technically not compiled or interpreted, it's both, a wierd hybrid of the multiple types. BASIC, while generally interpreted, became compiled with certain versions of it (QB4.5) was on that I recall. Much like VB is now. Although if I remember correctly it was a pain in that you had to have the obj files with the exe for it to run.

On the disassembly thing:

No matter what programming language you start out in, if compiled, when disassembled they will be pretty much the same, because of the great multitude of steps that go into forming a compiler, it would be very difficult (read impossible) to get them to the exact way they were in their original source. Because of the different optimizations and various other steps in the compile process, the code (functions and what not) may be in a completely different order than originally written in. While theoretically possible to do this, these many steps for compilation make it extremely difficult, so while something similar may be given to you it won't be exact. And because a single hardware architecure has to have the same machine independent language, all languages on that machine, when compiled, could in theory be disassembled with the same degree (depending on the algorithm its disassembling mind you) of difficulty.

You should not have to worry about doing such things with an interpreted language (even though many*, i.e. php can now be compiled, Common LiSP is also interpreted or compiled*) because they are interpreted and you are supposed to have the source to run them...

*I can prove this, ask me how...
the function called (compile-file...) turns the lisp code into compiled code...


On another note, you all are so condescending. Try constructive criticism.