Is JVM open source code?

It depends entirely on which JVM you use.

If you use the OpenJDK JVM, then you can get the source code from here.
If you use the Kaffe JVM, you can get the source from here.
If you use the Sun JVM version 6 or later, then you can get the source from here.

If you use a Sun JVM earlier than 6, then you can often get the source under an academic license. If you use an IBM, Oracle, HP, or other JVM, then the source is not open.

Update May 2013

The Version 6 source can still be accessed by the above link, or it can be accessed via this link. This latter link also includes a handy genealogy table that shows how the Oracle JDK and OpenJDK versions match with each other.

Additionally, a more up to date version of the Java 7 source can be found here. This also includes the fixes for the releases of Java 7 since GA.

And, of no surprise to anyone, the Java 8 sources can be found here.


Have a look at hotspot JVM here: http://openjdk.java.net/groups/hotspot/


The core part of the JVM is in the hotspot module of the OpenJDK. However what you need is more likely to be in src.zip.

The hotspot module apart of those classes is

  • mostly in C++
  • not always easy to understand. This has improved over the years and new code tends to be better as they are more aware that the code will have broader consumption.
  • often not what you are looking for.

For this reason if you want to know how the JVM runs it is best to look at the commonly used classes. For example, even something as low level as how lambdas really work at runtime is mostly in the src.zip not much is in the JVM.

Most of the source for the libraries come with the JDK in the src.zip file. Your IDE will use that automatically. You are much better off being familiar with the classes in these libraries than playing with the JDK itself.