Есть еще один подход, о котором я слышал совсем недавно.
Вместо того, чтобы распространять ваше приложение как машинный бинарный код (или байт-коды), вы распространяете его в «в основном скомпилированной» форме, на промежуточном языке компилятора. Пока все ваши компиляторы для всех ваших языков используют общую промежуточную форму, а все ваши генераторы внутреннего кода используют эту общую промежуточную форму, вы можете установить конкретный серверный компонент, который вам нужен, и затем распространять промежуточные.
MacOberon использовал этот подход для одновременной работы с аппаратным обеспечением MAC 680x0 и PowerPC. Они называли «стройные двоичные файлы». Точно такой же «двоичный файл» был распространен на любую разновидность машины, и серверная часть фактически завершила компиляцию, сгенерировав соответствующий код.
Интересно, что этот метод не намного медленнее, чем традиционный метод, потому что стоимость физического считывания «двоичного» с диска в память абсолютно доминирует во времени запуска приложения.