Начнем с JVM. Как известно Java приложения много платформенны. Это осуществляется с помощью виртуализации процессов. То есть, когда Вы запускаете приложение написанное на языке Java оно выполняется не в среде операционной системы, а в виртуальной машине JVM (Java Virtual Machine).
JRE - это то что нужно установить пользователю для работы приложений. Он включает в себя виртуальную машину Java (JVM), загрузчик классов, компилятора в байт-код и много другого.
JDK - это набор инструментов для разработчиков. Он включает в себя JRE, JVM и утилиты для отладки приложений.