Minor point, but technically a JIT compiler doesn't replace an interpreter. The latter is still there (written in assembly nowadays), and the VM has to trace hotspots and balance the cost of run time compiling vs. the cost of normal interpretation. Of course a JIT code cache helps to avoid the compilation overhead.
To be even more nitpicky about it, a JIT compiler can replace an interpreter. There are compile-only JIT's, like Jikes RVM. But good point in this case, especially since Dalvik is a tracing JIT and relies on the interpreter more than a method JIT usually would.