As Re Lai explains in this article, web applications have traditionally processed requests synchronously on the server side. Asynchronous programming is generally used on the client side. However, due to the advent of social networking, mobile devices, and the Internet of Things, non-blocking request processing on the server side has taken off as an important technique for meeting ever-more-daunting performance demands.
Lai's article explores the asynchronous support provided in several popular web frameworks--Servlet, JAX-RS, Spring MVC, Vert.x, and the Play Framework--for implementing non-blocking server-side request processing. He also discusses a sample application, todosapp, to show how to implement non-blocking web applications in these frameworks. Read Lai's article