From their own site:
Eclipse Vert.x is a toolkit for building reactive applications on the JVM.
It defines the fundamental APIs for writing asynchronous networked applications (eg: db connection, monitoring, authentication, service discovery, clustering, etc.)
Internally, it is based on the Netty project, a high-performance asynchronous networking library for the JVM. However, it provides a higher-level API easier to reason with and still highly performant.
You can use Vert.x callback-based API exclusively but Vert.x also implements an equivalent Rxified API using RxJava under the hood. This provides a great platform to integrate Vert.x modules within RxJava applications.
Vert.x is polyglot as it supports many other JVM based languages APIs such as Kotlin, Groovy, Ruby, Scala, and Ceylon. Moreover, since Vert.x is event-driven and message based, it also provides a JavaScript API quite useful to integrate frontend with backends.
Vert.x provides fluent HTTP endpoints and route configuration backed by handlers where the business logic is implemented. But the real nervous system is the event bus that acts as a telecom provider to all Vert.x local or distributed components.
This very event-bus supports:
- Point-to-point, request-response, and pub-sub messaging
- Communication between polyglot verticles within the same JVM instance
- Clustered communication between polyglot verticles in multiple JVM instances
- Bridge to Stomp or AMQP implementations for integration with other applications
- Bridge to SockJS for direct integration with Javascript frontends
The event-bus is supported by:
Cluster managers such as Hazelcast, InfiniSpan, Ignite or ZooKeeper that provides distributed Maps, Locks, and Counters through a higher-level API access
Vert.x service discovery API providing an address based abstraction to underlying complex addressing schemes
SSL capable TCP service access points for bi-directional secured communication and maximum performance
Finally, Vert.x can be used by itself to develop a full-blown application or used collaboratively with frameworks such as SpringBoot, Fibers, etc.
More details here, here and here.
Hope this helps,
Softjake