Tomcat - это контейнер сервлетов, поэтому он предлагает платформу, которая поможет вам разрабатывать и развертывать приложения на основе HTTP, такие как веб-сайты или веб-службы.
Vert.x вместо этого помогает вам разрабатывать и развертывать любые асинхронные приложения. Это правда, что современные версии Tomcat поддерживает асинхронные сервлеты, но Vert.x поставляется с гораздо большим количеством удобных для пользователя асинхронных API, плюс другой благости:
- Полный Filesystem асинхронный API
- TCP (сервер и клиент)
- UDP (сервер и клиент)
- HTTP (S) (сервер и клиент)
- Общая услуга передачи данных (доля объектов между модулями разноязычных)
- HA и кластеризация
- Кластера сообщений (цикл событий)
- Event шинный мост (продление цикла событий для браузеров через SockJS)
- Растущий экосистема модулей Vert.x
- Возможность встроить Vert.x в наследство КОДИРУЙТЕ
- Используя существующую богатую и твердую экосистему Java библиотек (Vert.x работает на JVM, в отличие от Node.js)
Лично я думаю, что обучение Vert.x очень полезно. На работе я снова использовал те же знания с большим успехом, чтобы реализовать три совершенно разных продукта: сверхбыстрый Redis-прокси с нулевой копией, API REST с поддержкой JPA и реактивное одностраничное веб-приложение.
Взгляните на example code, это довольно прямолинейно, а шаблонный шаблон близок к нулю.
Еще одна вещь: где вы читали Vert.x однопоточное? Неправда! Vert.x имеет очень neat concurrency model, который гарантирует, что все ядра одинаково используются (опять же, в отличие от Node.js).
Наслаждайтесь!
Re "_where, где вы читали Vert.x, однопоточно? _", Wikipedia (https://en.wikipedia.org/wiki/Vert.x) гласит, что этот код "_All является однопоточным, освобождая от хлопот многопоточного программирования ». Возможно, я что-то пропустил, но это не похоже на то, что вы сказали в своем ответе, или с описанием шаблона Multi-Reactor Vert.x, с которым вы связались. Википедия неверна, или их описание относится к чему-то еще целиком? – skomisa
«весь код однопоточный» означает, что одновременно не выполняется никакая вертикаль.Но у вас много вершин в одном приложении, и много потоков в Vert.x. Модель параллелизма не очень далека от шаблона Actor, который вы найдете в Akka и Erlang. – sscarduzio