В чем разница между JDK и JRE?

В чем разница между JDK и JRE? Когда нужно использовать JDK, а когда JRE?

Если в 2 словах:

JDK = JRE + Инструменты разработки/отладки
JRE = JVM + Java Packages Классы (например, util, math, lang, awt, swing и т.д.) Библиотеки +runtime.

JRE - это среда выполнения Java. Это пакет всего необходимого для запуска скомпилированной Java-программы, включая виртуальную машину Java (JVM),
JDK - полнофункциональный SDK для Java. В нем есть все, что есть в JRE, а также компилятор (javac) и инструменты (такие как javadoc и jdb). Он способен создавать и компилировать программы.

спасибо!

Если нам нужно только запускать Java программы на компьютере, тогда нам будет достаточно установить только JRE. Если же кроме просто запуска нужно также заниматься разработкой своих собственных Java программ и компилировать их, тогда нужен JDK.

Иногда, даже если мы не планируем заниматься разработкой Java программ, но нам всё равно нужно установить JDK. Например, если вы развертываете веб-приложение с JSP, технически вы просто запускаете Java-программы на сервере приложений. Зачем же нужен тогда JDK? Потому что сервер приложений преобразует JSP в сервлеты Java и должен использовать JDK для компиляции сервлетов. Это из многих примеров таких ситуаций.