Обзор различных инструментов, которые могут быть полезны для разработчиков программного обеспечения, ориентированных на Java или JVM, и других лиц.

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

Интегрированные среды разработки (также известные как IDE)

Выбор IDE зависит от личных предпочтений. Нет хороших или плохих вариантов. Лучший тот, который подходит вам лучше всего. На рынке существует множество вариантов для Java, таких как IntelliJ IDEA, NetBeans, Eclipse или Visual Studio Code (с некоторыми расширениями Java). Вы также можете рассмотреть возможность использования Neovim, если вы являетесь энтузиастом VIM и хотите, чтобы опыт был максимально адаптирован к вашим потребностям.

Мой личный выбор — IntelliJ IDEA. Он поставляется как с бесплатной, так и с корпоративной версиями. Если вы студент, вы подаете заявку на Образовательную лицензию, чтобы бесплатно получить весь потенциал корпоративной версии. Процесс прост, и я рекомендую вам попробовать!

IntelliJ — очень многофункциональная и мощная IDE. Вы, вероятно, не будете использовать все из них, но наверняка вам понравятся некоторые из них. Он обеспечивает отличную поддержку инструментов сборки и упрощает разработку приложений. Что мне нравится в этом, так это возможность использования пользователями, ориентированными на клавиатуру, и теми, кто предпочитает навигацию с помощью мыши. Вы также можете использовать его для проектов, не связанных с Java, таких как приложения Node.js, что также полезно, поскольку вы можете хранить все в одном месте. Существует также отличная система плагинов, которая может предоставить вам бесплатные / платные дополнительные функции. Вы также можете использовать встроенный инструмент управления базой данных (который мне очень нравится), встроенный терминал, управление системой контроля версий, встроенный предварительный просмотр веб-сайта, клиент API и многое другое.

Однако, все имеет свою цену. Вы можете чувствовать себя ошеломленным количеством кнопок/вкладок и опций. JetBrains (компания, разработавшая этот продукт) недавно предложила новый пользовательский интерфейс, который поможет уменьшить эту визуальную сложность. Помимо визуального аспекта, множество опций может сделать кривую обучения более высокой. Вы можете редко сталкиваться с некоторыми замедлениями, и ему также нравится ваша оперативная память, поэтому ожидайте, что он будет использовать заметную ее часть.

Вот список плагинов, которые могут оказаться полезными, если вы решите использовать IntelliJ:

Вот список функций IntelliJ, которые я очень часто упускаю из виду, но которые очень полезны:

JShell

Инструмент Java Shell — это недооцененный инструмент, о котором многие люди не знают, по крайней мере, я долгое время знал. Это удобно при создании прототипов или изучении некоторых параметров при написании кода Java.

JShell — это командная строка, которая работает как цикл чтения-оценки-печати. С его помощью вы можете быстро проводить эксперименты или пробовать разные операторы, не прибегая к проекту IDE или компиляции кода.
Что еще более важно, вам не нужно устанавливать его отдельно. Начиная с JDK 9, он должен быть в комплекте с ним.

В основном я использую только базовые функции для прототипирования. Тем не менее, он также поддерживает сценарии запуска, импорт внешнего кода или макросы клавиатуры — подробности см. в связанной документации Oracle. Посмотрите на изображение ниже, чтобы увидеть, как использовать инструмент.

СДКМАН

SDKMAN — это удобный инструмент командной строки, который помогает вам управлять и устанавливать различные типы SDK (комплектов для разработки программного обеспечения). Это может быть полезно при работе над проектами, требующими разных версий Java. Это поможет вам легко установить разные версии JDK от разных производителей (см. полный список здесь). С помощью этого инструмента вы можете мгновенно изменить используемый в настоящее время в контексте оболочки или глобально, чтобы он соответствовал потребностям вашего проекта.

Инструмент не ограничивается только JDK. Он также поддерживает различные инструменты сборки, связанные с JVM, такие как Ant, Maven или Gradle. Вы можете установить другие SDK, такие как Groovy/Kotlin/Scala, и такие инструменты, как Spring Boot CLI (полный список доступен здесь).

Ознакомьтесь с официальным руководством по установке, если хотите попробовать. вне. Вот некоторые из наиболее полезных команд, которые помогут вам начать работу.

Список всех доступных типов SDK или версий данного SDK:

sdk list
#sdk list [candidate]
sdk list java

Установите или удалите указанную версию SDK:

#sdk install <candidate> [version]
sdk install java 17.0.8-graal

#sdk uninstall <candidate> [version]
sdk uninstall java 17.0.8-graal

Установите текущую используемую версию или версию по умолчанию для SDK:

#sdk use <candidate> [version]
sdk use gradle 8.2

#sdk default <candidate> [version]
sdk defaut gradle 8.2

SDKMAN также предоставляет концепцию так называемых сред. Он основан на файле конфигурации с именем. .sdkman(с парами ключ=значение). Это позволяет вам отправить необходимую конфигурацию для вашего проекта с кодом, настроить ее с помощью одной единственной команды и поделиться ею с другими разработчиками.

#Initialize environment file
sdk env init
#Install all required SDKs for the environment
sdk env install
#Use project environement as current
sdk env

Вы также можете настроить инструмент для автоматической смены среды на проектную по команде cd при открытии каталога проекта. Для этого используйте команду sdk config и установите для флага sdkman_auto_env значение true.

Время выполнения контейнера

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

Для этого вам понадобится среда выполнения контейнера. Есть много вариантов, которые вы можете использовать. Очень часто, помимо среды выполнения, которая позволяет вам запускать контейнеры, они также предоставляют дополнительные функции, такие как простой в настройке кластер Kubernetes, который вы можете запустить на своем компьютере. Это мой лучший выбор:

  • Colima — простая в использовании и настраиваемая среда выполнения контейнеров на базе CLI с поддержкой ноутбуков на базе Intel и ARM. В качестве движка он может использовать docker или containerd. Он также позволяет настроить локально работающий кластер K8S.
  • Docker Desktop — мой предыдущий первый выбор с чистым графическим интерфейсом, созданным создателями проекта Docker, использует движок docker и предоставляет другие функции, такие как управление репозиториями образов, расширения и т. д. Однако в течение некоторого времени для коммерческого использования требуется платная лицензия.
  • Podman — еще одна популярная альтернатива, которая предоставляет как CLI, так и GUI версии. Он может использовать движок Podman, но настольная версия также поддерживает другие движки, такие как docker или lima.

Другие инструменты

Есть еще два инструмента, которые могут оказаться полезными время от времени.

Первый — VisualVM — легковесный профилировщик, который позволяет проверить размер кучи, получить дамп потока и т. д. Некоторое время он был интегрирован в JDK, но сейчас его нужно скачивать отдельно.

Второй — клиент API. Если вы не сторонник прямого использования curl для выполнения тестового запроса к некоторым конечным точкам API, Postman или Insomni — инструмент для вас.

Это все, чем я хотел поделиться! Я надеюсь, что вы нашли здесь что-то полезное или узнали что-то новое. Не стесняйтесь оставлять комментарии :)

Спасибо, что дочитали до конца. Пожалуйста, следите за автором и этой публикацией. Посетите Stackademic, чтобы узнать больше о том, как мы демократизируем бесплатное обучение программированию по всему миру.