Всякий раз, когда появляется новая библиотека Java, разработчикам было бы интересно опробовать ее. Однако иногда бывает сложно настроить проект в IDEA или как проект maven вместе с зависимостями. Конечно, пути к классам можно задать в командной строке, но это все равно громоздко для ленивых разработчиков 😉
j bang здесь, чтобы прийти на помощь!
Настройка проекта для тестирования библиотеки или запуска Java-файла с jbang уйдет в прошлое!
Конечно, у Java есть оболочка, но jbang, похоже, лучше во многих отношениях.
банк – это аккуратный маленький инструмент, написанный Максом Райдалом Андерсеном (maxandersen), тот
- позволяет запускать java в виде скриптов в любом месте
- позволяет запускать java в виде скриптов в любом месте с помощью java или shell
- помощь в тестировании любого Java API без необходимости установки, настройки или настройки проекта для Maven, Gradle или любая другая система сборки
Краткий список функций jbang – это
- Требуется Java 8 или выше, но Рекомендуется использовать Java 11
- Объявления зависимостей через
//DEPS group:артефакт:версия
или@Grab
аннотации - Параметры компиляции и выполнения с помощью
//JAVAC_OPTIONS <флаги>
и//JAVA_OPTIONS <флаги>
- Поддерживает платформы – Windows, Linux и Mac
- Прозрачный запуск приложения JavaFX на Java 8 и выше
- И многое другое…
Теперь давайте быстро увидим силу jbang! Давайте попробуем хорошую библиотеку – |/Jsoup – это библиотека Java, которая предоставляет очень удобные API для извлечения URL-адресов, извлечения и управления HTML-контентом с использованием методов DOM и селекторов CSS, или, короче говоря, синтаксиса, подобного jQuery, для работы с DOM.
Во-первых, нам нужно будет инициализировать класс jbang с помощью
jibing init hellojsoup.java
Это создало бы hellojsoup.java
файл с классом hellojsoup
с методом main
В верхней части файла также есть команды для Unix ! дело
и декларация DEPS
Объявление DEPS
представляет собой комментарий, в котором мы указываем gradle-подобные зависимости формата – groupId: артефактИд: версия
В нашем случае это будет 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"))); } } }
Чтобы запустить код, вам нужно будет ввести следующую команду, где run является необязательной командой.
банковский бег hellojsoup.java
Запуск этой программы приведет к отображению заголовков дня в разделе новостей. На момент написания этой статьи результатом было следующее
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
Чтобы попробовать этот код для себя, вот reply.it
Удивительная часть jbang заключается в том, что это так просто и легко. Я считаю, что это делается не только для того, чтобы опробовать библиотеки, но и для того, чтобы стать инструментом, который в будущем также будет широко использоваться в производстве, особенно. в микросервисах и бессерверных приложениях. Никакой сложной настройки сервера, просто один-единственный Java-файл отлично справляется со своей задачей.
В нем есть много примеров, включая vertx, undertow, JavaFX, resteasy, rat pack и многое другое. Он также поддерживает все основные идеи.
Для получения более подробной информации и документации перейдите по ссылке https://github.com/jbangdev/jbang
jdk выглядит более многообещающим, и было бы неудивительно, если бы он был включен в JDK в будущем. Дайте ему попробовать!
Титры изображений: Pixabay
Оригинал: “https://dev.to/rprabhu/jbang-the-power-of-shell-scripting-for-java-41f3”