← Назад к вопросам

Можно ли запустить 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. Таблица: Что входит

КомпонентJREJDK
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 для запуска приложений

Что нужно:

  1. JRE (Java Runtime Environment)
  2. Скомпилированное приложение (.jar или .class)
  3. Зависимости (если есть)

Что НЕ нужно:

  • ✗ 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  # Показывает установленную версию