Различаются между CORBA и RMI
Я четко знаю разницу между CORBA и RMI, за исключением проблемы с существованием in
, out
, inout
,
CORBA использует язык IDL для описания интерфейса, а параметры в определенных методах имеют ключевые слова: in
, out
, inout
, Смысл их таков:
in
: Параметр передается от вызывающего операции к объекту.out
: Параметр передается от объекта вызывающей стороне.inout
: Параметр передается в обоих направлениях.
Мой вопрос: почему ключевые слова (in
, out
а также inout
) необходимо в CORBA, но не обязательно в JAVA/RMI.
2 ответа
но не обязательно в JAVA/RMI.
Они не доступны в Java, не говоря уже о Java RMI. Дизайнеры приняли решение передать все по стоимости.
Это просто дизайнерское решение. Основное различие в их дизайне заключается в том, что CORBA не зависит от платформы и языка программирования, а RMI разработан специально для языка программирования Java.
У многих языков программирования есть свой способ выразить in
, out
или же inout
Направления параметров, в которых языки CORBA IDL имеют свой прямой эквивалент. В других языках (например, Java) эти конструкции должны быть реализованы с помощью сложных структур-оболочек.
Язык программирования Java не имеет out
или же inout
параметры (хотя это может быть реализовано путем создания простого класса-обертки значения), все параметры передаются in
по значению (для типов значений) или по ссылке (для ссылочных типов). А поскольку сама Java не поддерживает направления параметров на уровне языка, не было необходимости иметь это и в RMI.