← Назад к вопросам
Можно ли запустить Java приложение имея только JRE?
2.2 Middle🔥 61 комментариев
#Docker, Kubernetes и DevOps#Основы Java
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Можно ли запустить Java приложение имея только JRE
Ответ: Да, можно! JRE это именно то, что нужно для ЗАПУСКА приложений. Вот полное объяснение:
1. Различие между JDK и JRE
JDK (Java Development Kit)
JDK = JRE + Разработка
= JRE + javac (компилятор)
+ javadoc (документация)
+ jar (упаковщик)
+ jdb (отладчик)
+ другие инструменты
Для: разработки Java приложений
Включает: компиляцию кода в .class файлы
JRE (Java Runtime Environment)
JRE = JVM + Библиотеки
= JVM (виртуальная машина)
+ стандартные классы (java.*, javax.*)
+ другие runtime ресурсы
Для: ЗАПУСКА скомпилированных приложений
НЕ включает: компилятор, инструменты разработки
Сравнение
┌─────────────────────────────────────────┐
│ JDK │
│ ┌─────────────────────────────────────┐│
│ │ JRE ││
│ │ ┌──────────────────────────────────┐││
│ │ │ JVM │││
│ │ │ (Виртуальная машина) │││
│ │ └──────────────────────────────────┘││
│ │ + Стандартные библиотеки (rt.jar) ││
│ └─────────────────────────────────────┘│
│ + javac (компилятор) │
│ + jar (упаковщик) │
│ + jdb (отладчик) │
│ + javadoc (генератор документации) │
└─────────────────────────────────────────┘
2. Как запустить приложение с JRE
Шаг 1: Иметь скомпилированное приложение
# Предположим, у тебя есть:
MyApplication.jar ← скомпилированное приложение
Шаг 2: Установить JRE (если нет)
# Linux
sudo apt-get install default-jre # Только JRE, без JDK
# macOS
brew install openjdk
# Windows
# Скачать с oracle.com и установить
Шаг 3: Запустить приложение
# Способ 1: JAR файл
java -jar MyApplication.jar
# Способ 2: Класс напрямую
java -cp . com.example.Main
# С параметрами
java -Xmx1024m -jar MyApplication.jar
3. Практические примеры
Пример 1: Простое приложение
// Main.java
public class Main {
public static void main(String[] args) {
System.out.println("Hello from JRE!");
}
}
# Нужен JDK для компиляции
javac Main.java # Создает Main.class
# Но запустить можно только с JRE
java Main # Работает!
Пример 2: Spring Boot приложение
# Скомпилированный JAR (например, после mvn clean install)
myapp.jar
# JRE достаточно для запуска
java -jar myapp.jar
# Приложение стартует на порту 8080
Пример 3: Микросервис в контейнере
# Dockerfile использует только JRE
FROM openjdk:21-jre-slim # ← Только JRE!
COPY myapp.jar /app/
WORKDIR /app
CMD ["java", "-jar", "myapp.jar"]
docker build -t myapp .
docker run myapp # Запускается с JRE в контейнере
4. Что нужно и что НЕ нужно
Для ЗАПУСКА приложения нужно:
✓ JRE (Java Runtime Environment)
✓ Скомпилированное приложение (.jar или .class)
✓ Зависимости (если есть)
НЕ нужно:
✗ JDK (избыточно)
✗ IDE (NetBeans, IntelliJ IDEA)
✗ Сборщик проектов (Maven, Gradle)
Для РАЗРАБОТКИ приложения нужно:
✓ JDK (содержит JRE + инструменты разработки)
✓ IDE (опционально, но очень полезно)
✓ Сборщик проектов (Maven, Gradle)
✓ Git, Docker и другие инструменты
5. Проблемы и их решения
Проблема 1: java: command not found
# JRE не установлен или не в PATH
# Решение 1: Установить JRE
sudo apt-get install default-jre
# Решение 2: Использовать полный путь
/usr/lib/jvm/java-21-openjdk/bin/java -jar myapp.jar
# Проверка установки
java -version
Проблема 2: "Не хватает памяти"
# JRE запущена с недостаточной памятью
# Решение: Увеличить heap
java -Xmx2048m -jar myapp.jar
Проблема 3: Версия Java не подходит
# Приложение требует Java 21, а установлена Java 11
java -version # Проверить текущую версию
# Решение: Установить нужную версию
sudo apt-get install openjdk-21-jre
6. Сравнение размеров
JRE: ~50-100 MB (зависит от версии)
JDK: ~300-500 MB (много инструментов разработки)
Для production окружения часто используют JRE,
чтобы сэкономить место и ресурсы.
7. Real-world сценарии
Сценарий 1: Production сервер
# На production сервере
- Установлена только JRE
- Запускается приложение
sudo apt-get install default-jre # Только JRE
java -jar /opt/myapp/app.jar # Запуск
Сценарий 2: Docker контейнер
# Используем только JRE для минимального размера контейнера
FROM openjdk:21-jre-slim
# Размер: ~200MB (вместо 500MB с JDK)
Сценарий 3: GraalVM Native Image
# Минимальный размер, БЕЗ JRE/JVM
native-image MyApplication
./myapplication # Запускается как обычный binary
# Размер: ~10-50MB
8. Важно знать
JRE содержит стандартные библиотеки
import java.io.*; // ✓ В JRE
import java.util.*; // ✓ В JRE
import java.net.*; // ✓ В JRE
// Но НЕ содержит:
// ✗ Сторонние библиотеки (Jackson, Spring, Hibernate)
// ✗ Инструменты разработки (javac, maven, gradle)
Разные дистрибьюции JRE
1. Oracle JRE (лицензия может отличаться)
2. OpenJDK JRE (open-source)
3. GraalVM (альтернатива с лучшей производительностью)
4. Amazon Corretto (AWS версия OpenJDK)
5. Azul Zulu (оптимизированная версия)
6. Eclipse Temurin (от Eclipse Foundation)
9. Таблица: Что входит
| Компонент | JRE | JDK |
|---|---|---|
| JVM | ✓ | ✓ |
| Стандартные библиотеки | ✓ | ✓ |
| javac (компилятор) | ✗ | ✓ |
| javadoc | ✗ | ✓ |
| jar (упаковщик) | ✗ | ✓ |
| jdb (отладчик) | ✗ | ✓ |
| Исходники (src.zip) | ✗ | ✓ |
10. Best Practices
✓ ХОРОШО: Использовать JRE на production
# Production Dockerfile
FROM openjdk:21-jre-slim # Только JRE
COPY app.jar /app/
CMD ["java", "-jar", "/app/app.jar"]
✓ ХОРОШО: Использовать JDK на development
# Development машина
jdk-21 # Полный JDK для разработки
✗ ИЗБЕГАЙ: Развертывать JDK на production
# ✗ ПЛОХО: Не используй полный JDK в production
FROM openjdk:21-jdk # Слишком большой, много инструментов
✓ ХОРОШО: Multi-stage build
# Multi-stage: компиляция с JDK, запуск с JRE
FROM openjdk:21-jdk as builder
COPY src /src
WORKDIR /src
RUN javac App.java
FROM openjdk:21-jre-slim # ← Финальный образ
COPY --from=builder /src/App.class /app/
WORKDIR /app
CMD ["java", "App"]
Итоговый ответ
Да, можно запустить Java приложение имея только JRE!
Это именно то, для чего JRE и предназначена:
JRE = Runtime Environment для запуска приложений
Что нужно:
- JRE (Java Runtime Environment)
- Скомпилированное приложение (.jar или .class)
- Зависимости (если есть)
Что НЕ нужно:
- ✗ JDK (избыточно для запуска)
- ✗ IDE
- ✗ Maven/Gradle
Как запустить:
java -jar myapp.jar # JAR файл
java -cp . com.example.Main # Класс напрямую
java -Xmx1024m -jar myapp.jar # С параметрами
Production рекомендация:
- Используй только JRE на production сервере
- Это экономит ~200-300MB дискового пространства
- Используй JDK только на development машинах
- Multi-stage Docker builds лучше всего (компиляция с JDK, запуск с JRE)
Проверка:
java -version # Показывает установленную версию