Рубрики
Без рубрики

Лучшая, быстрая и легкая Java с Java 12 и Hipster 6

Будьте в курсе последних версий Java и Spring Boot, используя JHipster 6! В этом посте показано, как начать. С тегами java, jhipster, security, oauth.

В последнее время в экосистеме Java многое происходит. Теперь, когда основные версии Java выпускаются каждые шесть месяцев, может быть трудно идти в ногу со временем. Лично я разрабатываю большинство своих Java-приложений с использованием Spring Boot. Из-за этого я застрял на Java 8 до тех пор, пока не была выпущена Spring Boot 2.1.

Spring Boot 2.1 добавил поддержку Java 11, а также улучшения производительности, новую реализацию метрик, новые конечные точки привода и первоклассную поддержку OIDC Spring Security.

Я был веб-разработчиком за много лет до того, как стал разработчиком Java. Я разрабатываю Java уже 20 лет, так что это говорит о многом! Если вы разработчик Java, скорее всего, вы сбиты с толку темпами изменений в мире JavaScript. Если вы считаете, что за Java трудно угнаться, попробуйте не отставать от JavaScript и его экосистемы! Хорошая новость заключается в том, что есть отличный способ не отставать от обоих: просто используйте Hipster .

JHipster 6 использует Spring Boot 2.1 для своего серверного API, что означает, что вы можете использовать Java 11+ для разработки своих приложений JHipster!

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

Как JHipster упрощает разработку Java и JavaScript?

Hipster – один из моих любимых проектов с открытым исходным кодом на планете. Это платформа разработки для создания, разработки и развертывания приложений Spring Boot + Angular. Кроме того, он поддерживает React, Vue и создание микросервисных архитектур с ОС Netflix, Elastic Stack и Docker.

Разработчики Java, как правило, не любят JavaScript, но многие хорошо относятся к TypeScript. Знаешь что? Hipster использует TypeScript для всех своих реализаций фреймворка пользовательского интерфейса!

Hipster упрощает разработку Java и JavaScript, настраивая все для вас и используя последние версии своих базовых фреймворков. Хотите обновить свое приложение, чтобы использовать последние версии? Просто запустите jhipster upgrade .

Установите Java 11 или Java 12

Прежде чем беспокоиться об установке JHipster, установите Java 11. Я рекомендую использовать SDKMAN! для этой задачи. Если он у вас не установлен, это всего лишь команда:

curl -s "https://get.sdkman.io" | bash

Как только вы его установите, вы сможете просмотреть все версии Java 11, доступные с помощью sdk list java .

Установите версию OpenJDK:

sdk install java 11.0.2-open

Если вы предпочитаете использовать Corretto от Amazon, просто используйте 11.0.2-amzn для имени. Если вы хотите быть как можно более хипстером, вы даже можете использовать Java 12!

sdk install java 12.0.0-open

СОВЕТ: Zulu от Azul также доступен, если вы используете 12.0.0-zulu для имени.

Установите JHipster 6

Бета-версия JHipster 6 была выпущена 3 мая 2019 года . Вы можете установить его с помощью приведенной ниже команды.

npm install -g generator-jhipster@beta

ПРИМЕЧАНИЕ : Команда npm является частью Node.js . Вам понадобится Node 10.x для установки JHipster и запуска полезных команд.

Создайте приложение Spring Boot + Angular, работающее на Java 11+

Самый простой способ начать работу с Hipster – создать новый каталог, поместить в него компакт-диск и запустить jhipster . Вам будет предложено ответить на ряд вопросов о приложении, которое вы хотели бы создать. Вопросы варьируются от имени вашего приложения до типа аутентификации, который вы хотели бы использовать, до SQL и NoSQL.

У JHipster также есть язык домена (называемый JDL для языка домена JHipster), который вы можете использовать для определения своего приложения.

application {
  config {}
}

Если вы использовали приведенный выше код для создания своего приложения, оно будет использовать значения по умолчанию:

  • Базовое имя: хипстер

  • Тип приложения: монолит

  • Тип базы данных: sql

  • и т.д.

СОВЕТ: Вы можете увидеть все значения по умолчанию в Документация JDL хипстера .

Чтобы создать приложение с поддержкой OAuth 2.0 с помощью JHipster, создайте файл app.jh в новом каталоге проекта (например, ~/hip app ):

application {
  config {
    baseName hipapp
    authenticationType oauth2
  }
}

Откройте окно терминала и перейдите в тот же каталог, что и этот файл. Выполните следующую команду, чтобы сгенерировать Spring Boot API с пользовательским интерфейсом Angular.

ПРЕДУПРЕЖДЕНИЕ: Убедитесь, что вас нет в вашем домашнем каталоге! Ваш проект будет создан в том же каталоге, что и app.jh .

jhipster import-jdl app.jh

Это создаст множество файлов и установит зависимости с помощью npm install . Ваш терминал должен выглядеть следующим образом, когда вы выполняете эту команду:

Если вы предпочитаете посмотреть, как эта команда выглядит в действии, вы можете посмотреть запись ниже.

Поскольку вы указали oauth2 в качестве типа аутентификации, для Keycloak будет установлена конфигурация Docker Compose.

Keycloak – это лицензированное Apache решение для управления идентификацией и доступом с открытым исходным кодом. В дополнение к созданию файла src/main/docker/keycloak.yml для Docker Compose, JHipster создает каталог src/main/docker/config/realm-config с файлами в нем, которые настраивают Keycloak для работы с JHipster из коробки.

Запустите свое приложение JHipster и войдите в систему с помощью Keycloak

Keycloak должен быть запущен, чтобы ваше приложение JHipster успешно запустилось. Это связано с тем, что Spring Security 5.1 первоклассная поддержка OIDC используется в JHipster 6.

Эта поддержка OIDC включает обнаружение, что означает, что Spring Security взаимодействует с конечной точкой /.well-known/openid-configuration для настройки самой себя. Я завершил миграцию сам и удалил больше кода, чем добавил!

Запустите Keycloak с помощью Docker Compose:

docker-compose -f src/main/docker/keycloak.yml up -d

совет: Если у вас не установлен Docker Compose, см. эти инструкции о том, как его установить.

Затем запустите свое приложение с помощью Maven:

./mvnw

Когда ваше приложение будет запущено и запущено, откройте http://localhost:8080 в вашем любимом браузере и нажмите войти . Вы будете перенаправлены на Keycloak, где вы можете ввести admin/admin для входа в систему.

Довольно ловко, а? Вы только что создали современное одностраничное приложение (SPA), которое использует последнюю выпущенную версию Angular! Не только это, но и то, что он использует наиболее безопасную форму OAuth 2.0 – поток кода авторизации .

записка: Если вас смущает, как OAuth 2.0 и OpenID Connect (OIDC) работают вместе, пожалуйста, смотрите Что, черт возьми, такое OAuth? Короче говоря, OIDC – это тонкий слой поверх OAuth 2.0, который добавляет идентичность.

Используйте Okta: Мы Всегда На Связи!

Keycloak – отличный проект, который отлично подходит для разработки и тестирования. Однако, если вы используете его в производстве, вы будете нести ответственность за его обслуживание, обновление до последних версий и обеспечение его работоспособности 24/7. По этим причинам я рекомендую использовать Okta в производстве. В конце концов, мы всегда на связи! 😃

Создайте веб-приложение OpenID Connect

Для начала зарегистрируйтесь в навсегда бесплатной учетной записи разработчика Okta ((или войдите в {yourOktaDomain} если у вас уже есть учетная запись).

Как только вы войдете в Okta, зарегистрируйте свое клиентское приложение.

  • В верхнем меню нажмите на Приложения

  • Нажмите на Добавить приложение

  • Выберите Веб-сайт и нажмите Следующий

  • Введите Awesome OIDC для Имени (это значение не имеет значения, поэтому не стесняйтесь его изменять)

  • Измените URL-адрес перенаправления для входа в систему на http://localhost:8080/login/oauth2/code/oidc

  • Нажмите Готово , затем Редактировать и добавлять http://localhost:8080 в качестве URL-адреса перенаправления при выходе из системы

  • Нажмите Сохранить

Ваши настройки должны напоминать скриншот ниже, когда вы закончите.

Создать okta.env файл в корневом каталоге вашего проекта и замените значения {..} значениями из вашего приложения Okta:

export SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_OIDC_ISSUER_URI="https://{yourOktaDomain}/oauth2/default"
export SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_OIDC_CLIENT_ID="{clientId}"
export SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_OIDC_CLIENT_SECRET="{clientSecret}"

совет: Добавить *.env в ваш файл .gitignore , чтобы этот файл не попал в вашу систему управления версиями.

Создавайте группы и добавляйте их в качестве утверждений к идентификатору Знак

JHipster по умолчанию настроен для работы с двумя типами пользователей: администраторами и пользователями. Keycloak настраивается для пользователей и групп автоматически, но вам необходимо выполнить некоторую одноразовую настройку для вашей организации Okta.

Создать ROLE_ADMIN и ROLE_USER группа ( Пользователи > Группы > Добавить группу ) и добавлять в них пользователей. Вы можете использовать учетную запись, с которой вы зарегистрировались, или создать нового пользователя ( Пользователи > Добавить человека ). Перейдите к API > Серверы авторизации и нажмите на сервер по умолчанию . Перейдите на вкладку Утверждения и Добавить претензию . Назовите его groups и включите в идентификационный токен. Установите тип значения равным Группы и установите фильтр в качестве регулярного выражения . * . Нажмите Создать .

Запустите свое приложение с помощью следующих команд:

source okta.env
./mvnw

Перейдите к http://localhost:8080 и войдите в систему, используя свои учетные данные Okta.

Разве не здорово, как Spring Boot и Spring Security упрощают переключение поставщиков OIDC?!

ГРУБОСТЬ с JHipster

В этом посте я едва нацарапал представление о том, на что способен хипстер. Например, вы можете создать функциональность CRUD для сущностей (с тестами!) с помощью JDL. Например, создайте файл blog.jh с приведенным ниже кодом.

entity Blog {
  name String required minlength(3),
  handle String required minlength(2)
}

entity BlogEntry {
  title String required,
  content TextBlob required,
  date Instant required
}

entity Tag {
  name String required minlength(2)
}

relationship ManyToOne {
  Blog{user(login)} to User,
  BlogEntry{blog(name)} to Blog
}

relationship ManyToMany {
  BlogEntry{tag(name)} to Tag{entry}
}

paginate BlogEntry, Tag with infinite-scroll

Затем запустите jhipster import-jdl blog.jh в вашем проекте. В репозитории jdl-samples GitHub есть еще много примеров.

Делайте больше с JHipster

Я хотел бы поблагодарить Джо Бабуля и Роб Уинч из команды весенней безопасности. Без их помощи переход хипстеров на использование Spring Security 5.1 был бы невозможен. Вы, ребята зажигайте!!

Я не создавал репозиторий GitHub для этого поста, потому что весь код был сгенерирован. Вы можете найти исходный код для Hipster на GitHub .

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

Не совсем готов к переходу на Hipster 6 и Java 11 +? Я написал несколько руководств, в которых используются JHipster 5 и Java 8.

Я также написал бесплатную мини-книгу о JHipster для InfoQ.

Если вы хотите узнать больше о Spring Security 5.1 и его поддержке OIDC, у нас тоже есть некоторые из них:

Следуйте за нами на @oktadev , чтобы быть в курсе последних событий с Java и ведущими фреймворками JavaScript.

Оригинал: “https://dev.to/oktadev/better-faster-lighter-java-with-java-12-and-jhipster-6-5a4”