Google didn't use Sun's open sourced version of Java as the base for their VM. They implemented their own VM from scratch and are thus not covered by the patent protection offered by the open source license.
Because it stinks, technically: JVM (even on mobile devices) was never designed to be memory efficient. Dalvik is, big time. I would even say that we all need "Dalvik for desktop" as JVM, with its enormous startup lag and memory appetite is nearly useless outside of data centers.
Also, Google is betting on mobile big. And if you want to play in that space you better have your own platform and not depend on someone else's licenses. I think it only proves that it was the right move: JVM is now owned by assholes and being in court for patent "infringement" with them is still a lot better than betting the company future on the OS based on a platform owned by assholes.
It's difficult to find hard numbers for Dalvik, but the KVM[1] (Sun's JVM for mobile devices) was designed for memory efficiency and can operate in roughly 128kb of working RAM.
However it achieves that memory use by targeting J2ME not J2SE which is what Dalvik uses. J2ME is a very limited Java target at much more limited phones and not really something suitable for writing cutting edge apps for the next generation of smartphones.
Not-invented-here syndrome, probably. Dalvik seemed intentionally as different from a conventional JVM as possible (different instruction set, register-based rather than stack-based, different executable format, etc), and given the maturity of the JVM architecture it's hard to believe those decisions were entirely for engineering reasons.
The server JVM is very mature; millions of dollars have been poured into making it work great in long-running, high-memory conditions where it has a lot of time to optimize its JIT. The client JVM (focusing on quick startup and low resource usage) has been pretty much neglected ever since people realized "Java applets on the web" wasn't going to happen.
Dalvik seemed intentionally as different from a conventional JVM as possible .. register-based rather than stack-based
That's because register IRs are easier to optimize than stack based ones. Have you heard of SSA? the canonical intermediate representation for high performance compilers; yeah, it's register based.
And Dalvik wasn't the first recent VM to be that "different"; heard of Parrot? it's register based.