JVM не может напрямую запустить код, который ты пишешь. Она может выполнять только программы записанные байт-кодом. Байт-код — это язык низкого уровня, близкий к машинному коду.
Компиляция в Java — это перевод программы написаной на Java (высокий уровень) в такую же программу записанную байт-кодом.
Твой код в файле с расширением .java передается компилятору, и если в коде не было ошибок, после компиляции ты получишь новый файл с байт-кодом. У файла будет такое же имя, но другое расширение: .class. А если в коде были ошибки, то говорят, что «программа не скомпилировалась». Тогда нужно прочитать сообщение об ошибках и исправить их.

Компилятор представляет из себя команду javac, входящий в JDK (Java Development Kit). К примеру, если установить только JRE (Java Runtime Environment), то компилятора там не будет! Будет только JVM, которая умеет запускать только байт-код. Так что устанавливаем JDK, и передаем компилятору наш файл .java.
Для примера возьмем простую программу с выводом в консоль:
class MySolution {
public static void main(String[] args) {
System.out.println("Привет командная строка!");
}
}
Сохраним этот код в файл D:/temp/MySolution.java.
Скомпилируем наш код, используя команду
D:\temp>javac MySolution.java
Если в коде нет ошибок компиляции, в папке temp появится файл MySolution.class. При этом файл MySolution.java с твоим кодом никуда не денется, останется на месте. А вот MySolution.class уже содержит байт-код, и готов к непосредственно запуску с помощью JVM.
Наш пример максимально простой, но команда javac используется и в самых больших и сложных проектах. Поэтому знать принципы ее работы очень полезно.
Компилировать можно и больше одного класса за раз. Например, пусть в папке temp есть еще один файл Cat.java:
D:\temp>javac MySolution.java Cat.java
или так:
D:\temp>javac *.java
После компиляции файлы .class можно упаковать в jar файл, чтоб его было удобно переносить и запускать на разных компьютерах. Пример команды для создания jar файла:
D:\temp>jar cvfe myjar.jar MySolution MySolution.class Cat.class
где:
jar – команда для создания .jar файлов, входит в состав JDK;
cvfe – флаги, означающие:
с – нужно создать новый jar файл;
v – выводить дополнительную информацию в процессе выполнения команды;
f – вместе с myjar.jar говорит о том, файл с каким именем мы получим в результате;
e – вместе с MySolution указывает, какой класс содержит метод main;
MySolution.class Cat.class – разделенные пробелом имена файлов, которые надо упаковать в jar файл.
Запуск полученного jar файла:
D:\temp>java -jar myjar.jar
Для более детального ознакомления: |
---|
|
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ