JavaRush /Java блог /Random UA /Кава-брейк #36. 6 корисних інструментів командного рядка,...

Кава-брейк #36. 6 корисних інструментів командного рядка, які має знати Java-розробник. Jbang: корисний інструмент для тестування бібліотек Java

Стаття з групи Random UA

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. Для цього візьмемо хорошу бібліотеку - Soup. Це бібліотека 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. Ось код, який виконує простий виклик Вікіпедії та відображає заголовки у розділі новин. Це трохи змінена версія, що представлена ​​на сайті Soup.
//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!
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ