Java — строго типизированный объектно-ориентированный язык программирования, разработанный Джеймсом Гослингом в Sun Microsystems и выпущенный в 1995 году. Компилируется в байт-код JVM (Java Virtual Machine), а не в нативный машинный код. JVM выполняет байт-код на любой платформе с установленной средой исполнения — это и есть принцип «Write Once, Run Anywhere (WORA)».
Как работает
Цепочка выполнения: .java → javac → .class (байт-код) → JVM → нативный код через JIT-компилятор. HotSpot JVM (стандартная Oracle/OpenJDK) автоматически компилирует часто выполняемые методы (hot code) в нативный код — это устраняет разрыв в производительности между Java и C/C++ для длительно работающих приложений.
Экосистема Java:
- JDK (Java Development Kit) — инструменты разработчика (javac, jar, javadoc).
- JRE (Java Runtime Environment) — среда выполнения (только JVM + библиотеки).
- OpenJDK — открытая реализация; Oracle JDK (коммерческая). Начиная с Java 11 разница минимальна.
- Maven / Gradle — системы сборки и управления зависимостями.
Фреймворки: Spring Boot (основной для REST API и микросервисов), Hibernate (ORM), Quarkus, Micronaut (для cloud-native). Серверы приложений: Apache Tomcat (сервлет-контейнер), WildFly, WebSphere. На Linux-серверах Java-приложения управляются через systemd.
История
Java создана командой «Oak» под руководством Джеймса Гослинга в Sun Microsystems с 1991 года. Публичный выпуск — 1995 год. Java 1.2 (1998) ввёл Swing и Collections Framework. Java 5.0 (2004) — дженерики, аннотации, enum, autoboxing. Java 8 (2014) — лямбды, Stream API, Optional. Java 11 (2018) — LTS, первая версия без бесплатного Oracle JDK. Java 21 (2023) — актуальная LTS с Virtual Threads (Project Loom), Record Patterns, Sequenced Collections.
Java в хостинге
Java-приложения требуют VPS или выделенного сервера — JVM не запускается на shared hosting. Часто перед Tomcat ставят nginx как обратный прокси. Минимальные ресурсы для Spring Boot: 512 МБ ОЗУ (с опцией -Xmx256m), рекомендуется 1-2 ГБ. Время холодного старта JVM — 2-10 секунд. GraalVM Native Image компилирует Java-приложение в нативный бинарник без JVM: старт за 50-100 мс, потребление памяти снижается в 5-10 раз. Для контейнеризации используют Docker с образами eclipse-temurin:21-jre.
На что обращать внимание
Java LTS-версии (8, 11, 17, 21) — рекомендованы для production. Non-LTS релизы выходят каждые 6 месяцев с поддержкой 6 месяцев. JVM heap tuning: -Xms (начальный heap), -Xmx (максимальный heap), -XX:+UseG1GC (G1 Garbage Collector — рекомендован с Java 9+). Spring Boot использует PostgreSQL или MySQL через JPA/Hibernate. Для микросервисов рассмотрите Quarkus или Micronaut — они быстрее стартуют и потребляют меньше памяти, чем Spring Boot.
Java в корпоративном хостинге
Java — де-факто стандарт для корпоративных систем в банках, страховых и государственных компаниях. Spring Boot обеспечивает встроенный сервер (Tomcat/Netty), поэтому приложение деплоится как самодостаточный JAR-файл без отдельной установки Tomcat. На VPS с 4 ГБ ОЗУ комфортно работает 2-3 Spring Boot микросервиса. Мониторинг JVM: Spring Actuator + Prometheus + Grafana — стандартный стек для наблюдаемости Java-приложений.