Статьи
Утилиты Telegram YouTube Отзывы

Как скомпилировать исходники java вручную

Видеогайд

13 января 2024

Тэги: Java, руководство, файлы.

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

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

Класс Greeter содержит метод sayHello(). Этот метод выводит приветствие на экран:

package ru.devmark.helper;

public class Greeter {
    public void sayHello() {
        System.out.println("Привет, мир!");
    }
}

Сохраним этот исходный код в текстовый файл, имя которого обязательно должно совпадать с именем класса, т.е. Greeter.java.

Класс HelloWorld:

package ru.devmark;

import ru.devmark.helper.Greeter;

public class HelloWorld {
    public static void main(String[] args) {
        var greeter = new Greeter();
        greeter.sayHello();
    }
}

Сохраним исходный код этого класса в файле HelloWorld.java.

Поскольку здесь есть статический метод main(), этот класс можно использовать как точку входа для нашего приложения (так называемый «Main-Class»). Внутри мы создаём экземпляр класса Greeter, вызываем его единственный метод и выводим результат на экран.

Теперь мы готовы к тому, чтобы скомпилировать написанный нами код. Для этого используется утилита javac, которая поставляется вместе с jdk. Выполним эту команду в той папке, где лежат оба наших файла:

javac -d . *.java

Опция -d указывает, куда сложить скомпилированные файлы. В результате в нашей папке помимо исходников появится иерархическая структура папок и файлов:

├── Greeter.java
├── HelloWorld.java
└── ru
    └── devmark
        ├── HelloWorld.class
        └── helper
            └── Greeter.class

Class-файлы – это бинарные файлы с байт-кодом, которые может обрабатывать виртуальная машина Java. Каждый класс компилируется в свой собственный файл. Таким образом достигается модульность нашего приложения. Более того, скомпилированный класс будет работать в любой операционной системе на любой java-машине.

Но когда мы говорим о приложении, то ожидаем увидеть один файл, а не кучу папок. Давайте упакуем наши class-файлы в jar-архив. В этом нам поможет одноимённая утилита.

jar cfe hello.jar ru.devmark.HelloWorld ru

Опция c говорит, что нужно создать новый архив, f задаёт имя будущего архива, а e указывает полное имя main-класса. В конце указываем папку, в которой лежат все class-файлы.

В результате у нас появится файл hello.jar, который готов к запуску:

java -jar hello.jar

После выполнения этой команды на экране вы увидите приветствие, которое генерирует наш класс Greeter.

Примечательно, что jar-архив – это обычный zip-архив определённой структуры. Открыв его любым архиватором, внутри можно обнаружить class-файлы в иерархии пакетов, а также папку META-INF с файлом MANIFEST.MF. Этот файл содержит вспомогательную информацию об архиве.

У меня этот файл манифеста выглядит так, но у вас вторая строка может отличаться в зависимости от версии Java:

Manifest-Version: 1.0
Created-By: 21.0.1 (Eclipse Adoptium)
Main-Class: ru.devmark.HelloWorld

Здесь указано, в какой версии java был создан архив, а также указан Main-Class. Как видите, ничего сложного.

Только что мы рассмотрели процесс компиляции простого проекта. Теперь вы понимаете, сколько рутинных действий за вас выполняет среда разработки.



Комментарии

Добавить комментарий

×

devmark.ru