Vert.x
Vert.x | |
---|---|
Тип | фреймворк |
Автор | Tim Fox |
Разработчики | Tim Fox, VMWare, Red Hat, Eclipse Foundation |
Написана на | Java, JavaScript, Apache Groovy, Ruby, Scala, Kotlin |
Операционная система | Cross-platform |
Аппаратная платформа | Java Virtual Machine |
Последняя версия | 4.3.1 (25 мая 2022[1]) |
Тестовая версия | 4.0.0.Beta1 (28 июля 2020[2]) |
Репозиторий | github.com/eclipse/vert.x |
Лицензия | Apache License ver. 2.0, Eclipse Public License ver. 2.0 |
Сайт | vertx.io |
История
[править | править код]Eclipse Vert.x — многоязыковой (Java, Kotlin, JavaScript, Groovy) асинхронный веб-фреймворк работающий на событийно-ориентированной архитектуре и запускается поверх JVM.
Vert.x начал разрабатывать Tim Fox в 2011 пока он работал в VMware.
С версии 2.1.4, Vert.x предоставляет свой API на Java, JavaScript, Groovy, Ruby, Python, Scala, Clojure и Ceylon.
С версии 3.7.0, Vert.x предоставляет свой API на Java, JavaScript, Groovy, Ruby, Scala, Kotlin and Ceylon.
С версии 3.9.1, Vert.x предоставляет свой API на Java, JavaScript, Groovy, Ruby, Scala and Kotlin.
12 января 2016 Tim Fox ушел с поста руководителя проекта Vert.x и на его место встал Julien Viet.
Архитектура
[править | править код]Vert.x использует в своей работе неблокирующий клиенто-серверный фреймворк Netty.
Verticle — это аналог сервлета(или «актора») и является атомарной единицей развёртывания в приложении. Есть 2 типа: Стандартный и Рабочий.
public class MyVerticle extends AbstractVerticle {
// Called when verticle is deployed
public void start() {
}
// Optional - called when verticle is undeployed
public void stop() {
}
}
Handler — обработчик событий внутри Verticle.
HttpServer server = vertx.createHttpServer();
// Router
Router router = Router.router(vertx);
// set Handler for every request
router.route().handler(ctx -> {
// This handler will be called for every request
HttpServerResponse response = ctx.response();
response.putHeader("content-type", "text/plain");
// Write to the response and end it
response.end("Hello World from Vert.x-Web!");
});
server.requestHandler(router).listen(8080);
Router — главный компонент по поиску совпадений для пришедшего запроса.
Route route = router.route("/some/path/");
Route route = router.route().path("/some/path/");
route.handler(ctx -> {
// This handler will be called for the following request paths:
// `/some/path/`
// `/some/path//`
//
// but not:
// `/some/path` the end slash in the path makes it strict
// `/some/path/subdir`
});
//router for POST request
router.post("/some/endpoint").handler(ctx -> {
ctx.request().setExpectMultipart(true);
ctx.next();
});
//router for GET request
router
.get("/some/path")
.respond(
ctx -> ctx
.response()
.putHeader("Content-Type", "text/plain")
.end("hello world!"));
Возможности
[править | править код]- Компоненты могут быть написаны на таких языках как: Java, JavaScript, Groovy, Ruby, Scala, Kotlin и Ceylon.
- Простая асинхронная модель позволяющая писать масштабируемые и неблокирующие приложения.
- Шина событий позволяющая передавать сообщения как внутри приложения, так и между его узлами (нодами).
- Модель «акторов» позволяющая запускать «тяжелые» процессы в для обработки данных или их получении.
- Интеграция с шаблонным движками (MVEL, Jade, Handlebars, Thymeleaf, Apache FreeMarker, Pebble, Rocker, HTTL, Rythm)
- Vert.x 3 требует версии Java не ниже 8
Реализация следующих свойств:
- Кластеризация через Hazelcast, Infinispan и так далее.
- Тестирование через JUnit 5
- Подключение к разным Базам Данных(JDBC, MySQL, PostgreSQL, DB2, MSSQL, MongoDB, Redis, Cassandra)
- Очереди сообщений (Kafka, RabbitMQ, AMQP, MQTT)
- Авторизация через сторонние службы (JWT Auth, Oauth2 Auth)
- Мониторинг работы приложения (Zipkin, OpenTelemetry)
- Интеграция с различными протоколами как STOMP, SMTP и так далее.
- Shell — оболочка выполнения задач сервером.
- Интерфейс для разработки TCP, HTTP и UDP серверов и клиентов.
- Интерфейс для работы с файловой системой.
- Launcher запускающий приложение из архива jar.
- Реактивное программирование приложения при поддержке (RxJava 1, RxJava 2, RxJava 3, Mutiny)
Примеры
[править | править код]Запуск http-сервера на Java:
import io.vertx.core.AbstractVerticle;
public class Server extends AbstractVerticle {
public void start() {
vertx.createHttpServer().requestHandler(req -> {
req.response()
.putHeader("content-type", "text/plain")
.end("Hello from Vert.x!");
}).listen(8080);
}
}
Ссылки
[править | править код]- ↑ Eclipse Vert.x 4.3.1 released! Дата обращения: 28 июня 2022. Архивировано 26 мая 2022 года.
- ↑ Eclipse Vert.x 4 beta 1 . Дата обращения: 28 июля 2020. Архивировано 19 мая 2021 года.
https://github.com/vert-x3 - GitHub страница проекта. https://github.com/vert-x3/wiki/wiki/4.0.3-Release-Notes - Последние изменения в релизе.