1 Vert.x, asynchronous programming, and reactive systems

This chapter covers

  • What Vert.x is
  • Why distributed systems cannot be avoided
  • The challenges in programming resource-efficient networked applications
  • What asynchronous and non-blocking programming is
  • What a reactive application is, and why asynchronous programming is not enough
  • Alternatives to Vert.x

We developers live in an industry of buzzwords, technologies, and practices hype cycles. I have long taught university students the elements of designing, program-ming, integrating, and deploying applications, and I have witnessed first-hand how complicated it can be for newcomers to navigate the wild ocean of current technologies.

Asynchronous and reactive are important topics in modern applications, and my goal with this book is to help developers understand the core concepts behind these terms, gain practical experience, and recognize when there are benefits to these approaches. We will use Eclipse Vert.x, a toolkit for writing asynchronous applications that has the added benefit of providing solutions for the different definitions of what “reactive” means.

Ensuring that you understand the concepts is a priority for me in this book. While I want to give you a solid understanding of how to write Vert.x applications, I also want to make sure that you can translate the skills you learn here to other similar and possibly competing technologies, now or five years down the road.

1.1 Being distributed and networked is the norm

1.2 Not living on an isolated island

1.3 There is no free lunch on the network

1.4 The simplicity of blocking APIs

1.5 Blocking APIs waste resources, increase costs

1.6 Asynchronous programming with non-blocking I/O

1.7 Multiplexing event-driven processing: The case of the event loop

1.8 What is a reactive system?

1.9 What else does reactive mean?

1.10 What is Vert.x?

1.11 Your first Vert.x application

1.11.1 Preparing the project

1.11.2 The VertxEcho class

1.11.3 The role of callbacks

1.11.4 So is this a reactive application?

1.12 What are the alternatives to Vert.x?