\subsection{KaRMI.}

A substitute implementation of RMI, called KaRMI, was also created at
the University of Karlsruhe. KaRMI \cite{PhilippsenJ010} can
be used instead of the official RMI and gets rid of the following
deficiencies, as well as some others found in official RMI:

\begin{itemize}

\item KaRMI supports non-TCP/IP networks.
Suns plans to add support in the official RMI-Version as well.

\item KaRMI possesses clearer layering, which will make it easier to
employ other protocol semantics (i.e. Multicast) and other network
hardware (i.e. Myrinet-Cards).

\item In RMI, objects can be connected to fixed port
numbers. Therefore, a certain detail of the network layer is passed to
the application. Since this is in conflict with the guidelines of
modular design, KaRMI only supports use of explicit port numbers when
the underlying network offers them.

\item The distributed garbage collection of the official RMI was
created for wide area networks. Although there are optimized garbage
collectors for tightly coupled clusters and for other platforms
\cite{PhilippsenJ012}, the official RMI sees no alternative garbage
collector as being necessary, in contrast to KaRMI.

\end{itemize}

