2015-10-04 4 views
0

Почему существует Java RMI? Кто его использует и для чего?Что такое Java RMI?

Мои самые насущные вопросы;

  • Зачем вам нужны вызовы методов, которые не определены на вашем компьютере? Разве это не займет много времени? Я не вижу, как это делает мир лучше. Разве не разумнее было бы, чтобы на многих машинах работала полная программа, а не на многих машинах каждой запущенной части?
  • Не факт, что вы должны вручную предоставлять интерфейсы всем машинам (клиентам и серверам), убивать любые преимущества, предоставляемые удаленными объектами? Другими словами, если преимущество удаленного объекта заключается в том, что клиентскому программисту не требуется взаимодействовать с программным программистом сервера, то не раздражает ли он вручную связаться друг с другом, чтобы обновлять интерфейсы с обеих сторон для каждого небольшого изменение?
  • Как это похоже или отличается от типичного веб-приложения, установленного там, где клиент взаимодействует с сервером? На мой взгляд, HTTP-вызовы гораздо легче понять. Может ли сервер RMI требовать от клиентов RMI своего рода пароль?
  • Какие приложения обычно создаются с использованием Java RMI? Какие-нибудь жесткие примеры?
+0

RMI дает вам маршаллинг и тип безопасности, с которым вы не получаете HTTP. Сказав это, вы перечислили многие причины, по которым оно вышло из моды. Восстановительные веб-сервисы являются независимыми от платформы и гораздо более легкими –

+1

@JuanMendes Вы не можете сказать, что RMI «упал в немилости», когда он является основой J2EE. Восстановительные веб-сервисы не являются более независимыми от платформы и не более весовыми, чем RMI. – EJP

+0

@ejp, если вы не считаете Java платформой, это правда. Я просто говорил о возможности общаться с любым языком. Это упало в немилости, можете ли вы действительно сравнить количество услуг, доступных как RMI с HTTP? J2EE - это платформа Java, поэтому имеет смысл использовать RMI. Если вы хотите, чтобы другие потребляли ваши услуги, большинство будет работать с веб-службами. –

ответ

4

Почему существует Java RMI?

Err, потому что Sun его построил? Это же Солнце, которое предоставило Sun-RPC.

Кто использует его и для чего?

RMI является основой J2EE, чтобы назвать один небольшой пример. Однако концепция удаленных вызовов методов датируется еще как минимум CORBA, а концепция удаленной процедуры вызывает, по крайней мере, 70-е годы. Sun обеспечила их внедрение RPC примерно в 1982 году, и это, помимо прочего, основа NFS.

Зачем вам нужны вызовы методов, которые не определены на вашем компьютере?

Err, если вы хотите, чтобы они работали на другой машине?

Не займет много времени для выполнения?

Конечно.

Я не вижу, как это делает мир лучше. Разве не разумнее было бы, чтобы на многих машинах работала полная программа, а не на многих машинах каждой запущенной части?

Значит, вы никогда не слышали о распределенных вычислениях?

Не факт, что вы должны вручную предоставлять интерфейсы всем машинам (клиентам и серверам), убивать все преимущества, предоставляемые удаленными объектами?

No.

Другими словами, если выгода от наличия удаленного объекта является то, что клиент программист не должен взаимодействовать с программистом сервера

ли кто-нибудь сказать, Это была польза?

то не раздражает ли он вручную связаться друг с другом, чтобы обновить интерфейсы с обеих сторон для каждого небольшого изменения?

Там, как правило, не много «небольших изменений», если вы действительно разрабатываете свою систему перед ее внедрением. Но это не единственная модель разработки. У вас может быть сторонний разработчик интерфейса. Или тот же человек, развивающий обе стороны. Или удаленный интерфейс определяется спецификацией. Или ...

Как это похоже или отличается от типичного веб-приложения, установленного там, где клиент взаимодействует с сервером?

Он использует RMI вместо HTTP.

На мой взгляд, HTTP-вызовы намного легче понять.

Вы не можете получить гораздо легче понять, чем удаленный интерфейс, но, очевидно, ваш пробег варьируется.

Может ли RMI-сервер требовать от клиентов RMI своего рода пароль?

Да, он может использовать взаимно аутентифицированный SSL, например, или произвольные протоколы аутентификации, реализованные через специализированные фабрики сокетов.

+0

Я не уверен, что задал вопрос, но ваш ответ помог. благодаря – CodyBugstein