What is differences between JVM, JDK, JRE & OpenJDK?
===

What is differences between **JVM**, **JDK**, **JRE** & **OpenJDK**?

I was programming with java and I encountered these phrases, what is the differences between them?