Компиляция и запуск приложения из командной строки

Компиляция и запуск приложения из командной строки фото
Author: Tatyana Milkina

В этой статье мы научимся с вами компилировать и запускать приложения из командной строки. Конечно же, чаще всего приложения разрабатываются и запускаются из специальных средств разработки, например из Intellij IDEA, работу с которой мы рассмотрим в Создание проекта в IntelliJ IDEA. Но для того, чтобы более ясно понимать, как происходит запуск приложения, мы рассмотрим как это делать из командной строки.

  1. Синтаксис компиляции и запуска из командной строки
  2. Компиляция и запуск программы, состоящей из нескольких файлов
  3. Компиляция с помощью -d
  4. Запуск программ с помощью Java лаунчер
  5. Ключевые моменты

1. Синтаксис компиляции и запуска из командной строки

Перед тем как запустить Java приложение, нам нужно его откомпилировать. Для компиляции программ из командной строки (консоли) используется команда javac.

Синтаксис javac

javac [ключи] [исходники]

Например, чтобы скомпилировать программу MyFirstApp, которую мы рассмотрели в прошлом уроке Создание первого приложения, запустите компилятор, указав имя исходного файла в командной строке следующим образом:

javac MyFirstApp.java

В этом примере ключи отсутствуют - сначала давайте попробуем откомпилировать без ключей, а потом рассмотрим какие они бывают. 

В процессе компиляции исходного кода, каждый отдельный класс помещается в собственный выходной файл, называемый по имени класса и получающий расширение class. 

После того как файл откомпилировался, мы сможем его запустить. Запускается наша программа с помощью команды java.

Синтаксис java:

java [ключи] класс [аргументы]

Например:

java MyFirstApp

После запуска программы, на консоль выведется:

"Hello world!!!"

2. Компиляция и запуск программы, состоящей из нескольких файлов

Давайте рассмотрим пример программы, которая состоит из нескольких файлов:

public class MyFirstApp {
   public static void main(String[] args) {
       Helper.print();
   }
}

 

public class Helper {
   public static void print() {
       System.out.print("Hello world!!!");
   }
}

При компиляции файла MyFirstApp.java, компилятор обнаружит файл Helper, и откомпилирует и его. После чего мы как и в прошлом примере запускаем программу с помощью следующей команды:

java MyFirstApp

Стоит заметить, что при запуске программы указывается только один класс без расширения .class.

3. Компиляция с помощью -d

По умолчанию компилятор записывает сгенерированный .class в тот же каталог, где находится исходный класс .java. Это хорошо для маленьких проектов, но при работе на больших проектах файлы .java и .class должны храниться отдельно.

Ключ -d позволяет указать компилятору, куда записывать сгенерированные .class файлы.

Например, у нас есть такая структура папок:

Структура папок Java приложенияСледующая команда, выполненная из project1 папки сгенерирует файл MyFirstApp.class и запишет его в папку classes (предполагаем, что MyFirstApp не содержит оператора package):

cd project1
javac -d classes src/MyFirstApp.java

Теперь давайте рассмотрим пример компиляции класса com.company.lesson1.MyFirstApp, находящегося в пакете com.company.lesson1. Имеется такая структура каталогов:

Структура папок Java приложения с пакетами

Следующая команда, выполненная из src каталога, сгенерирует файл MyFirstApp.class, и запишет его в каталог classes/com/company/lesson1:

cd myProject/src
javac -d ../classes com/company/lesson1/MyFirstApp.java

Если каталог classes/com/company/lesson1 не существует, то он будет создан при компиляции.

Если же не существует каталог classes, то вы получите ошибку компиляции.   

4. Запуск программ с помощью Java лаунчер

В Java 11 была добавлена возможность компилировать и запускать программу состоящую из одного файла одной командой java.

Вместо вызова двух команд: 

javac MyFirstApp.java 
java MyFirstApp

используем только одну:

java MyFirstApp.java

Файл .class не создается, откомпилированная версия хранится в рабочей памяти и запускается из нее.

В Java 22 возможность компилировать и запускать программу одной командой java была расширена - теперь лаунчер java может запускать программы, состоящие из нескольких исходных файлов Java.

Когда может применяться такой способ запуска приложения:

  • Для обучения. Если Вы только начинаете изучать Java, такой способ запуска может существенно облегчить начальный запуск программ.
  • Если не планируется создание проекта

  • Для экспериментов

Презентацию с видео можно скачать на Patreon.

Курс 'Java для начинающих' на Udemy Курс 'Java для начинающих' на Udemy
Читайте также:
Комментарии