http://citforum.edunet.kz/SE/middleware/history/7.shtmlЦитата:
RMI позволяет Java-объекту-клиенту вызывать методы объекта-сервера, располагающегося в другой JVM (Java Virtual Machine), возможно, в другом хосте.
...
Затем Вальдо излагает проектные принципы RMI и описывает важные отличия RMI от предшествующих работ в областях RPC, CORBA и DCOM. В частности, в RMI произошел отказ от неоднородности языков программирования, разрешавшейся за счет поддержки независимого языка определения интерфейсов и его привязок к различным языкам программирования, на которой базировались все предшествующие работы по системам удаленных вызовов процедур. В [151] утверждается, что вместо этого в RMI продолжаются традиции Network Objects в среде Modula-3, где примитивы удаленного вызова встраивались в язык программирования. В [151] также говорится, что RMI основывается на механизме сборки мусора, впервые внедренном в Modula-3 Network Objects.
...
RMI также отличается от предыдущих работ в области систем удаленного вызова процедур тем, что стабы, требуемые для синхронизации и поддержки прямого и обратного маршалинга, загружаются при необходимости, а не при запуске распределенной программы. Этот механизм существенно упрощает развертывание распределенных программ. Для обеспечения возможности загрузки стабов в RMI используется механизм динамической загрузки классов Java, описанный в [85]. Для использования в распределенной среде необходимо обеспечить безопасность загрузки классов, и в [85] описывается, как можно добиться надежной и безопасной загрузки классов, следуя формально обоснованным методам обеспечения безопасности предыдущих механизмов загрузки классов Java [74].
Статья [20] про Network Objects начинается с утверждения, что «в чистом объектно-ориентированном программировании у клиентов не должен иметься прямой доступ к реальному состоянию объектов, он должен обеспечиваться только через методы объектов. Эта методология замечательно применяется к распределенному компьютингу, поскольку вызовы методов представляют собой удобное место для внедрения коммуникаций, требуемых распределенной системой». Таким образом в Network Objects продолжаются традиции Вирта (Niklaus Wirth) и Парнаса (David Parnas) инкапсуляции, модульности и сокрытия информации, и эта система основывается на многочисленных работах, посвященных объектно-ориентированным языкам. Более глубокое обсуждение происхождения этой работы см. в [122]. В [20] явно утверждается, что система Modula-3 Network Objects основана на идеях предыдущих исследований, и приводятся ссылки на системы Emerald [76], Argus [87], Eden [2], Arjuna [47], Orca [11] и SOS [124].
Кто у нас тут любитель покормить хабровских? ) Сколько криков поднимется, если сказать, что и RMI в Java выросло из Виртовской ветки.