JDK (Java Development Kit) — полный набор инструментов для создания, компиляции и запуска Java-приложений. Включает: компилятор javac, JVM (Java Virtual Machine), JRE (Java Runtime Environment), стандартную библиотеку (rt.jar / jmods), отладчик jdb, документационный генератор javadoc и другие утилиты.
Архитектура Java-стека
JDK ⊃ JRE ⊃ JVM. JVM — виртуальная машина, исполняющая байт-код (.class-файлы). JRE — JVM плюс стандартные библиотеки для запуска приложений (без инструментов разработки). JDK — JRE плюс компилятор и инструменты разработки.
Java-код компилируется в платформенно-независимый байт-код. JVM транслирует байт-код в нативные инструкции процессора через JIT (Just-In-Time компиляцию). Это обеспечивает принцип WORA (Write Once, Run Anywhere) — один и тот же .jar-файл запускается на Linux, Windows и macOS.
История
Java разработана командой Sun Microsystems под руководством Джеймса Гослинга. JDK 1.0 выпущен 23 января 1996 года. В 2006 году Sun открыла исходный код Java (OpenJDK). В 2010 году Oracle приобрела Sun. С Java 11 (2018) Oracle перешла на 6-месячный цикл релизов и платную коммерческую поддержку Oracle JDK. OpenJDK — бесплатная альтернатива. Adoptium (Eclipse), Amazon Corretto, Microsoft OpenJDK — бесплатные дистрибутивы OpenJDK.
Связь с хостингом
Java-приложения (Spring Boot, Jakarta EE, Tomcat) требуют JDK или JRE на сервере. На VPS под Ubuntu: sudo apt install openjdk-17-jdk. Spring Boot приложения запускаются как fat-jar: java -jar app.jar. Tomcat и JBoss — контейнеры сервлетов, устанавливаемые отдельно. На большинстве виртуальных хостингов Java недоступна — требуется VPS.
JDK, JRE и JVM
JDK (Java Development Kit) = JRE + компилятор javac + инструменты (jmap, jstack, jconsole). JRE (Java Runtime Environment) = JVM + стандартные библиотеки. JVM (Java Virtual Machine) исполняет байт-код. Для production-сервера достаточно JRE; для компиляции — JDK.
Версии JDK и LTS
LTS-версии: Java 11 (2018), Java 17 (2021), Java 21 (2023). Java 21 — текущий LTS. Oracle JDK — платный для production; OpenJDK — бесплатный, функционально идентичен. Adoptium (Eclipse) и Amazon Corretto — популярные дистрибутивы OpenJDK.
JVM в хостинге
Настройка памяти: -Xms512m -Xmx2g (начальная и максимальная куча). G1GC — сборщик мусора по умолчанию в Java 9+. Мониторинг JVM: jconsole, Prometheus + micrometer. Типичные приложения на Java: Apache Tomcat, Elasticsearch, Kafka, Jenkins.
GraalVM Native Image
GraalVM Native Image компилирует Java в нативный бинарь: мгновенный старт (ms vs секунды), меньше RAM. Quarkus и Micronaut поддерживают native image. Spring Boot 3+ — Native Support через AOT. Для serverless и Kubernetes с частым масштабированием — native image снижает cold start.
JVM Tuning в production
G1GC параметры: -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=16m. ZGC (Java 15+): pauseless GC, <1 мс паузы. GC лог: -Xlog:gc*:file=/var/log/app/gc.log:time:filecount=5,filesize=20m. JVM Heap Analysis: Eclipse MAT, VisualVM. jstack для thread dump при зависании.