Найти тему
Amplicode

Amplicode: учим IDE говорить на языке фреймворка

Вы когда-нибудь задумывались, как много кода, который мы пишем, предназначено именно для решения поставленных задач? Казалось бы, странный вопрос: зачем писать код, который не нужен? Но давайте подумаем, ставят ли разработчику бизнес-задачу написать скрипты миграции? Или подключить Kafka? А может быть, написать тесты? Настроить annotation processor? Можно утверждать, что большая часть кода, который мы пишем ежедневно, обслуживает другой код, который решает бизнес-задачи. Демаркационную линию между ними провести очень сложно. Да и нужно ли?

Сегодня мы хотим представить вам наш новый продукт – Amplicode. Это целая коллекция инструментов, работающих на основе IntelliJ IDEA Community, Ultimate и VS Code. Amplicode учит вашу IDE говорить и думать на языке библиотек и фреймворков – Spring Boot, JPA, Docker, Kafka, Liquibase, MapStruct, StoryBook, ReactAdmin. Все эти инструменты объединены общими принципами, что гарантирует быстрое погружение и удобную работу, несмотря на обилие функций. В результате вы пишете «обслуживающий» код быстрее, эффективнее и качественнее. Как это работает? Расскажем под катом.

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

Если это ваш любимый проект (а мы обычно их любим), то вы в нем неплохо ориентируетесь. И, скорее всего, даже помните какие-то основные классы, с которыми часто работаете. Но проекты растут, присоединяются новые разработчики, появляются новые сервисы... Все в голове не удержишь. И здесь на сцене впервые появляется Amplicode.

Проект как на ладони

Amplicode Explorer показывает ваш проект в разрезе подключенных Spring Boot стартеров, конфигураций, скриптов развертывания, эндпоинтов и многого другого.

Вы можете в два клика увидеть, какие доменные объекты (JPA сущности или, может быть, MongoDB документы) есть в том или ином сервисе, какие между этими сущностями отношения, в какие DTO эти сущности отправляют свои данные.

Важная часть любого сервиса — это его API. Честно говоря, его только ради API и пишут. API — это то, как сервис будет выглядеть для внешнего мира. API бывает разным, и Amplicode это знает. Например, это может быть REST или Kafka, и Amplicode покажет вам его. Не ищите ваши эндопинты через текстовый поиск (если вы, конечно, не помните их наизусть). Раскройте секцию Endpoints, и посмотрите своими глазами. А еще это поможет новоприбывшему бойцу быстрее вкатиться в контекст. Ведь вместо поиска по @Controller и перепрыгивания с класса на класс можно увидеть всю картину целиком!

-2

После написания кода он должен где-то разворачиваться и как-то запускаться. В секции Docker мы видим наши Docker файлы и Docker Compose конфигурации. Короче, запомнили: нужно что-то найти в проекте — бежим в Amplicode Explorer.

Но это не единственное его назначение. Отсюда можно выполнить множество действий над проектом или его частями. Например, подключить новый Spring Boot Starter или популярную библиотеку. А разве есть какая-то сложность с подключением стартера? Открываем pom.xml или build.gradle, добавляем пару строчек... Но это ведь только первый шаг. Если мы подключаем Spring Data JPA, то нам наверняка нужно настроить подключение к базе данных, механизм миграций, будь то Flyway или Liquibase. А подключение Spring Security — это та еще боль. Вы помните, что поменялось в последней версии? Попробуйте, погуглите и с первого раза сделайте все без ошибок. Ради эксперимента. Ну или попросите Amplicode, он сделает это за вас, предварительно спросив, что вы в точности хотите получить.

-3

Говорим на языке фреймворка

Как вы уже поняли, Amplicode позволяет видеть лес за деревьями. А еще он избавляет разработчика от кропотливой работы садовника. В обычной IDE каждый новый класс после своего рождения выглядит одинаково. После этого разработчик начинает вешать на него аннотации, добавлять поля, пишет конструктор и т.д. И в какой-то момент класс становится JPA сущностью, или Spring сервисом, репозиторием. А потом в него нужно «вдохнуть жизнь». А можно сразу? Да, Amplicode может. И даже более того.

У нас есть сущность, и мы хотим загрузить ее из базы? Давайте сделаем репозиторий. А зачем нам эти данные? Возможно, мы хотим выставить их наружу через API? В Rest Controller, например? Amplicode поможет создать вам новый контролер прямо из репозитория, делегировав нужные методы, параллельно настроив целевые эндпоинты.

-4

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

-5

Amplicode Designer

Мы выяснили, что большая часть кода – обслуживающая. Может быть даже не совсем обслуживающая, но в некотором роде типичная и сильно завязанная на тот или иной фреймворк. Есть множество действий, которые ассоциированы с определенным видом файлов, и их Amplicode отображает в своей палитре Amplicode Designer. Делегацию методов репозитория в контроллер или сервис, или методов сервиса в контроллер можно вызвать именно из палитры. Вы можете заранее и не знать, что можно сделать с файлом в активном редакторе. Откройте палитру и посмотрите!

-6

А для уже написанного кода есть секция Инспектор. В нем видно, как можно сконфигурировать выбранную часть кода, а также посмотреть важные значения по умолчанию.

-7

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

Не только визуальные средства

Не все разработчики любят щелкать мышкой. Да, Amplicode позволяет в несколько кликов создать внушительный объем кода, но не все станут открывать для этого палитру, поэтому все эти функции доступны и в обычном редакторе кода через механизмы Intentions (Opt+Enter / Alt+Enter) и Generate (Command + N / Alt + Insert). И нужно признать, что, так или иначе, большую часть времени разработчики будут нажимать на клавиши. И здесь мы подходим к той части, которой мы особенно гордимся.

Помните, мы сделали DTO для сущности? А теперь нам нужно выполнить маппинг на эту DTO в другом месте. Что бы делал разработчик без Amplicode? Пошел в начало класса, создал поле для маппера, добавил его в конструктор. Вернулся бы назад, .map ... mapper::to... ну, вы поняли. Но ведь и ежу понятно, что если есть сущность и есть DTO, то их обязательно кто-то будет мапить. Amplicode дает вам code completion, который так и будет называться: mapToMyBelovedDTO. Несколько ударов по клавиатуре (пальцами), и весь этот код перед нами.

-8

Нужен репозиторий для сущности Owner? Печатаем: ownerRepository, ой, а такого еще нет... Да и какая разница? Совершенно очевидно, о чем тут речь, поэтому Amplicode создаст его на месте (конечно, спросив разрешение у разработчика), и сразу заинжектирует его. Хотим сделать из этого репозитория запрос? Начинаем набирать findBy...FirstName...And...AgeGreater... Enter. Amplicode поднимет небольшой диалог, где уточнит возвращаемый тип и настройки пагинации, и да, создаст этот Derived метод.

-9

Deployment

Как класс — лишь идея объекта, так и наш проект — это всего лишь идея приложения, пока мы его где-то не развернули. Прямо как у Платона (или Сократа?). И здесь Amplicode тоже угадывает ваши мысли, помогая создать идеальный dev environment в Docker Compose, а также полноценную конфигурацию развертывания приложения.

Ваш сервис обслуживается PostgreSQL? Давайте создадим compose сервис в несколько кликов. А если есть PostgreSQL, то почему бы сразу не настроить pgAdmin? То же самое применимо к Kafka, MongoDB и многому другому.

Конечно, здесь вы тоже увидите Amplicode Designer. В палитре перечислены все виды сервисов, конфигурации которых Amplicode поможет настроить. А как же наши Spring Boot сервисы, ради которых все и затевалось? Amplicode сделает для вас идеальный Dockerfile и добавит сервис в docker compose.

-10

Приоткроем завесу тайны: сейчас в разработке находится поддержка helm/kubernates, а еще мы собираемся упростить для вас настройку CI/CD.

Admin UI

Backend-разработчики не часто разрабатывают UI, но, если разрабатывают, то Amplicode поможет быстро создать Admin UI на фреймворке ReactAdmin. Это высокоуровневый фреймворк для, внезапно, админок. Помимо создания самого модуля, Amplicode может за пару минут сделать идеальный CRUD Controller, для которого дальше мы будем клепать экранчики.

-11

И тут мы плавно переходим к VS Code. Эта часть точно требует отдельной статьи, но все же, пару абзацев оставим тут. Для VS Code мы сделали расширение Amplicode Frontend и пакет расширений Amplicode Fullstack (который, например, включает в себя привычные шорткаты из IntellIJ).

Amplicode Frontend следует тем же принципам, что и Amplicode Backend. Тут вы также найдете Explorer и палитру. Вы сможете создавать экраны для ваших сущностей, и Amplicode поможет это сделать наилучшим образом.

Но здесь вас ждет небольшой сюрприз. Вы когда-нибудь видели, чтобы 2 IDE общались друг с другом? Не переживайте, восстание машин еще не скоро. Зато Amplicode Frontend хорошо знает, что происходит на стороне Backend, предсказывает, какие экраны вы можете создать и позволяет перепрыгивать от эндпоинта на стороне Frontend к методу REST контроллера! Но об этом давайте в другой раз)

Внимание к деталям

Amplicode хорошо знает ваш проект и учитывает его особенности при генерации кода. Если у вас подключен Lombok, Amplicode не будет создавать конструкторы там, где можно обойтись @RequiredArgsConstructor. Если у вас подключен MapStruct, то Amplicode будет создавать мапперы именно для него. Для 17 Java вовсе не обязательно генерировать collect(Collectors::toList), ведь можно просто: .toList(). Ну а если вы пишете на Kotlin, то – догадайтесь сами!

Amplicode предоставляет внушительный объем функциональности, которая упрощает повседневную работу разработчика. Даже если бы мы очень захотели, все равно не смогли бы вместить всю ее в статью. Так что рекомендуем посмотреть короткое обзорное видео, которые мы для вас записали.

А это бесплатно?

Да, сейчас это полностью бесплатно. Мы хотим создать крутой инструмент, который сделает разработку приятной. Поэтому у нас есть программа EAP (Early Access Preview), в которой вы платите нам не деньгами, а баг репортами и статистикой использования фичей продукта. Надо сказать, что сейчас это единственная опция. Мы уверены, что ваша обратная связь поможет сделать продукт еще лучше! Если вам очень нужна сборка без сборки статистики – напишите нам.

Конечно, мы думаем о монетизации, но даем слово, что заблаговременно предупредим вас о каких-либо изменениях ценовой политики.

А как попробовать?

Для Amplicode Backend вам нужна IntelliJ IDEA (Community или Ultimate), для Amplicode Frontend – VS Code. Мы запустили сайт amplicode.ru, на котором вы сможете найти дополнительные материалы про наш продукт и инструкцию по установке.

  • Телеграм-канал с новостями и анонсами: t.me/amplicode.
  • Телеграм-чат, где вы можете задать любой вопрос по продукту, предложить новую фичу или зарепортить баг: t.me/amplicode_chat.
  • YouTube-канал, куда мы выкладываем интересные видео про Amplicode и поддерживаемые технологии: youtube.com/@amplicode.

Мы знаем, что многие разработчики вынуждены сидеть на старых Perpetual лицензиях IntelliJ Ultimate 2022.X, и мы в том числе выпускаем Amplicode для них в том числе, для вашего удобства. Однако, поддержка старых версий требует большого количества ресурсов, поэтому новая функциональность для них скорее всего выходить не будет.

-12

Надеемся, Amplicode поможет вам писать код еще эффективнее и станет вашим надежным помощником. Делитесь в нашем чате отзывами и предложениями)