Java e C# não são interpretadas, então premissa errada. Inclusive ambas podem até mesmo gerar código nativo direto, sem VM. Mesmo quando usam um JITter (que pode ser considerada uma VM) ainda não são interpretadas.
Na verdade, a não ser que esteja em especificação, o que nunca vi uma até agora, linguagem não é interpretada ou compilada, existem implementação ou no plural que seja uma coisa ou outra, ou até o que tem se tornado comum em alguns casos de ser ambos e você escolhe como deseja.
Estritamente falando, na definição original, nenhuma linguagem mainstream tem uma implementação realmente interpretada, mas a internet está cheia de informação sobre isso ensinando as pessoas de forma errada. Mas nem estou falando do jeito estrito, essas linguagens, nas implementações que elas são conhecidas e realmente usadas por todos não são interpretadas nem pela definição errada.
Gerar código nativo direto ou indireto é diferente do processo como o código é tratado por um software que fará uma tradução. Quase toda tradução no mercado hoje é feita através de alguma forma de compilação. Em alguns casos o código gerado é um bytecode que não é nativo para o processador, são todos conceitos diferentes.
Em alguns casos esse bytecode pode ser considerado interpretado, embora não o código da linguagem que deu origem à ele. Mesmo isso cabe debate semântico se o que acontece ali é uma interpretação. Sim, tem um software que analisa os bytes encontrados e decide o que fazer, e isso é chamado de máquina virtualo. Porém um processo muito semelhante acontece dentro do processador físico, obviamente de forma mais eficiente porque ele já trata em instruções nativas e que rodam no mesmo ciclo da execução. Se o processo é quase idêntico, podemos dizer que rodar um executável nativo é interpretado?
Lua originalmente tem uma dessas VMs de software. Talvz a mais bem feita até hoje. Também tem uma implementação de JITter que gera o código nativo para execução direta no processador no momento que ele acha interessante. O processo que faz o código Lua virar código nativo é uma compilação, mesmo que você não veja isso. Curiosamente esse JITter tem um fallback para interpretação real, aquela que eu falei antes. Em alguns casos ele entende que não compensa JITtar e interpreta o texto e executa pela VM dele (diferente da implementação original que "interpreta" um bytecode).
Percebeu como é complicado?
JavaScript, nas implementações mais comuns, são compiladas, JITtadas e rodam de forma nativa. Há uma VM fazendo isso. Nada impede ser de outro jeito, inclusive gerar um executável direto ou ser transpilada (compilada para nível semelhante de abstração), embora costume acontecer o contrário e JS é alvo de transpilações. Ah, se for para usar termos corretos, estamos falando de EcmaScript. Existe implementação que JS é compilada para WebAssembly.
O que é WebAssembly? È interpretado? È JITtado? É nativo? É só um bytecode? Mas ele não é um texto? Faça sua pesquisa e veja como é mais complicado ainda. E faça com cuidado, existe muita fake news sobre WebAssembly na internet.
Então agora me prove a sua afirmação que outras VMs não sejam tão discutidas? Por que você acha isso? Não é um viés seu?
Considerando ser verdade, como podemos concluir o que se passa na cabeça da pessoas sem um estudo? Vale chute? Aí eu posso dar o meu. Mas aí eu vou dizer que não se fala quase nada sobre a JVM, é um assunto bem de escanteio. Assim coimo é em Python, em Ruby, dialetos xBase que vocês nunca ouviram falar, PHP, claro, e muitas outras. Este não é um assunto que interessa para a maioria das pessoas, elas conseguem resultado sem saber de nada disso.
Acho que o comentário que diz que pode ser porque ela também serve para outras linguagens faz algum sentido. Mas .NET também (tinha uma época que era a VM com maior número de linguagens rodando em cima dela, apesar de quase todas não sere mainstream, hoje tem 1 mainstream, 1 que já foi e quase é ainda e outra que seria no máximo semi mainstream, não vou contar por exemplo que PHP roda no .NET), para ficar em algo mainstream, não vou falar da VM de Erlang, por exemplo. Em tese qualquer VM serve para qualquer linguagem se tiver um bytecode aberto (em JS não costuma acontecer isso). A ideia de usar uma VM para várias linguagens não é boa, apesar de parecer interessante e resilver um problema (trazendo outros).
O comentário que diz que JVM foi a primeira VM mainstream está errado, ainda que alguém possa distorcer critérios do que é mainstream para encaixar nisso.
A primeira VM foi de Lisp na década de 50. Para os padrões da época era mainstream, mas vou desconsiderar. Várias implementações de BASIC, bem mainstream começando na década de 60, rodavam em VMs. Na década de 70 teve uma profusão de VM, inclusive de Pascal. Nos anos 80 a maioria das aplicações em diversos países eram feitas em Clipper, que usava uma VM (usa até hoje em dialetos que sobreviveram). Muitos bancos de dados possuem uma VM que vieram antes da JVM e eram bem populares. Dá para alegar que na época algumas linguagens não eram populares, só hoje se tornaram, mas elas tinham VM e nasceram antes de Java. O fato das pessoas não saberem como é a computação, de ter se informado mais partindo dos anos 90 pela internet que não é à toa que é chamada de "casa do capeta" e a IA vai amplificar isso e ensinar muita coisa errada para as pessoas, a tal ponto que até doutores hoje em dia escrevem besteira em papers oficiais, e muitas vezes é publicado e passado por peer review, mostra que nós como sociedade estamos fodidos.
Podemos dizer que A Sun foi a primeira que gastou muito dinheiro falando da JVM e como isso era sensacional, o que se mostrou parcialmente falso, ou falso por completo em muitos cenários, por isso tem implementações de Java que não usam VM. Eles tinham que vender que estavam revolucionando o mercado para ver se pegava uma casquinha. E foram muito competentes ou sortudos nisso. A JVM é muito boa e se pudessem se livrar do legado ficaria quase perfeita dentro do que é possível em uma VM, a crítica que algumas pessoas fazem é mais à linguagem original dela. Eu não sei como tá hoje todos os aspectos delas, espero que tenha tomado um certo caminho para não obrigar levar aquele trambolhão todo para sia aplicação. Apesar que se precisa disso é melhor usar uma implementação sem VM.
Estou simplificando algumas coisas, mas estou sempre disponível para falar mais a respeito.
Só lembrando que estamos falando de máquinas virtuais de software para não confundir com as de hardware que permite rodas vários sistemas operacionais na mesma máquina de forma "segura e eficiente", entre outras coisas.
S2
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).