Как стать автором
Обновить

Быстрый старт в Java. Терминал и Java

Уровень сложностиПростой

В современном мире большинство программистов используют интегрированные среды разработки (IDE), которые предоставляют широкий набор функций и инструментов для создания, отладки и тестирования кода. Однако, не все разработчики умеют работать с терминалом, который также является важным инструментом для запуска и тестирования кода. В данной статье мы поговорим о том, как установить Java, попытаемся найти разницу между OpenJDK и OracleJDK, научимся компилировать, собирать jar-файлы, писать самостоятельно MANIFEST.mf и дебажить свой код в терминале.

Установка Java. Разница между OpenJDK и OracleJDK

Как установить Java? Очень просто, заходим в браузер и пишем: "Скачать Java [ваша операционная система]", и вам высыпаются тысячи страниц с подробными инструкциями. Только помните, что вам для разработки нужен именно JDK, а не JRE! Другое дело - это выбрать между OpenJDK и OracleJDK. В чем же разница? Такой ответ дает ChatGPT:

OracleJDK и OpenJDK - это две различные реализации Java Development Kit (JDK), которые предоставляются разными компаниями. OracleJDK разрабатывается и поддерживается компанией Oracle, а OpenJDK - открытым сообществом разработчиков.

Основная разница между OracleJDK и OpenJDK заключается в лицензировании и поддержке. OracleJDK имеет коммерческую лицензию и предоставляет дополнительную поддержку и инструменты для разработки, такие как JavaFX и Java Mission Control. OpenJDK, с другой стороны, является бесплатным и открытым для использования и распространения, но не предоставляет коммерческой поддержки.

Однако, в последние годы Oracle перестала предоставлять бесплатные обновления OracleJDK для коммерческого использования. Вместо этого они рекомендуют использовать OpenJDK или покупать коммерческую поддержку для OracleJDK.

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

Каждый должен сделать свой выбор! Например, я установил OpenJDK, так как это было гораздо проще, чем установить OracleJDK.

Как проверить, что Java теперь есть в вашем компьютере?

Просто напишите в терминале:

 java -version
Буквы и цифры могут быть другими, главное чтобы не было написано java: команда не найдена
Буквы и цифры могут быть другими, главное чтобы не было написано java: команда не найдена

Если вы получили что-то похожее, то поздравляю! Вы теперь имеете Java на своем компьютере!

Первая программа на Java

Давайте напишем "классическую первую" программу!

public class Hello
{
  public static void main(String[] args)
  {
    System.out.println("Да здравствует, Король Джулиан!");
  }
}

Напишите этот код в любом текстовом редакторе и сохраните под названием Hello.java. Если вы назовете файл по-другому, то код у вас не скомпилируется, так как в первой строчке мы указали, что class у нас носит имя Hello. Вторая строка создает классический для C-подобных языков main класс. Не спрашивайте почему, просто так принято :D. А в третьей строке мы просим язык вывести строку "Да здравствует, Король Джулиан!" Синтаксис Java не является ключевой темой данной статьи, поэтому простите за сжатый рассказ о том, что делает данный код.

Компиляция в терминале

После создания Hello.java перейдем в терминал. Важно перейти в каталог, где лежит этот файл. Для того чтобы скомпилировать файл, нужно написать в терминале:

javac Hello.java

После выполнения этой команды в каталоге, где был файл, создаться новый файл Hello.class

Появился Hello.class
Появился Hello.class

Теперь можно запустить нашу программу. Достаточно написать в терминале:

java Hello
Вывод программы
Вывод программы

К компиляции мы еще вернемся. Но сначала изучим, как собирать jar-файл.

Как собрать jar-файл?

Что такое Jar-файл?

Jar-файл (Java Archive) - это архивный файл, который содержит один или несколько файлов Java-кода, библиотек и других ресурсов, необходимых для выполнения приложения на платформе Java.

Что необходимо для сборки jar-файла? Чтобы собрать jar, вам нужен файл.class и MANIFEST.mf. MANIFEST.mf - это файл, который содержит метаданные для создания jar-файла. Давайте создадим файл MANIFEST.mf в каталоге, где уже лежат два файла: Hello.java, Hello.class. Для того чтобы создать MANIFEST.mf, нужно зайти в текстовый редактор и написать следующие строки.

Manifest-Version: 1.0
Created-By: [указываем номер версии Java]
Main-Class: Hello
  1. В первой строке указываем версию создаваемого файла. По стандарту пишут (1.0)

  2. Во второй строке указываем версию Java. Напишите в терминале java -version и перепишите цифры.

  3. В третьей строке указываем главный класс. Так как у нас программа состоит из одного файла, то указываем Hello, в противном же случае нужно было бы сделать осознанный выбор.

Теперь сохраняем данный файл под названием MANIFEST.mf в каталоге, где лежат наши 2 файла. У нас всё готово для сборки jar-файла! Осталось только перейти в терминал и написать:

jar -cfm Hello.jar MANIFEST.mf Hello.class

Если перейдем в каталог, то увидим, что у нас создался файл Hello.jar, можно было назвать Hello.jar по-другому, здесь имя значения не имеет, главное чтобы файл заканчивался на .jar. Чтобы запустить jar-файл, нужно в консоли написать:

java -jar Hello.jar

Хитрая компиляция

Команда javac имеет много возможностей. Например, чтобы скомпилированный файл сохранить в другой директории достаточно написать при компиляции:

javac Hello.java -d [путь до каталога]

Можно посмотреть процессы, которые происходят во время компиляции, с помощью этой команды:

javac Hello.java -verbose

Существует еще много возможностей. Для подробного изучения напишите в терминале:

man javac

Дебаггинг в терминале

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

javac Hello.java -g

После этого запускаем отладчик jdb (Далее комментарии будут в скобках в коде):

jdb Hello
Initializing jdb ...
(Нужно установить стоп-точку)
> stop at Hello:5
Deferring breakpoint Hello:5.
It will be set after the class is loaded.

(Перейдем к стоп-точке с помощью команды run)
> run
run Hello
Set uncaught java.lang.Throwable
Set deferred uncaught java.lang.Throwable
> 
VM Started: Set deferred breakpoint Hello:5

Breakpoint hit: "thread=main", Hello.main(), line=5 bci=0
5        System.out.println("Да здравствует, Король Джулиан!");


(Если у нас были бы переменные, то их значения можно было прочитать с помощью команды print [имя переменной])
main[1] (Например: print a) 
(Посмотреть отрывок кода можно с помощью команды list)
main[1] list
1    public class Hello
2    {
3      public static void main(String[] args)
4      {
5 =>     System.out.println("Да здравствует, Король Джулиан!");
6      }
7    }
(Для того чтобы продолжить выполнение программы, можно воспользоваться командой cont)
main[1] cont
> Да здравствует, Король Джулиан!

The application exited

Таким образом, можно дебажить ваш код. Конечно, лучше и проще заниматься дебаггингом в IDE, но если что, теперь вы знаете, как это делать в терминале.

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.