Java Development Kit - это способ, которым мы обычно обращаемся к набору инструментов для создания приложений Java, включая компилятор Java (для преобразования ваших исходных классов JAVA в файлы байт-кода .class), виртуальную машину Java (для выполнения этих файлов .class), инструмент JAR для ZIP-приложений (или их извлечения) и т. д.
Java Standard Edition обычно относится к базовым классам, составляющим основу большинства программ на Java, таким как API коллекций (List, Map, Set и т. Д.), Классам в Java. Пакет .lang, классы ввода-вывода, API Threading, пакеты и классы RMI, классы i18n (интернационализация), API JDBC и, конечно, классы AWT и Swing для создания приложений и апплетов для настольных компьютеров. Эти API являются основой всех других программ, которые вы можете писать «на Java», таких как IDE IntelliJ IDE, контейнеры сервлетов (например, Tomcat), RDBMS (например, Apache Derby) или пользовательских автономных клиентов, таких как SQuirreL. Эти классы вы получаете как часть JDK (просто взломайте файл src.zip прямо в вашей папке JDK и посмотрите, что вы там найдете :))
Java EE - это спецификация с под-спецификациями, которая в целом определяет набор сервисов, которые должны предоставлять реализации (такие как GlassFish или IBM WebSphere), чтобы соответствовать спецификации. Эти «реализации» представляют собой так называемые контейнеры Java EE. Когда вы слышите, как люди говорят, что «GlassFish - это реализация Java EE 1.6», они подразумевают, что GlassFish (Java-программа, написанная с использованием классов Java Standard Edition ) предоставляет все функции, которые определяют семейство спецификаций Java EE 6 .
Спецификации Java EE должны охватывать особые потребности в области разработки приложений "предприятия", такие как спецификация сервлета для обработки запроса-ответа HTTP, спецификация EJB для управления транзакциями и управления жизненным циклом компонента, Спецификация JMS для служб обмена сообщениями и так далее. Контейнеры Java EE (WebLogic, WebSphere, Tomcat) предоставляют фактические реализации этих спецификаций в виде классов. В чрезмерно упрощенном выражении эти контейнеры предоставляют JAR-файлы для API Java EE. Классы в этих файлах JAR используют основные классы Java SE. Я думаю, что это последнее предложение устанавливает связь между Java SE и Java EE.
Чтобы подвести итог, я бы сказал, что JDK - это просто набор программ, которые вы загружаете и выполняете для создания и выполнения ваших программ, «написанных на Java». Если у вас есть Java-программа, которая использует только «базовые классы» и не требует «корпоративных служб», вы выполняете Java-программу поверх JSE. Наконец, если вам нужно предоставить некоторые функциональные возможности и любая из реализаций спецификации Java EE покрывает любые ваши потребности, скажем, вам нужно обрабатывать HTTP-запросы; вы создаете компонент в соответствии со спецификацией (в данном случае сервлетом) и внедряете его в свой контейнер Java EE -Tomcat, например -.
Надеюсь, это поможет