Please clarify the difference between JDK, JRE and JVM. Also, which of these can be independently implemented by people other than Sun. I have tried to get this clarification from many places, but non have satisfied me.
The JVM (Java Virtual Machine) is the engine that executes Java byte code.
The JRE (Java Runtime Environment) consists of the JVM plus everything around it that is needed to be able to run Java programs: an implementation of the standard Java API, etc.
The JDK (Java Development Kit) is the JRE plus the tools that you need to develop software in Java (the compiler and other tools).
Developers who want to write Java programs need the JDK. End users, who want to run software written in Java, need the JRE. Each of the three can be implemented by any person or company other than Sun.