public static void main — точка входа JVM
Точка входа Java — метод public static void main(String[] args). JVM вызывает его только когда вы явно запускаете класс как программу: java com.example.App.
См. также: Первая программа · путь от исходника до запуска · Python — аналог __main__.
Что делает main
| Часть сигнатуры | Смысл |
|---|---|
public | JVM может вызвать метод извне |
static | Вызов без создания объекта класса |
void | Не возвращает значение процессу ОС (код выхода задаётся отдельно) |
String[] args | Аргументы командной строки |
Консольные шаблоны (Scanner, чтение массива, сумма двух чисел) с разбором — Lab — консольные задачи на Java.
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
Запуск (после компиляции):
javac Hello.java
java Hello
IDE и Maven указывают главный класс в конфигурации запуска — по сути тот же выбор, что и java Hello.
Чем это отличается от Python __main__
В Python при импорте модуля выполняется весь код верхнего уровня. В Java импорт класса (import com.example.Calculator;) не вызывает main и не создаёт экземпляр.
public class Calculator {
public static int add(int a, int b) {
return a + b;
}
public static void main(String[] args) {
System.out.println(add(5, 3));
}
}
| Действие | Выполнится ли main |
|---|---|
java Calculator | Да |
Другой класс использует Calculator.add(10, 20) | Нет |
Отдельный метод main в Java — встроенный аналог блока if __name__ == "__main__":: демо и CLI живут в main, API класса — в остальных методах.
Static-блоки и загрузка класса
При первой загрузке класса JVM выполняет static initializer — блок static { … } и присваивания static-полям. Это происходит и при import, если класс реально загружается.
public class Demo {
static {
System.out.println("Класс Demo загружен");
}
public static void main(String[] args) {
System.out.println("main");
}
}
main при импорте без запуска не вызывается, но static-блок может выполниться, если другой код впервые обратился к классу. Тяжёлые побочные эффекты в static-блоках для библиотек — плохая практика.
Несколько классов с main
В одном JAR может быть много классов с main. Запускается один, указанный в манифесте (Main-Class:) или в IDE / java -cp … com.example.App.
Spring Boot и другие фреймворки часто генерируют свой main — вы вызываете SpringApplication.run, а не пишете цикл сервера вручную.
Когда нужен отдельный main
| Ситуация | Подход |
|---|---|
| Консольная утилита, учебный пример | Класс с main |
| Библиотека для других модулей | Публичные API без запуска; тесты в JUnit |
| Веб-приложение | main поднимает контекст Spring; WAR деплоится в servlet-контейнер без вашего main |
Если привыкли оборачивать запуск в if name == "main", в Java эквивалент — вынести логику в public static void main или в метод run(), который вызывается только из main.
Дальше по разделу
| Тема | Статья |
|---|---|
| Первая программа, Maven, IDEA | 13 — Первая программа |
| Пакеты и classpath | 12 — Структура и сборки |
| JUnit | раздел тестирования |
См. также
Другие статьи этого же раздела в боковом меню (как на странице "О разделе"). Основы Java - устройство JDK/JVM, модель компиляции и базовые принципы платформонезависимого выполнения. Java — объектно-ориентированный язык общего назначения с принципом «напиши один раз, запускай в любом месте». Набор советов, правил, принципов и обычаев в разработке на этом языке. История Java — от проекта Green и Oak до OpenJDK, LTS-релизов и современной платформы (модули, records, виртуальные потоки). Библиотеки, фреймворки, инструменты сборки, тестирования, развёртывания и мониторинга. Что такое пакет и пакетная структура, как собираются проекты на Java. Справочник-шпаргалка по конфигурациям в Java — типы, синтаксис, стандартная библиотека, типовые паттерны. Не заменяет пошаговое обучение. Учебный курс — раздел. Гайд по установке и настройке с написанием первой программы и её запуском. Практические примеры — консольные утилиты, композиция классов и первое Swing-приложение. Точки останова, пошаговое выполнение, панели Variables и Call Stack — практика отладки в IntelliJ IDEA. Кавычки, точки, запятые, скобки и прочие знаки препинания. Это полный справочник всех ключевых слов языка Java, включая основные, контекстные и зарезервированные слова.Основы языка Java
Что требуется знать перед началом изучения языка программирования Java
Рекомендации по разработке на Java
История языка Java
Экосистема Java-приложений
Структура и сборки Java-проектов
Справочник по конфигурациям в Java
Первая программа на Java
Простые приложения на Java
Отладка Java-кода в IDE
Синтаксис и пунктуация в Java
Ключевые слова в Java