Привет, Хабр! Представляю вашему вниманию перевод статьи Дмитрия Корнилова Helidon Takes Flight. Я не являюсь сотрудником Oracle, но мне показалась интересной статья о новом, набирающем популярность, типе фреймворков. Итак, поехали…
Сегодня хороший день. Сегодня мы представляем новый Java-фреймворк из семейства MicroProfile для реализации микросервисов. Проект Helidon — это новый Java-фреймворк от Oracle.
Helidon, с греческого перевода ласточка, тип птиц, согласно Википедии, с стройным обтекаемым телом и заостренными крыльями, которые обеспечивают большую маневренность и… очень эффективный полет. Идеально подходит для полета в облаках.
Некоторое время назад началась работа над тем, чем сейчас является проект Helidon. Когда мы вошли на рынок облачных решений, а архитектура микросервисов стала очень популярной для создания облачных сервисов, мы поняли, что экспертизу разработки также необходимо расширять. Возможно создание микросервисов с использованием Java EE, но лучше иметь инфраструктуру, разработанную с нуля для создания микросервисов. Мы хотели создать легковесный набор библиотек, не требующих сервера приложений и облака для Java SE приложений. Эти библиотеки могут использоваться отдельно друг от друга, но при совместном использовании обеспечат разработчику создание каркаса микросервиса: начальную конфигурацию, подсистему безопасности и веб-сервер.
Уже предпринимаются попытки создать стандартные микросервисные системы из MicroProfile. MicroProfile довольно популярен в сообществе Java EE / Jakarta EE и предоставляет опыт разработки, подобный Java EE. Нам нравится идея и мы поддерживаем эту инициативу. Helidon реализует MicroProfile 1.1. Мы продолжим работу над внедрением новых версий MicroProfile и намерены поддерживать соответствующие стандарты Jakarta EE в этой области, поскольку они уже описаны.
Helidon сделан в Oracle, поэтому не удивляйтесь, что будет интеграция с Oracle Cloud. Они не включены в первоначальную версию, но будут добавлены позже. Helidon уже используется многими внутренними проектами Oracle и эти интеграции упрощают жизнь наших разработчиков. Мы считаем, что это упростит вашу жизнь, если вы используете Oracle Cloud. Если нет, то эти интеграции не являются обязательными.
Java-фреймворки для написания микросервисов делятся на несколько категорий, от малых до больших:
Helidon поставляется в двух вариантах и принадлежит к двум категориям: Microframeworks и MicroProfile.
Архитектура Helidon-а отображена ниже
Компоненты Helidon SE окрашены в зеленый цвет, среди которых — Config, Security и RxServer.
Java EE/Jakarta EE компоненты окрашены в серый цвет, среди которых — JSON-P, JAX-RS/Jersey и CDI. Им требуется MicroProfile реализация. Helidon MP является прослойкой поверх Helidon SE компонент. Дополнительные компоненты сервисов Oracle Cloud окрашены красным цветом и могут быть использованы как Helidon SE, так и Helidon MP компонентами.
Простейший способ для начала работы с Helidon — это Maven проект на Java 8(или выше), в котором вы указываете Helidon bom-pom и минимальные зависимости:
Helidon SE является основой для создания легковесных реактивных микросервисов. Пример «Hello world»:
В данном случае мы запускаем web-сервер на произвольном(свободном) порту и открываем доступ по /hello.
Теперь добавим реализацию MicroProfile Metrics интерфейсов для Helidon SE(без поддержки DI, поскольку это не включено в SE). Для этого потребуются следующие зависимости:
Реализация:
Теперь нам доступны следующие endpoint-ы:
Helidon MP — это реализация Eclipse Microprofile и среда выполнения для микросервисов.
Для создания «Hello world»-приложения, которое использует метрики измерения количества вызовов, вы должны создать класс JAX-RS-ресурсов для обработки запросов:
а затем запустить сервер с этим ресурсом:
Также вам необходимо создать beans.xml в src/main/resources/META-INF каталоге для активизации CDI:
С данной конфигурацией будет запущен web-сервер на порту по-умолчанию(7001) и открытым доступом по /hello.. При этом будут доступны следующие endpoint-ы:
У нас много планов, которые годятся на отдельную статью.
Наша краткосрочная цель — это освещение и ознакомление с Helidon-ом в Java-сообществе. Мы планируем рассказать о Helidon на некоторых конференциях. Уже запланировано четыре доклада о Helidon на Oracle Code One 2018. Мы также подали заявку на EclipseCon Europe 2018 и будем участвовать в Jakarta EE/MicroProfile Community Day. Учебные материалы, такие как видео, примеры использования, статьи и т.д. уже в разработке и скоро будут опубликованы.
Что касается технической стороны, то мы работаем на реализацией следующей версии MicroProfile, поддержкой GraalVM.
Мы работаем и над другими крутыми штуками, но пока не можем раскрыть всех карт. Оставайтесь с нами, мы объявим новые фичи, как только они будут готовы.
Сегодня хороший день. Сегодня мы представляем новый Java-фреймворк из семейства MicroProfile для реализации микросервисов. Проект Helidon — это новый Java-фреймворк от Oracle.
Helidon, с греческого перевода ласточка, тип птиц, согласно Википедии, с стройным обтекаемым телом и заостренными крыльями, которые обеспечивают большую маневренность и… очень эффективный полет. Идеально подходит для полета в облаках.
Введение
Некоторое время назад началась работа над тем, чем сейчас является проект Helidon. Когда мы вошли на рынок облачных решений, а архитектура микросервисов стала очень популярной для создания облачных сервисов, мы поняли, что экспертизу разработки также необходимо расширять. Возможно создание микросервисов с использованием Java EE, но лучше иметь инфраструктуру, разработанную с нуля для создания микросервисов. Мы хотели создать легковесный набор библиотек, не требующих сервера приложений и облака для Java SE приложений. Эти библиотеки могут использоваться отдельно друг от друга, но при совместном использовании обеспечат разработчику создание каркаса микросервиса: начальную конфигурацию, подсистему безопасности и веб-сервер.
Уже предпринимаются попытки создать стандартные микросервисные системы из MicroProfile. MicroProfile довольно популярен в сообществе Java EE / Jakarta EE и предоставляет опыт разработки, подобный Java EE. Нам нравится идея и мы поддерживаем эту инициативу. Helidon реализует MicroProfile 1.1. Мы продолжим работу над внедрением новых версий MicroProfile и намерены поддерживать соответствующие стандарты Jakarta EE в этой области, поскольку они уже описаны.
Helidon сделан в Oracle, поэтому не удивляйтесь, что будет интеграция с Oracle Cloud. Они не включены в первоначальную версию, но будут добавлены позже. Helidon уже используется многими внутренними проектами Oracle и эти интеграции упрощают жизнь наших разработчиков. Мы считаем, что это упростит вашу жизнь, если вы используете Oracle Cloud. Если нет, то эти интеграции не являются обязательными.
Классификация
Java-фреймворки для написания микросервисов делятся на несколько категорий, от малых до больших:
- Microframeworks — простые, забавные, с намеренно ограниченным набором возможностей, например: Spark, Javalin, Micronaut и другие.
- MicroProfile — Более знакомая Java EE разработчикам, но немного «тяжелее». Некоторые из них разработаны поверх Java EE серверов приложений, например: Thorntail (ранее Wildfly Swarm), OpenLiberty, Payara.
- Full Stack — полнофункциональные, такие как Spring Boot.
Helidon поставляется в двух вариантах и принадлежит к двум категориям: Microframeworks и MicroProfile.
- Helidon SE — простой, функциональный, легковесный микрофреймворк, разработанный в современном reactive-стиле. В нем нет «магии». Не требуется специального окружения, в качестве него используется JDK.
- Helidon MP — реализация Eclipse Microprofile, предоставляющая стиль разработки, знакомая Java EE/Jakarta EE разработчикам.
Архитектура
Архитектура Helidon-а отображена ниже
Компоненты Helidon SE окрашены в зеленый цвет, среди которых — Config, Security и RxServer.
Java EE/Jakarta EE компоненты окрашены в серый цвет, среди которых — JSON-P, JAX-RS/Jersey и CDI. Им требуется MicroProfile реализация. Helidon MP является прослойкой поверх Helidon SE компонент. Дополнительные компоненты сервисов Oracle Cloud окрашены красным цветом и могут быть использованы как Helidon SE, так и Helidon MP компонентами.
Примеры использования
Установка
Простейший способ для начала работы с Helidon — это Maven проект на Java 8(или выше), в котором вы указываете Helidon bom-pom и минимальные зависимости:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.helidon</groupId>
<artifactId>helidon-bom</artifactId>
<version>${helidon-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
.....
<dependency>
<groupId>io.helidon.webserver</groupId>
<artifactId>helidon-webserver-netty</artifactId>
</dependency>
Helidon SE
Helidon SE является основой для создания легковесных реактивных микросервисов. Пример «Hello world»:
import io.helidon.webserver.Routing;
import io.helidon.webserver.WebServer;
.....
Routing routing = Routing.builder()
.get("/hello", (req, res) -> res.send("Hello World"))
.build();
WebServer.create(routing)
.start();
В данном случае мы запускаем web-сервер на произвольном(свободном) порту и открываем доступ по /hello.
Добавление метрик
Теперь добавим реализацию MicroProfile Metrics интерфейсов для Helidon SE(без поддержки DI, поскольку это не включено в SE). Для этого потребуются следующие зависимости:
<dependency>
<groupId>io.helidon.metrics</groupId>
<artifactId>helidon-metrics-se</artifactId>
</dependency>
Реализация:
// создаем реестр метрик
MetricsSupport metricsSupport = MetricsSupport.create();
// получаем реестр
MetricRegistry registry = RegistryFactory
.getRegistryFactory()
.get()
.getRegistry(MetricRegistry.Type.APPLICATION);
// создаем счетчик
Counter helloCounter = registry.counter("helloCounter");
Routing routing = Routing.builder()
// регистрируем поддержку метрик web-сервером
.register(metricsSupport)
.get("/hello", (req, res) -> {
// инкрементируем счетчик
helloCounter.inc();
res.send("Hello World");
})
.build();
WebServer.create(routing)
.start();
Теперь нам доступны следующие endpoint-ы:
- /metrics — все основные метрики
- /metrics/application/helloCounter — метрики, созданные «hello world»-приложением
Helidon MP
Helidon MP — это реализация Eclipse Microprofile и среда выполнения для микросервисов.
Для создания «Hello world»-приложения, которое использует метрики измерения количества вызовов, вы должны создать класс JAX-RS-ресурсов для обработки запросов:
@Path("hello")
@RequestScoped // разрешаем использование CDI
public class HelloWorld {
@GET
@Metered
public String hello() {
return "Hello World";
}
}
а затем запустить сервер с этим ресурсом:
Server.builder()
.addResourceClass(HelloWorld.class)
.build()
.start();
Также вам необходимо создать beans.xml в src/main/resources/META-INF каталоге для активизации CDI:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd"
bean-discovery-mode="annotated">
</beans>
С данной конфигурацией будет запущен web-сервер на порту по-умолчанию(7001) и открытым доступом по /hello.. При этом будут доступны следующие endpoint-ы:
- localhost:7001/hello — само приложение «hello world»
- localhost:7001/metrics — MicroProfile метрики
- localhost:7001/metrics/application/com.oracle.tlanger.HelloWorld.hello — метрики нашего «hello world» приложения
- localhost:7001/health — метрики состояния MicroProfile
Планы
У нас много планов, которые годятся на отдельную статью.
Наша краткосрочная цель — это освещение и ознакомление с Helidon-ом в Java-сообществе. Мы планируем рассказать о Helidon на некоторых конференциях. Уже запланировано четыре доклада о Helidon на Oracle Code One 2018. Мы также подали заявку на EclipseCon Europe 2018 и будем участвовать в Jakarta EE/MicroProfile Community Day. Учебные материалы, такие как видео, примеры использования, статьи и т.д. уже в разработке и скоро будут опубликованы.
Что касается технической стороны, то мы работаем на реализацией следующей версии MicroProfile, поддержкой GraalVM.
Мы работаем и над другими крутыми штуками, но пока не можем раскрыть всех карт. Оставайтесь с нами, мы объявим новые фичи, как только они будут готовы.
Источники
- Helidon web-сайт helidon.io
- Helidon on Twitter: @helidon_project
- GitHub-репозиторий github.com/oracle/helidon
Возможно вам это будет интересно:
- Изначально название было J4C (Java for Cloud)
- Helidon разрабатывается распределенной командой из Праги и США
- Helidon уже используется более чем десятью проектами в Oracle
- Некоторые компоненты Helidon еще в разработки и будут общедоступны через некоторое время