A couple of years ago I wrote a post about the GC progress between JDK 8 and JDK 17 for our three main GCs. With the JDK 21 release this fall, we now have a new LTS release to benchmark and generate some GC performance charts for. JDK 21 and the other releases since JDK 17 have delivered a set of noteworthy features such as Virtual Threads, Pattern Matching for switch and Generational ZGC. Let’s see how it performs.
In my experience, large companies tend to base their Cloud Transformation efforts on several foundations: Java applications as a go-to for backend systems, Building backend systems in microservices architecture - whether they are truly micro-, or rather macro- or nano- is another topic, Re-purposing their Java developers talent pool if available, or hiring new Java developers instead, Delegating system design to Software Architects and Software Engineers who might not necessarily have prior cloud or microservices experience.
Will a LinkedList be faster? Should I swap the `for each` with an `iterator`? Should this `ArrayList` be an `Array`? This article came to be in response to an optimization so malevolent it has permanently etched itself into my memory.