Menu
Coddy logo textTech

Что такое среда выполнения?

Среда выполнения представляет собой программное окружение, которое нужно программе во время работы: движок, выполняющий её код, стандартные библиотеки, которые она вызывает, и службы, управляющие памятью, ошибками и доступом к операционной системе. Примеры: JVM, Node.js и CPython.

Автор: Kevin Spektor, Сооснователь и CTO

Обновлено 24 сентября 2026 г.

Выполни console.log(typeof process) в Node.js, и он выведет object. Вставь ту же строку в консоль Chrome, и она выведет undefined. Язык в обоих местах один и тот же, JavaScript, но программа работает внутри двух разных сред выполнения, и каждая даёт ей разные инструменты.

console.log(typeof process);  // "object" in Node.js, "undefined" in a browser
console.log(typeof document); // "undefined" in Node.js, "object" in a browser

Что даёт среда выполнения

Твой код только описывает, что нужно сделать. Когда он работает, он опирается на слой программ, установленный ещё до того, как ты написал первую строку. Обычно в этом слое пять частей:

  1. Исполняющий движок. Код кто-то должен выполнять: интерпретатор, виртуальная машина или JIT-компилятор. CPython, виртуальная машина Java (JVM) и V8 являются исполняющими движками.
  2. Стандартная библиотека. Готовые функции для текста, математики, дат, файлов и сети, например модуль json в Python или пакет java.util в Java.
  3. Управление памятью. Среда выполнения выделяет память под твои объекты, а в Python, Java и JavaScript освобождает её с помощью сборщика мусора, когда она больше никому не нужна.
  4. Обработка ошибок. Когда что-то идёт не так, среда выполнения аккуратно останавливает программу и сообщает, где это случилось, в виде трейсбэка или стека вызовов.
  5. Доступ к операционной системе. Чтение файлов, сетевые соединения, переменные окружения и аргументы командной строки проходят через среду выполнения, которая обращается к операционной системе от имени твоей программы.

Среду выполнения Python можно расспросить о ней самой:

Ответы зависят от того, где работает код. На сервере с Linux platform.system() возвращает 'Linux', на Mac 'Darwin', а в Windows 'Windows'. Ограничение глубины рекурсии (по умолчанию 1000 в CPython) задаёт среда выполнения, а не язык Python, а десятки модулей, загруженных до твоей первой строки, показывают, как среда выполнения готовит себя к работе.

Java: JDK, JRE и JVM

В Java слои хорошо видны, потому что у каждого своё название:

НазваниеРасшифровкаЧто содержитКому нужно
JVMJava Virtual MachineДвижок, который выполняет байт-код (файлы .class) и управляет памятьюВходит в оба пункта ниже
JREJava Runtime EnvironmentJVM и стандартные библиотеки классовТем, кто только запускает программы на Java
JDKJava Development KitJRE и инструменты разработчика: javac, jar, javadoc, jdbТем, кто пишет программы на Java

Процесс такой: javac Main.java (инструмент из JDK, компилятор) превращает исходный код в Main.class, а java Main запускает JVM, которая загружает класс и выполняет его с библиотеками среды выполнения. Благодаря JVM один и тот же файл .class работает в Windows, macOS и Linux: у каждой операционной системы своя JVM, и все они понимают один и тот же байт-код.

Начиная с Java 11, Oracle поставляет только JDK, без отдельной загрузки JRE. Некоторые дистрибутивы, например Eclipse Temurin, по-прежнему публикуют пакет JRE. Если ты изучаешь Java, устанавливай JDK: в нём есть всё, что есть в JRE. Руководство установка Java проведёт через этот процесс.

JavaScript: браузер и Node.js

JavaScript создавался для работы внутри веб-страниц, поэтому его первой средой выполнения стал браузер. Среда выполнения браузера даёт твоему коду document страницы, window, таймеры и fetch для сетевых запросов, а прямой доступ к твоим файлам намеренно закрывает.

Node.js берёт движок V8 от Google из браузера и помещает его в другую среду выполнения: document там нет, зато есть модули вроде fs для файлов, http для серверов и объект process для переменных окружения и аргументов. Deno и Bun являются более новыми средами выполнения для того же языка со своими инструментами. Все они выполняют один и тот же базовый JavaScript; разница в том, что его окружает. Подробнее на страницах среда выполнения Node.js и цикл событий.

Python: CPython и другие

Когда говорят «установить Python», имеют в виду установку среды выполнения: интерпретатора CPython, стандартной библиотеки и pip для добавления пакетов. Для того же языка есть и другие среды выполнения. PyPy добавляет JIT-компилятор для скорости, а MicroPython настолько мал, что работает на микроконтроллерах.

Виртуальное окружение (python3 -m venv .venv) не является новой средой выполнения. Оно указывает на существующий интерпретатор и даёт одному проекту собственный набор установленных пакетов, чтобы два проекта могли использовать разные версии одной библиотеки. Смотри виртуальные окружения.

Время компиляции и время выполнения

Словом «runtime» называют и момент: период, пока программа работает, в отличие от времени компиляции, когда исходный код переводится. Ошибка, которую отвергает компилятор, является ошибкой времени компиляции; а та, что появляется только во время работы программы, например деление на ноль, называется ошибкой времени выполнения. Среда выполнения является программным окружением, которое присутствует во втором периоде.

Даже у C, который компилируется прямо в машинный код, есть небольшая среда выполнения. Программа на C начинается со стартового кода, который добавляет набор инструментов компилятора, а функции вроде printf и malloc берутся из стандартной библиотеки C (glibc в большинстве систем Linux, Universal C Runtime в Windows). Просто там нет ни виртуальной машины, ни сборщика мусора.

Распространённые заблуждения

  • «Среда выполнения и есть операционная система». Операционная система управляет оборудованием для всех программ. Среда выполнения является слоем одной программы поверх неё. JVM сама является программой, которую запускают Windows, macOS или Linux; она их не заменяет.
  • «Node.js является языком или фреймворком». Node.js является средой выполнения для JavaScript. Фреймворки вроде Express представляют собой библиотеки, которые работают внутри неё.
  • «Установка IDE устанавливает и среду выполнения». В VS Code нет ни Python, ни Java. Редактор и среда выполнения устанавливаются отдельно, хотя некоторые IDE, например IntelliJ IDEA, могут скачать JDK за тебя.
  • «Один язык ведёт себя везде одинаково». Возможности, которые даёт среда выполнения, например доступ к файлам, ограничения по умолчанию и доступные модули, могут отличаться. Именно поэтому код, работающий в Node.js, может сломаться в браузере.

Что изучить дальше

Исполняющим движком в большинстве сред выполнения служит интерпретатор, и на той же странице он сравнивается с компилятором. Под любой средой выполнения лежит операционная система. Чтобы попрактиковаться в среде выполнения, с которой ты ещё не работал, начни курс Java или курс JavaScript.

Часто задаваемые вопросы

Какой пример среды выполнения можно привести?
Классический пример: Java Runtime Environment (JRE), то есть JVM вместе со стандартными библиотеками Java. Node.js является средой выполнения JavaScript вне браузера, а сам браузер представляет собой ещё одну. Для Python средой выполнения служит интерпретатор CPython со стандартной библиотекой.
Является ли Node.js средой выполнения?
Да. Node.js является средой выполнения JavaScript, построенной на движке V8 от Google. Она позволяет запускать JavaScript вне браузера и добавляет модули для работы с файлами, сетью и процессами. Это не язык программирования и не фреймворк; фреймворки вроде Express работают внутри неё.
Что на самом деле означает слово runtime?
У слова «runtime» два значения. Это период, пока программа работает, в отличие от времени компиляции; поэтому ошибки, которые появляются только в этот период, называют ошибками времени выполнения. А ещё это сокращение от runtime environment, то есть программного окружения, которое поддерживает программу в этот период.
Что устанавливать, JRE или JDK?
Если пишешь на Java, устанавливай JDK: в нём есть компилятор javac и всё, что входит в JRE. Одна только JRE умеет лишь запускать готовые программы на Java. Начиная с Java 11, Oracle распространяет только JDK, так что для современных версий Java обычный выбор JDK.
Как расшифровываются JDK, JRE и JVM?
JDK означает Java Development Kit (набор для разработки на Java), JRE означает Java Runtime Environment (среда выполнения Java), а JVM означает Java Virtual Machine (виртуальная машина Java). JVM выполняет байт-код, JRE состоит из JVM и стандартных библиотек, а JDK состоит из JRE и инструментов разработки вроде javac.
Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ