I've noticed that within the C:\Program Files\Java folder, there's the public JRE which the JDK installed, I know this is normal. But then there's the folder jdk1.x\jre\bin\ with java.exe, javaw etc in it. And then there's the compiler folder jdk1.x\bin which contains javac along with all the other files included in the JRE like java.exe, javaw, appletviewer etc.
Why does JDK come with all these JREs? What's the difference between these 3?