Hé hé, c'est bien d'assumer son statut de troll. 
Et moi j'assume celui de celui qui marche à fond. ;)
Allons-y :
1- La machine virtuelle se révèle fort pratique lorsque tu sais que ton application sera déployée en milieu hétérogène. Mettons que tu sois un éditeur logiciel et que tu développe/vende/supporte le progiciel toto. C'est quand-même commode de se dire qu'on pourra vendre son bousin à des clients ayant une architecture x86/Windows, aussi bien que des clients sous x86_64/Linux, sous Sparc/Solaris,…
2- JNI est un framework Java qui permet d'embarquer des méthodes natives d'autres langages. Donc asm, c++, ada ou que sais-je.
3- Quant à la manipulation sur la mémoire, en effet, c'est sous traité par le garbage collector de la JVM. Mais crois moi, c'est généralement un gain. En effet, une grosse majorité des sociétés clientes de solutions informatiques demandent un outil de gestion. Et, crois moi, il n'y a aucun intérêt à manipuler finement les allocations mémoire pour bien s'interfacer avec une BDD. Après, certains besoins demandent cette finesse : l'embarqué par exemple, mais ça reste des besoins minoritaires à l'époque actuelle (époque où on ne développe pratiquement plus pour un système équipé de 64ko de RAM). Et comme la gestion de la mémoire est une source infinie de bug plus sioux les uns que les autres, en terme de coût et de productivité, c'est une catastrophe (même si je te l'accorde c'est super funky ^^). Donc à l'époque actuelle force est de constater que le garbage collector est une bénédiction.