6 полезных инструментов командной строки, которые должен знать Java-разработчик

Источник: Technotification Java — один из наиболее популярных языков программирования. Одной из причин столь высокого внимания к этому языку является то, что Java Runtime Environment позволяет запускать Java-приложения на разных платформах. Запуск и компиляцию можно осуществлять, в том числе, из командной строки. Используя инструменты командной строки, разработчик может упростить процесс создания приложений и выполнение многих других задач.Кофе-брейк #36. 6 полезных инструментов командной строки, которые должен знать Java-разработчик. Jbang — создание сценариев оболочки для Java - 1Сегодня я расскажу о шести полезных инструментах командной строки, которые должен знать Java-разработчик.

Агрегатор статистики Java (jstat)

Агрегатор статистики Java или команду jstat используют, когда возникает проблема со скоростью запуска приложения. Это служебный инструмент, который отображает статистику производительности Java Virtual Machine (JVM). Используйте его, когда вам нужно узнать размер динамической памяти или алгоритм автоматической сборки мусора JRE.

Диспетчер зависимостей Java (jdeps)

Jdeps — это анализатор зависимостей классов Java, полезный для быстрого определения статических зависимостей приложений и библиотек. Jdeps также предлагает варианты более новой и предпочтительной API, которую вы можете использовать для замены существующей версии.

Компилятор Java (javac)

Javac — один из самых полезных инструментов командной строки для разработчиков. Он входит в состав JDK из первой версии и включен в сборку многих популярных IDE. Javac используется для устранения любых проблем, возникающих в процессе сборки и развертывания проекта.

Профилировщик Java (javap)

Он отменяет компиляцию, разделяет файлы классов и показывает, что внутри них. Его также называют дизассемблером (Java Class File Disassembler). Вы можете использовать Javap, чтобы узнать, как работает конкретный оператор Java. Также с помощью профилировщика вы можете увидеть методы, доступные в классе, если у вас нет доступа к исходному коду.

Утилита архивирования Java (jar)

Утилита Java Archive или команда jar используется для создания сжатого архивного файла. Это еще один полезный инструмент, которым регулярно пользуются многие разработчики. Jar также может пригодиться, когда вы хотите сравнить одну версию выпуска кода с другой или указать точку входа для встроенных JAR-файлов или других исполняемых файлов.

Инструмент состояния процесса JVM (jps)

Этот инструмент работает независимо от операционной системы и предоставляет удобный способ определения идентификатора процесса (PID). Предположим, вы запустили программу и хотите связать ее с Java Memory-Map (jmap). Для того чтобы сделать это, нужен PID, и именно здесь на помощь приходит jps. В большинстве случаев полезно применять комбинацию флагов «-mlv». Она распечатывает аргументы основного метода, аргументы полных имен пакетов, передаваемые JVM.

Заключение

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

Jbang: полезный инструмент для тестирования библиотек Java

Источник: DZone Всякий раз, когда выходит новая библиотека Java, разработчикам интересно с ней ознакомиться. Но иногда это бывает сложно из-за проблем с настройкой проекта в IDE или Maven. Конечно, пути к классам можно прописать и в командной строке, но для некоторых ленивых разработчиков это слишком громоздко. И вот здесь на помощь приходит jbang! С ним исчезнут проблемы с настройкой проекта для тестирования библиотеки или запуском Java-файла!Кофе-брейк #36. 6 полезных инструментов командной строки, которые должен знать Java-разработчик. Jbang — создание сценариев оболочки для Java - 2Разумеется, в Java есть JShell, но jbang кажется лучше во многих отношениях. Jbang — это небольшой аккуратный инструмент, написанный Максом Ридалом Андерсеном (maxandersen), который:
  • позволяет запускать java-файлы в качестве сценария где угодно — с Java 8+ или jshell;
  • помогает опробовать любую Java API без необходимости установки, настройки или конфигурации проекта для Maven, Gradle или любой другой системы сборки.
Краткий список возможностей jbang:
  • Поддерживает Java 8 или выше, но рекомендуется Java 11;
  • Объявления зависимостей через //DEPS group:artifact:version или @Grab аннотации;
  • Параметры компиляции и выполнения с помощью //JAVAC_OPTIONS и //JAVA_OPTIONS;
  • Поддерживает работу в Windows, Linux и Mac;
  • Запуск приложения JavaFX на Java 8 и выше без необходимости перекодировки;
  • И многое другое...
Теперь давайте разберемся, в чем же заключаются преимущества jbang. Для этого возьмем хорошую библиотеку — Jsoup. Это библиотека Java, которая предоставляет очень удобные API для получения URL-адресов, извлечения и управления содержимым HTML с помощью методов DOM и селекторов CSS или, проще говоря, JQuery-подобного синтаксиса для работы с DOM. Для начала нам нужно будет запустить класс jbang, используя jbang init hellojsoup.java. Это создаст hellojsoup.java файл с hellojsoup классом и основным методом. В верхней части файла также есть команды для Unix !shebang и DEPS объявления. Это объявление является комментарием, где мы указываем Gradle-подобные зависимости от формата — groupId:artifactId:version. В нашем случае это будет org.jsoup:jsoup:1.13.1. Вот код, который выполняет простой вызов Википедии и отображает заголовки в разделе новостей. Это немного измененная версия, представленная на сайте Jsoup.
//usr/bin/env jbang "$0" "$@" ; exit $?
//DEPS org.jsoup:jsoup:1.13.1
import static java.lang.System.*;
import org.jsoup.nodes.Document;
import org.jsoup.Jsoup;
import org.jsoup.select.Elements;
import org.jsoup.nodes.Element;
public class hellojsoup {
        public static void main(String... args) throws Exception {
              Document doc = Jsoup.connect("https://en.wikipedia.org/").get();
              out.println(doc.title());
              Elements newsHeadlines = doc.select("#mp-itn b a");
              for (Element headline : newsHeadlines) {
                    out.println(String.format("%s\n\t%s", headline.attr("title"),                     headline.absUrl("href")));
          }
     }
}
Чтобы запустить код, вам нужно будет ввести следующую команду, где запуск является необязательной командой.
jbang run hellojsoup.java
При запуске этой программы заголовки дня будут отображаться в разделе новостей. На момент написания этой статьи получены следующие заголовки. Shell
Wikipedia, the free encyclopedia
2020 Twitter bitcoin scam
https://en.wikipedia.org/wiki/2020_Twitter_bitcoin_scam
2020 Armenian?Azerbaijani skirmishes
https://en.wikipedia.org/wiki/2020_Armenian%E2%80%93Azerbaijani_skirmishes
C/2020 F3 (NEOWISE)
https://en.wikipedia.org/wiki/C/2020_F3_(NEOWISE)
Portal:Current events
https://en.wikipedia.org/wiki/Portal:Current_events
Deaths in 2020
https://en.wikipedia.org/wiki/Deaths_in_2020
Wikipedia:In the news/Candidates
https://en.wikipedia.org/wiki/Wikipedia:In_the_news/Candidates
Самое замечательное в jbang — это то, насколько он простой и легкий. Он нужен не просто для тестирования библиотек, но и как инструмент, который в будущем будет широко использоваться в производственной среде, особенно в микросервисах и бессерверных приложениях. Никакой сложной настройки сервера, только один-единственный файл Java, который отлично справляется со своей задачей. Jbang поддерживает работу с vertx, undertow, JavaFX, resteasy, ratpack, со всеми основными IDE, включая IntelliJ IDEA, и многими другими технологиями. Если вы хотите узнать более подробную информацию о jbang и ознакомиться с его документацией, посетите страницу этого инструмента на GitHub. Jbang выглядит очень перспективно, поэтому я не удивлюсь, если в будущем он появится в JDK!