Какой командой компилируется исходный код Java?

Ответ

Для компиляции Java-программы используется команда javac (Java Compiler). Она преобразует исходный код из файлов .java в байт-код (файлы .class).

Пример компиляции и запуска:

# Компиляция файла MyProgram.java
javac MyProgram.java
# Запуск скомпилированного класса (без указания расширения .class)
java MyProgram

Ключевые моменты:

  • Для использования javac необходим установленный JDK (Java Development Kit).
  • Имя файла .java должно совпадать с именем публичного класса, объявленного в нём.
  • Для проектов с пакетами или внешними библиотеками используются дополнительные флаги, такие как -d для указания выходного каталога и -cp или -classpath для указания путей к зависимостям.

Ответ 18+ 🔞

Давай разберёмся, как этот ваш Java-код из текста в программу превращается, а то некоторые думают, что достаточно файлик .java на рабочий стол бросить и оно само запустится. Хуй там, блядь!

Вот смотри, есть у тебя файл MyProgram.java. Ты его написал, выстрадал, там класс публичный, всё как надо. Чтобы эта писанина ожила, её нужно скомпилировать. Для этого есть специальная утилита — javac, она же Java Compiler. Это как переводчик с человеческого языка на язык виртуальной машины, который называется байт-код. На выходе получаются файлы .class — это уже почти готовая программа.

Делается это просто, но есть нюансы, ёпта:

# Ты говоришь компилятору: "Вот этот файл, мудила, преврати во что-то работающее!"
javac MyProgram.java
# Если всё прошло без ошибок (а они будут, поверь), то в этой же папке появится MyProgram.class
# Чтобы его запустить, команда другая:
java MyProgram

Обрати внимание, когда запускаешь, расширение .class не указываешь! Сказал java MyProgram — и пошло-поехало. Если напишешь java MyProgram.class, то получишь ебанистическую ошибку, потому что система будет искать класс с именем class. Сам такой был, блядь.

А теперь, сука, ключевые моменты, без которых нихуя не получится:

  1. Чтобы команда javac вообще работала, у тебя должен быть установлен не просто Java, а JDK (Java Development Kit). JRE (только для запуска) — это не катит, тут нужен именно комплект для разработки, со всеми этими компиляторами и прочей хуйнёй.
  2. Имя файла .java должно в точности, блядь, совпадать с именем публичного класса внутри него. Написал public class SuperPuper — сохраняй файл как SuperPuper.java. Иначе компилятор тебе ебальник набьёт ошибкой.
  3. Если проект сложнее "Hello World" (а они всегда сложнее), то начинается весёлая жизнь. Используешь пакеты? Готовь флаг -d, чтобы указать, куда складывать скомпилированные .class файлы, иначе они по всей папке раскидаются, как говно мамонтов. Подключил внешние библиотеки (.jar файлы)? Добро пожаловать в ад флагов -cp или -classpath, где ты вручную прописываешь все пути к зависимостям. А иначе программа просто не найдёт нужные классы и накроется медным тазом с ClassNotFoundException.

Вот так вот, в двух словах. Кажется просто, а потом сидишь и думаешь: "Ну что за хуйня опять не работает?". А это, блядь, путь джависта.