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 - Последние изменения в релизе.