JVM (Java Virtual Machine) — среда выполнения, обеспечивающая платформенную независимость Java. Компилятор Java превращает исходный код в байт-код (.class-файлы), который исполняет JVM. JVM сама транслирует байт-код в инструкции конкретной процессорной архитектуры.
Компоненты JVM
- Class Loader — загружает .class-файлы в память, верифицирует байт-код.
- JIT-компилятор (HotSpot) — компилирует горячие участки кода в нативный машинный код. C1 (быстрая компиляция) и C2 (глубокая оптимизация) — два уровня компиляции.
- Garbage Collector — автоматическое управление памятью. GC-алгоритмы: G1GC (по умолчанию Java 9+), ZGC (низкие паузы, Java 15+), Shenandoah.
- Java Heap — область памяти для объектов. Настраивается:
-Xms512m -Xmx2g.
JVM-языки
На JVM работают не только Java-программы: Kotlin (Android, backend), Scala (Spark, Akka), Groovy (Jenkins, Gradle), Clojure (функциональное программирование). Все они компилируются в байт-код и используют богатую экосистему Java-библиотек.
История
JVM спроектирована Sun Microsystems, анонсирована в 1994 году вместе с Java. Java 1.0 выпущен в 1996 году. HotSpot JVM (с JIT) выпущен Sun в 1999 году и стал основой OpenJDK. Oracle приобрела Sun в 2010 году. OpenJDK — открытая эталонная реализация; с Java 11 (2018) LTS-версии выходят каждые 3 года.
Связь с хостингом
На VDS с Java-приложениями (Tomcat, Spring Boot) важен выбор JVM: OpenJDK 21 LTS — актуальная версия (2023). Настройка heap (-Xmx) критична: при нехватке памяти JVM бросает OutOfMemoryError. GC-паузы влияют на latency: для web-серверов ZGC или Shenandoah предпочтительнее G1GC. В Docker важен флаг -XX:+UseContainerSupport (Java 10+) для корректного определения доступной RAM.
JVM в хостинге
JVM (Java Virtual Machine) -- исполняемая среда для байткода Java, Kotlin, Scala, Groovy. На сервере требует: 512 МБ RAM минимум (JVM startup), 1--8 ГБ для реальных приложений. Параметры запуска: -Xms256m -Xmx2g (начальный и максимальный heap), -XX:+UseG1GC (G1 Garbage Collector для серверных приложений). Мониторинг JVM через JMX, jvisualvm, Java Flight Recorder. Типичные проблемы: OutOfMemoryError (мало heap), long GC pauses (неоптимальный GC). JVM поддерживает несколько языков -- Spring Boot работает на JVM так же, как и Kotlin или Scala-приложения.
JVM версии и хостинг
Java LTS-версии: Java 11 (2018, поддержка до 2026), Java 17 (2021, поддержка до 2029), Java 21 (2023, поддержка до 2031). Java 21 добавил Virtual Threads (Project Loom) -- легковесные потоки для высококонкурентных приложений без накладных расходов OS-threads. На VPS для Java рекомендуется минимум 2 ГБ RAM. Tomcat и Spring Boot работают на JVM. Хостинг Java требует поддержки нужной версии JDK на сервере. GraalVM Native Image позволяет компилировать Java в нативный бинарник без JVM -- стартап за 50 мс вместо 2--5 секунд.
История JVM
JVM разработана Sun Microsystems в 1994--1995 годах. Java 1.0 вышла в 1996 году с принципом "Write Once, Run Anywhere". HotSpot JVM (приобретена Sun в 1999) ввела JIT-компиляцию. Java 5 (2004) -- Generics и автоупаковка. Java 8 (2014) -- Lambda expressions, Stream API. Oracle приобрела Sun в 2010 году. В 2017 году OpenJDK стал основной реализацией JVM. GraalVM разработан Oracle Labs в 2019 году.