У меня сложилось впечатление, что сейчас Erlang очень хорошо виден как язык, обладающий такой способностью. Тем не менее, мой тесть (по моему мнению, главный программист) сказал мне, что он реализовал код с возможностью горячей замены на несколько более старой платформе - ассемблере для того, что они теперь называют z / OS (OS / 390 до этого ).
Лично я искал способы сделать это в пространстве Java, где в настоящее время выполняется большая часть моей профессиональной работы. В Джаваланде наиболее известной попыткой обеспечить горячую разгрузку (насколько я знаю) является работа, проделанная OSGi Alliance . Тем не менее, это решение обязательно включает в себя магию загрузчика классов из-за того, как устроены некоторые распространенные библиотеки Java (пример: JDBC DriverManager
). Если вы решите пойти по маршруту OSGI, ваш код, вероятно, потребует обширного аудита и тестирования, чтобы гарантировать его пригодность для использования с архитектурой OSGi.
В качестве альтернативы реализации кода с возможностью горячей замены, возможно, вы могли бы реализовать систему, которая, по-видимому, обладает такой возможностью, используя потенциально более простой механизм организации очереди запросов. Например, если вам нужно выполнить «горячую» замену части вашей системы, которая обрабатывает большие внутренние запросы, почему бы не отправить эти запросы через посредника, который может отправить их компоненту бэкэнда, если он работает, и накапливать их в очереди, если компонент не работает? Это может позволить вам обновить серверный компонент независимо от остальной части вашей системы без повторного развертывания, как мы говорим в отрасли «весь шебанг».