JVM is an abstraction. It's a software layer specifically designed to allow the Java language to be platform-agnostic by relying on the existence of a specs-compatible runtime engine "everywhere."
But ... one size does not fit all. If you're trying to "wedge" Java into a very small environment, such as an underpowered (but cheap) Android-style mobile ...
Java is a spec, not a product
Java is not a specific product or binary. The Java platform is defined by a set of specifications for the language and the JVM, plus JSRs and JEPs.
the official JVM implementation that Oracle provides
There is nothing "official" about any particular Java implementation. Any implementation that fully implements ...
Why might I, as a developer be dissatisfied with the official JVM implementation that Oracle provides and decide to build up a different one?
Which one? Oracle has at least three different official JVM implementations!
A couple of reasons why one might develop a JVM implementation are:
Platform support: you want to run Java on a platform for which Oracle ...