Chapter 10. Java Servers

This chapter explores topics around Java server technologies. At their core, these technologies are all about how to transmit data, usually over HTTP, between clients and servers. Hence, this chapter’s primary focus is on topics common to general server technology: how to scale servers using different thread models, asynchronous responses, asynchronous requests, and efficient handling of JSON data.

Scaling servers is mostly about effective use of threads, and that use requires event-driven, nonblocking I/O. Traditional Java/Jakarta EE servers like Apache Tomcat, IBM WebSphere Application Server, and Oracle WebLogic Server have used Java NIO APIs to do that for quite some time. Current server frameworks like Netty and Eclipse Vert.x isolate the complexity of the Java NIO APIs to provide easy-to-use building blocks for building smaller-footprint servers, and servers like Spring WebFlux and Helidon are built on those frameworks (both use the Netty framework) to provide scalable Java servers.

These newer frameworks offer programming models based on reactive programming. At its core, reactive programming is based on handling asynchronous data streams using an event-based paradigm. Though reactive programming is a different way of looking at the events, for our purposes both reactive programming and asynchronous programming offer the same performance benefit: the ability to scale programs (and in particular, to scale I/O) to many connections or data sources. ...

Get Java Performance, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.