How to learn the JVM
JVM learning
Java is The Most Popular (almost) statically typed language and learning this language is undoubtedly one of the best investments you - as a developer - can make if you want to have a warm and cosy feeling of job market security.
Another investment - probbaly not such obvious as learning a specific programming language - is learning about the virtual machine itself. Is the ROI high enough to consider JVM learning as New Year’s Resolution? Well, honestly, I have no idea. Rarely (if ever at all!) had I opportunity to use my JVM/bytecode knowledge at work, but I guess that’s because my knowledge is not wide enough!
I want to change it and here’s my plan:
In the year 2022 I’m about to invest into learning the JVM itself. How should I approach such task?
JVM specification
The first and right answer is to download and read JVM specification. A very daunting task, but a very important one nonetheless.
https://docs.oracle.com/javase/specs/jvms/se17/html/index.html
Why is this the right answer? Because this is the source of truth.
The Internet
- JavaMagazine articles on jvm internals
- Crafting Interpreters - will this one help in lerning JVM? Over 600 pages seem like much, and seems quite interesting (web page)
Courses
If you have bucks to spare: there are e.g. Udemy courses that would deepen the knowledge of Java:
- Java application performance and memory management - 18 266 participants, updated in 2022
- Java multithreading concurrency performance optimization - 34 826 participants, updated this month
- https://www.udemy.com/course/a-comprehensive-introduction-to-java-virtual-machine-jvm/ - 1 585 participants, updated in Dec. 2020
YT videos
With jvm internals search query you can find a lot of resources.
Pace and range problems
There are some known problems with video content:
- it is non-searchable
- it is non-skimmable
- the pace is usually too slow (yes, I’m aware I can listen faster)
- and the intro is too long
- it is hard to find a lecture/conference video with the satisfying level of details
For the above reasons I prefer to study texts, however, the reality (the engaging family obligations that don’t leave much timespace to focus) makes my bluetooth earphones a valuable addition to a sponge and washing up liquid :)
How to make it fun?
How to make it fun? How to remember things? How to remember what I read? I know some ways:
- effective and critial reading
- take notes
- make pictures
- try to explain things to others
- learn tools/libraries in the process (javap)
Let’s start
In the next few blog posts I will be focusing on JVM internals (as I will slowly go through JVM specification). If you haven’t read the JVM spec yet, you can join me!
Let’s not treat this challenge as another New Year’s resolution (even if it is).
Let’s start a journey that would make us better progrmamers and professionals.
All entries related to JVM spec are grouped in JVM Spec series.