我清楚地知道CORBA和RMI之间的区别,除了存在in
,out
,inout
的问题。
CORBA使用IDL语言来描述接口,定义的方法中的参数包含关键字:in
,out
,inout
。它们的含义如下:
in
:参数从操作的调用者传递给对象。out
:参数从对象传递给调用者。inout
:参数在两个方向传递。我的问题:为什么关键字(in
,out
和inout
)在CORBA中是必需的,但在JAVA / RMI中不是必需的。
答案 0 :(得分:0)
这只是一个设计决定。它们设计的主要区别在于CORBA被设计为独立于平台和编程语言,但RMI专为Java编程语言而设计。
许多编程语言都有自己的方式来表达in
,out
或inout
参数方向,其中CORBA IDL语言具有直接等效的语言。在其他语言(例如Java)中,这些构造必须使用复杂的包装器结构来实现。
Java编程语言没有out
或inout
参数(尽管可以通过创建一个简单的值包装类来实现),所有参数都按值传递in
(对于值类型)或通过引用(对于引用类型)。由于Java本身不支持语言级别的参数方向,因此没有必要在RMI中使用它。
答案 1 :(得分:0)
但在JAVA / RMI中没有必要。
它们不适用于Java,更不用说Java RMI了。设计师决定按价值传递一切。