When looking through the OpenJDK repositories and trying to build them, I discovered that they contain two very similar implementations of the Hotspot JVM. (Mostly was looking through JDK6 because it has a significantly simpler structure ... but have found the same in the modern releases).
Obviously, the code group "hotspot" will contain an implementation (although that seems to completely be missing an entry-point, but that's not really important here). But "java.base" has many of the same classes with very similar implementations; also referencing itself as being the "Java VM".
Why is this? Is there any specific reason there are two implementations provided - or, more likely, what am I misunderstanding about the JDK?