TGViewer
Android under the hood Android under the hood @android_under_the_hood · 1.53K subscribers
Post #27 870
Немного о JVM.

"Скомпилируй один раз, запускай хоть в другой Вселенной" - фраза, описывающая общую суть JVM языков.

Разберёмся подробнее как такое возможно:

1) Ключевой частью языка Java является компилятор javac, который преобразует исходный код программы в специальное промежуточное представление: байт-код, файлы с расширением .class. Такое промежуточное представление состоит из фиксированного набора инструкций, удобных для выполнения на виртуальной машине.

Важный момент: байт-код необязательно должен исполняться на Java машине, вы можете придумать свой формат и написать реализацию виртуальной машины для него.

2) Виртуальная машина Java - это всего лишь спецификация, описывающая набор инструкций байт-кода, типы данных, области памяти для выполнения программы и тд, конкретная реализация виртуальной машины зависит от архитектуры процессора, например Android ART чаще всего заточена под ARM процессоры.

Теперь посмотрим что JVM представляет из себя для разработчиков разных уровней:

Разработчики JVM. Под любое устройство, которое имеет память и процессор можно написать реализацию виртуальной машины для определенного байт-кода, конечно стоит учитывать набор доступных инструкций процессора для реализации всех возможных команд, а также достаточный объем памяти, но это уже детали.

Разработчики компиляторов JVM языков. Достаточно написать компилятор, который будет транслировать ваш язык в поддерживаемый виртуальной машиной байт-код и одна и та же программа уже адаптирована под все системы, для которых есть реализация этой самой виртуальной машины, например у Groovy есть компилятор groovyc для генерации JVM байт-кода.

Разработчики программ на JVM языках. Пишем один и тот же код и запускаем на всех возможных реализациях JVM, не вдаваясь в подробности архитектуры конкретного устройства и внутренних механизмов работы с памятью.

P.S. Понимание спецификации JVM и внутренних механизмов её работы никогда не будет лишним.

Пишите в комментах ваше мнение и всем хорошего кода!
  • 🔥 5
More from @android_under_the_hood
  1. Oct 7, 2026Kotlin lambdas, часть II. Начиная с Kotlin 2.0 лямбды перестали напрямую компилироваться в…
  2. Oct 4, 2026Всем привет, хочу поделиться проектом, который запустил 1 октября — ЗдесьЯ. Это цифровая с…
  3. Oct 2, 2026Kotlin lambdas, часть I. До версии Kotlin 2.0 лямбды компилировались в анонимные классы, р…
  4. Sep 27, 2026Делегат свойства в Kotlin. В Kotlin есть конструкция, которой нет в JVM: var name by NameD…
  5. Sep 23, 2026val vs var под капотом. На уровне Kotlin все просто: val x = 10 var y = 20 y = 30 // компи…
  6. Sep 20, 2026Возвращение Прошло уже полгода с последней записи на канале. За это время в моей жизни про…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →