HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Работая с Java мы постоянно натыкаемся на несколько аббревиатур: JVM, JDK и JRE. В чем между ними разница и зачем они нужны? Давайте разбираться</p>
1 <p>Работая с Java мы постоянно натыкаемся на несколько аббревиатур: JVM, JDK и JRE. В чем между ними разница и зачем они нужны? Давайте разбираться</p>
2 <h2>Составные части</h2>
2 <h2>Составные части</h2>
3 <p>JVM (Java Virtual Machine) - Виртуальная машина отвечает за само выполнение кода. Она работает с байткодом (тем, что находится внутри файлов с расширением<em>.class</em>).</p>
3 <p>JVM (Java Virtual Machine) - Виртуальная машина отвечает за само выполнение кода. Она работает с байткодом (тем, что находится внутри файлов с расширением<em>.class</em>).</p>
4 <p>JRE (Java Runtime Environment) - окружение, необходимое для запуска Java-программ. Включает в себя стандартную библиотеку. В нее входят, как базовые пакеты<em>lang</em>,<em>util</em>, так и пакеты для работы с различными форматами, базами данных, пользовательским интерфейсом. JVM тоже часть JRE.</p>
4 <p>JRE (Java Runtime Environment) - окружение, необходимое для запуска Java-программ. Включает в себя стандартную библиотеку. В нее входят, как базовые пакеты<em>lang</em>,<em>util</em>, так и пакеты для работы с различными форматами, базами данных, пользовательским интерфейсом. JVM тоже часть JRE.</p>
5 <p>JDK (Java Development Kit) - набор программ для разработки. Именно его мы (или редактор) устанавливаем к себе на компьютер, чтобы заниматься разработкой на Java. Он включает в себя JRE, загрузчик кода<em>java</em>, компилятор<em>javac</em>, архиватор<em>jar</em>, генератор документации<em>javadoc</em>и другие утилиты, нужные во время разработки.</p>
5 <p>JDK (Java Development Kit) - набор программ для разработки. Именно его мы (или редактор) устанавливаем к себе на компьютер, чтобы заниматься разработкой на Java. Он включает в себя JRE, загрузчик кода<em>java</em>, компилятор<em>javac</em>, архиватор<em>jar</em>, генератор документации<em>javadoc</em>и другие утилиты, нужные во время разработки.</p>
6 <h2>Write once, run anywhere</h2>
6 <h2>Write once, run anywhere</h2>
7 <p>Java - компилируемый язык. Обычно, когда говорят про такие языки, подразумевают, что компилятор берет исходный код и превращает его в машинный код, заточенный под конкретную архитектуру (машинный код у разных архитектур разный) и операционную систему. Так происходит во многих си-подобных языках. На выходе получаются файлы, каждый из которых может запуститься только на своей комбинации архитектуры и операционной системы.</p>
7 <p>Java - компилируемый язык. Обычно, когда говорят про такие языки, подразумевают, что компилятор берет исходный код и превращает его в машинный код, заточенный под конкретную архитектуру (машинный код у разных архитектур разный) и операционную систему. Так происходит во многих си-подобных языках. На выходе получаются файлы, каждый из которых может запуститься только на своей комбинации архитектуры и операционной системы.</p>
8 <p>Для запуска таких программ больше ничего не нужно. Достаточно перенести их на нужную систему и запустить штатными средствами. Такие программы работают очень быстро, так как оптимизированы под конкретные условия.</p>
8 <p>Для запуска таких программ больше ничего не нужно. Достаточно перенести их на нужную систему и запустить штатными средствами. Такие программы работают очень быстро, так как оптимизированы под конкретные условия.</p>
9 <p>Java устроена по-другому. Разработчики попытались обеспечить кроссплатформенность готовой программы, за счет введения виртуальной машины. Кроссплатформенность, способность программы запускаться на разных платформах (архитектура процессора и операционная система) без необходимости компилировать код под эти системы. Как это работает?</p>
9 <p>Java устроена по-другому. Разработчики попытались обеспечить кроссплатформенность готовой программы, за счет введения виртуальной машины. Кроссплатформенность, способность программы запускаться на разных платформах (архитектура процессора и операционная система) без необходимости компилировать код под эти системы. Как это работает?</p>
10 <p>Ядро Java это JVM. Виртуальный процессор, со своим набором команд, который придумали создатели Java. Компилятор готовит код именно под эту единую JVM. Например, код:</p>
10 <p>Ядро Java это JVM. Виртуальный процессор, со своим набором команд, который придумали создатели Java. Компилятор готовит код именно под эту единую JVM. Например, код:</p>
11 <p>После компиляции превращается в:</p>
11 <p>После компиляции превращается в:</p>
12 <p>JVM выполняет байткод построчно и транслирует его в реальный машинный код, специфичный для той архитектуры, на которой он запускается.</p>
12 <p>JVM выполняет байткод построчно и транслирует его в реальный машинный код, специфичный для той архитектуры, на которой он запускается.</p>
13 <p>Благодаря наличию виртуальной машины, Java стала не просто языком. Она превратилась в платформу, на базе которой создаются другие языки, причем многие из них достаточно популярны: Kotlin, Clojure, JRuby, Scala, Groovy. Из них только Kotlin похож на Java, остальные отличаются кардинально. Все это благодаря JVM.</p>
13 <p>Благодаря наличию виртуальной машины, Java стала не просто языком. Она превратилась в платформу, на базе которой создаются другие языки, причем многие из них достаточно популярны: Kotlin, Clojure, JRuby, Scala, Groovy. Из них только Kotlin похож на Java, остальные отличаются кардинально. Все это благодаря JVM.</p>