DevSnack #44: So, you know how to write Java applications, you are comfortable with a couple of frameworks, and you can solve the majority of your daily challenges. But, what’s going on under the hood? Maybe you are getting an obscure error that you don’t understand, or you are trying to optimize some already well-performing application, or maybe you are just curious. Even if you work with a JVM-based language like Groovy, JRuby, Scala, or Clojure, here you can find some very good snacks that will start feeding your hunger for knowledge.
#1 – JVM Internals
Let’s start with this one. In this article James D. Bloom (@jamesdbloom) will give you an introduction to the internals of the JVM that is very detailed but very easy to grasp at the same time.
#2 – Java Garbage Collection Distilled
In this snack Martin Thompson (@mjpt777) explains how the JVM garbage collector works; i.e. generations, heap spaces, minor and major collections, among other topics. He also gives you an insight into the different trade-offs regarding performance and when to choose one collector over the other.
#3 – Java multi-threading: volatile variables, happens-before relationship, and memory consistency
Concurrency problems are becoming common these days, and they often narrow down to very fundamental concepts of computer science, like how a CPU works. In this post, Sayem Ahmed (@say3mbd) explains the Java volatile keyword and the consequences of using it.
#4 – Reference types in Java: Strong, Soft, weak, Phantom
Did you know that there are different types of references to an object? Even if you already knew, Chandrashekhar (@olntutorlspoint) will help you better understand the topic.
#5 – Exploring Java bytecode
Finally, if you think you know a lot about Java and the JVM, and want to go further, why not learn some Java bytecode? In this article Nish Tahir explores the bytecode basics and encourages you to continue studying it.
DevSnack by Moove-it is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.