В последнее время в экосистеме 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.
Создайте фотогалерею PWA с помощью React, Spring Boot и Hipster
Разработка архитектуры микросервисов с использованием OAuth 2.0 и JHipster
Используйте Ionic для JHipster для создания мобильных приложений с аутентификацией OIDC
Создайте мобильное приложение с помощью React Native и Spring Boot
Я также написал бесплатную мини-книгу о JHipster для InfoQ.
Если вы хотите узнать больше о Spring Security 5.1 и его поддержке OIDC, у нас тоже есть некоторые из них:
Перенесите свое приложение Spring Boot на новейшую и лучшую версию Spring Security и OAuth 2.0
Spring Boot 2.1: Выдающаяся поддержка OIDC, OAuth 2.0 и реактивного API
Следуйте за нами на @oktadev , чтобы быть в курсе последних событий с Java и ведущими фреймворками JavaScript.
Оригинал: “https://dev.to/oktadev/better-faster-lighter-java-with-java-12-and-jhipster-6-5a4”