>только формально ;), а задумайтесь по сути... если вы так продолжите "формально" - то и зайти можете далеко, только ни туда куда нужно.
1. на java написано достаточно кода, которые не использует никакие библиотеки, за исключением быть может 10 библиотечных вызовов.
2. jni на то и jni, что придуман быть прослойкой между java и dll.
3. вм никогда не была, и не будет так-же проста как dll, просто потому что задачи и условия работы разные.
4. вм ВСЕГДА будет тормознее нативного кода, другое дело, что может и не так сильно, чтобы например писать на с/c++ или тем более asm.
5. каждой задаче - свой инструмент.