Can someone explain what virtual machines are and why they're useful?
I hear the term thrown around a lot and I'm sort of confused. 

- Is it just a software application built on an operating system that could simulate another operating system? 

- When someone codes a virtual machine, do they basically set out to make an operating system but instead of accessing hardware directly they just call the appropriate trap instructions they would need to? But then you wouldn't be able to simulate certain protected actions like interrupts, right? 

- Aside from me being able to remotely connect to and run a Linux desktop from within windows, are there any other reasons this might be useful? 

- What's a "virtual machine monitor"?

- What is the point of the Java Virtual Machine, why not just do what other languages do? 

Cheers 
Can someone explain what virtual machines are and why they're useful?
===

I hear the term thrown around a lot and I'm sort of confused. 

- Is it just a software application built on an operating system that could simulate another operating system? 

- When someone codes a virtual machine, do they basically set out to make an operating system but instead of accessing hardware directly they just call the appropriate trap instructions they would need to? But then you wouldn't be able to simulate certain protected actions like interrupts, right? 

- Aside from me being able to remotely connect to and run a Linux desktop from within windows, are there any other reasons this might be useful? 

- What's a "virtual machine monitor"?

- What is the point of the Java Virtual Machine, why not just do what other languages do? 

Cheers 