About this guide

We assume that the reader is familiar with the Java programming language and its ecosystem.

We will start from a wiki web application backed by a relational database and server-side rendering of pages; then we will evolve the application through several steps until it becomes a modern single-page application with “real-time”.[1] web features. Along the way you will learn to:

  1. Design a web application with server-side rendering of pages through templates, and using a relational database for persisting data.

  2. Cleanly isolate each technical component as a reusable event processing unit called a verticle.

  3. Extract Vert.x services for facilitating the design of verticles that communicate with each other seamlessly both within the same JVM process or among distributed nodes in a cluster.

  4. Testing code with asynchronous operations.

  5. Integrating with third-party services exposing a HTTP/JSON web API.

  6. Exposing a HTTP/JSON web API.

  7. Securing and controlling access using HTTPS, user authentication for web browser sessions and JWT tokens for third-party client applications.

  8. Refactoring some code to use reactive programming with the popular RxJava library and its Vert.x integration.

  9. Client-side programming of a single-page application with AngularJS.

  10. Real-time web programming using the unified Vert.x event bus integration over SockJS.

Note
The source of both this document and the code examples are available from https://github.com/vert-x3/vertx-guide-for-java-devs. We welcome issue reports, feedback and pull-requests!