30 апреля 2018
В современной разработке многие рутинные процессы автоматизированы достаточно хорошо, поэтому вам не приходится каждый раз компилировать ваши исходники вручную. Я не сомневаюсь, что вы прекрасно знаете, как это делается. А для тех, кто забыл или решил освежить свои знания, рассмотрим небольшой пример.
Наш проект будет состоять всего из двух классов, причём один будет вызывать метод другого.
Класс Other, единственный метод которого выводит строку текста на экран:
Сохраним этот текст как есть в файл, имя которого обязательно должно совпадать с именем класса, т.е. Other.java.
Класс Main:
Поскольку здесь есть статичный метод main(), то этот класс может использовать как точка начала работы нашего приложения (так называемый «Main-Class»). Внутри мы создаём экземпляр класса Other, вызываем его единственный метод и выводим результат на экран.
Сохраним исходники этого класса в файле Main.java.
Теперь мы готовы к тому, чтобы скомпилировать написанный нами код. Для этого используется утилита javac, которая поставляется вместе с jdk. Выполним эту команду в той папке, где лежат оба наших файла:
Опция -d указывает, какие именно файлы мы хотим скомпилировать. В результате в нашей папке помимо исходников появится иерархическая структура папок и файлов:
class-файлы – это бинарные файлы с байт-кодом, которые может обрабатывать виртуальная машина Java. Обратите внимание, что каждый класс компилируется в свой собственный файл. Таким образом достигается модульность нашего приложения. Более того, скомпилированный класс будет работать в любой операционной системе на любой java-машине.
Но когда мы говорим о приложении, то ожидаем увидеть один файл, а не кучу папок. Давайте упакуем наши class-файлы в jar-архив. В этом нам поможет одноимённая утилита.
Опция c говорит, что нужно создать новый архив, f задаёт имя будущего архива, а e указывает полное имя main-класса. В конце указываем папку, в которой лежает все class-файлы.
В результате вы получите файл lesson1.jar, который готов к запуску:
В результате на экране вы увидите приветствие, которые генерирует наш класс Other.
Примечательно, что jar-архив – это обычный zip-архив определённой структуры. Открыв его любым архиватором вы увидите наши class-файлы в иерархии пакетов, а также папку META-INF с файлом MANIFEST.MF. Этот файл содержит вспомогательную информацию об архиве.
У меня этот файл манифеста выглядит так, но у вас может отличаться:
Здесь указано, в какой версии java был создан архив, а также указан Main-Class. Как видите, ничего сложного.
Только что мы рассмотрели процесс компиляции простого проекта. Надеюсь, теперь вы понимаете, сколько рутинных действий за вас выполняет ваша среда разработки.
Kotlin, Java, Java 11, Java 8, Spring, Spring Boot, Spring Data, SQL, PostgreSQL, Oracle, Linux, Hibernate, Collections, Stream API, многопоточность, файлы, Nginx, Apache, maven, gradle, JUnit, YouTube, новости, руководство, ООП, алгоритмы, головоломки, rest, GraphQL, Excel, XML, json, yaml.