A programming language implementation for a language P, written in language L, usually denotes a function in L which maps strings representing programs in P to effects (interpreters) or to programs in yet another language (compilers).
After that the JVM was the first target platform but the language design was not meant to depend on it.
It is traditional to implement the language in something quick, and then start compiling/interpreting the language in itself as soon as possible (Now you have a very big test suite for free)
What does this mean? A language interpreter naturally abides to the syntax of the language it implements.
> It doesn’t make sense to me to say this language english is implemented in Spanish and German.
Maybe because natural languages are a useless analogy for this in the first place.
OpenJDK is a mix of Java and C++, with long term roadmap to replace more and more with Java, also known as Project Metropolis.
IBM J9 is a mix of C++ and Java.
JikesRVM is bootstraped in Java.
Then there are PTC, Aicas, Websphere RealTime, J/Rockit, Azul (with LLVM integration), GraalVM (mostly Java), Ricoh JVM, Cisco JVM, Gemalto,...
Or here: https://en.wikipedia.org/wiki/HotSpot "Written in C++, Assembly"
Or here: https://blogs.oracle.com/sundararajan/so-you-want-to-read-ho...
I should have said Perl to really bring out the pedants.
Also OpenJDK is just one implementation among several.