1)
A: Java Virtual Machine - A program that runs Java programs - A search engine will provide more details
B: The JVM has nothing to do with the terminal. Think of it as a translator between the operating system on the machine in question and the Java program the user wishes to execute
C: Where ever Java is installed. Depends on too many things to say exactly, and basically could have been installed just about anywhere. Consult the respective OS for the default location
- To A and B, spend some time with your favorite search engine for details and try to ask more specific questions if you have any, a forum isn't the place for such a lengthy explanation
2)
Yes, compiling a .java file produces a .class file. The .class file is what the JVM understands, where the .java file is what people generally work with
3)
Yes you are confusing the two. What you end up with is your "class" in a file with the special extension "class".
4)
Too many options to list all details. Each "compiler" may do things a bit differently, but the end result is what is important, the .class files
IDE's can provide colored text, highlighting, folding, spell checking, code completion... too many options to list... Again, it all boils down to the .class files in the end.