What are the differences between JVM, JRE and JDK in Java?