Как говорит Дафф, сама Java RMI действительно подходит только для связи Java-to_Java. С точки зрения простоты разработки в наши дни степень кодирования с точки зрения поставщика услуг очень похожа.
Однако, помимо проблем с производительностью, когда разрыв между WebServices и RMI довольно изменчив (для некоторых размеров сообщений может быть незначительная разница), есть еще один аспект, который необходимо учитывать: устойчивость.
Как правило, RMI легко настраивается, когда один клиент обращается к одному серверу, и вы не возражаете против доступности клиента, подключенного к этому серверу. Сервер не работает, клиент не работает, такова жизнь.
В случае веб-службы вы можете довольно легко развернуть свою службу на кластере серверов и, учитывая, что вы вызываете веб-службу по HTTP, вы можете легко использовать все обычные методы сетевой маршрутизации и распыления, используемые в крупномасштабной сети места. Никакого специального кодирования не требуется на сервере или клиенте.
Теперь вы можете получить тот же уровень устойчивости с RMI, но для этого требуется немного лучшая инфраструктура предоставления услуг, и именно здесь вступает в игру модель программирования Java EE EJB (или платформы, такие как Spring). EJB использует RMI поверх IIOP, протокола, который обеспечивает отказоустойчивый вызов к экземплярам сервера, прозрачно реагируя на сбои сервера. [Он делает гораздо больше, например, безопасность и транзакции, но также и веб-службы. Интересно, но не часть этой дискуссии.]
Итог: для обеспечения качества обслуживания производства я обычно начинаю с создания объекта обслуживания. Я использую Java EE EJB 3, другие используют Spring. Вы можете представить этот сервисный объект как веб-сервис или как RMI / IIOP с некоторой очень простой конфигурацией / аннотацией. Это очень мало усилий, чтобы выбрать один или оба. Мой мир случается с майором во взаимодействии, поэтому я склонен выставлять Web-сервисы. Если у вас есть только Java для рассмотрения, это может дать некоторое повышение производительности при использовании RMI / IIOP, но это не гарантируется, вам необходимо измерить производительность, чтобы быть уверенным.