Если ваши приложения потребляют большую часть ЦП и памяти на однопользовательской рабочей станции, я скептически отношусь к тому, что перевод их на некоторый язык, не относящийся к ВМ, очень поможет. С Java вы зависите от виртуальной машины для таких вещей, как управление памятью; вам придется заново реализовать их эквиваленты на языке, отличном от VM. Кроме того, управление памятью в Java довольно хорошее. Ваше приложение, вероятно, не чувствительно в режиме реального времени, поэтому его приостановка время от времени не является проблемой. Кроме того, вы все равно собираетесь запустить это на многопользовательской системе, верно?
Использование памяти будет больше зависеть от ваших базовых структур данных и алгоритмов, а не от каких-то магических изменений в языке. Если у вас действительно отличная библиотека распределения памяти для выбранного языка, вы можете обнаружить, что используете столько же памяти (если не больше) из-за ошибок в вашей программе.
Поскольку ваше приложение требует значительных вычислительных ресурсов, какой-то другой язык вряд ли сделает его менее значительным, если вы не вставите в код некоторые стратегические вызовы sleep (), чтобы преднамеренно заставить его чаще загружать процессор. Это замедлит его, но будет приятнее для других пользователей.
Попробуйте запустить ваше приложение с параметром Java -server. Это задействует виртуальную машину, предназначенную для долго работающих программ, и включает JIT, который скомпилирует вашу Java в нативный код. Это может заставить вашу программу работать немного быстрее, но она все равно будет связана с процессором и памятью.