Язык не сидит на виртуальной машине, для которой он предназначен

Я хочу узнать, как спроектировать виртуальную машину, которая может поддерживать несколько языков и работать с их многочисленными обновлениями без снижения производительности. Например, Scala может напрямую взаимодействовать со старыми библиотеками Java.

1 ответ

Вы смотрите на это неправильно. JVM в основном действует как процессор, выполняя набор инструкций байт-кода. Если вы разрабатываете компилятор, который генерирует действительный байт-код JVM, то JVM может их запустить.

Это то, что компилятор Java (javac) делает - генерирует байт-код из источников Java, которые могут работать на JVM. Это также то, что компилятор Scala (scalac) делает - генерирует байт-код из исходников Scala, которые могут работать на JVM. Это также то, что Groovy компилятор (groovyc) делает - генерирует байт-код из Groovy-источников, которые могут работать на JVM.

Другие вопросы по тегам