1. В Dart нет VM, строго говоря. VM используется в Dart только для отладки. А готовое приложение - компилируется в машинный код, что даже еще ниже и быстрее, чем Java VM.
2. Как бы есть большая разница - Java VM в Android - это основная базовая ведь. Она всегда есть, она всегда запущена, львиная часть приложений работает с этой VM. Если, гипотетически, у вас будет еще какая то другая дополнительная VM, кроме основной VM Андроида только под одно приложение - это и объем приложения при скачивании большой и место в оперативной памяти больше нужно, и на диске место больше потребуется.
3. Ненативностью можно считать ограничения Dart по использованию API. Обычному нативному приложению на Java/Kotlin в Android доступно 99,99% API. Но приложению на Dart сделанному доступны только те API, что или встроены в Dart или под какие реализован слой совместимости (написанный на Java/Kotlin) - а это далеко даже не 80%
Чем принципиально разработка под Android на Dart отличается от разработки на Java?
- Hot reload прежде всего
- Ну и разделение на два слоя - собственно Dart и куски-бриджи к API (что пишутся на Java/Kotlin)