By Fabio After a first post about HTTP clients, to which I redirect you for an introduction about efficient HTTP on the JVM, let’s now talk about HTTPservers. There are several benchmarks about HTTP servers out there but they’re often hindered by shortcomings such as: Not exercising effectively high-concurrency scenarios and, more generally, considering unrealistic and […]

Read more

By Ron Fabio Why Docker Is Not the Best Container Solution for JVM Applications Virtualized containers and container solutions – first among them Docker – are a smash hit. Containers provide a mechanism for isolating applications and controlling their resource usage that is more performant and less wasteful than virtual machines (although less secure), and Docker […]

Read more

This post accompanies this video and won’t make too much sense without it Last month I gave a talk at the Curry On conference, a new conference co-located with the academic, programming language conference,ECOOP. Curry On is intended to bridge the gap between academia. My academic interests do not include programming languages, which I view as […]

Read more

The actor model is a design pattern for fault-tolerant and highly scalable systems. Actors are independent worker-modules that communicate with other actors only through message-passing, can fail in isolation from other actors but can monitor other actors for failure and take some recovery measures when that happens. Actors are simple, isolated yet coordinated, concurrent workers. Actor-based […]

Read more

By Ron Little’s Law helps us determine the maximum request rate a server can handle. When we apply it, we find that the dominating factor limiting a server’s capacity is not the hardware but the OS. Should we buy more hardware if software is the problem? If not, how can we remove that software limitation […]

Read more

By Ron Quasar is a library that adds true lightweight threads (fibers) to the JVM. These are very cheap and very fast – in fact, fibers behave just like Erlang processes or Go goroutines – and allow you to write simple blocking code while enjoying the same performance benefits of complex asynchronous code. In this post […]

Read more

By Ron This is part 3 in a three-part series: part 1, part 2 Welcome to OGMJ, part 3. After playing with modern Java code in part 1, and exploring deployment, management, monitoring and benchmarking ofJVM applications in part 2, it is time to delve into modern Java web development. But before we do, let me […]

Read more

By Ron This is part 2 in a three-part series: part 1 Welcome to part 2 of the OGMJ. In part 1 we presented new Java language features, libraries and tools, that make Java into a much more lightweight development environment: new build tools, easier docs, expressive code and lightweight concurrency. In this post, we’ll […]

Read more

By Ron More working, useful code has been written in the Java programming language than in any other in history, with the possible exceptions of C and COBOL. When Java was released almost 20 years ago, it took the software world by storm. It was a simpler, safer, alternative to C++, and some time later its […]

Read more