Search
Write a publication
Pull to refresh

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

Level of difficultyEasy

В современном мире большинство программистов используют интегрированные среды разработки (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, но если что, теперь вы знаете, как это делать в терминале.

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.