\item bei synchroner Variante keine Überlappung von Kommunikation und Berechnung möglich
\item Adressierung beim Sender: Knoten, Port, Prozess
\item Pufferung beim Sender für Daten bis zum ersten Aufruf von \texttt{receive}
\item Flusskontrolle zur Verhinderung des Überlaufens der Empfangspuffer
\item Empfänger blockiert in der Regel, aber auch \texttt{poll} implementierbar
\item Warten auf bestimmte Sender/Pakettypen auf Empfängerseite
\end{itemize}
\subsubsection{erweitertes Send/Receive}
\begin{itemize}
\item Modell einer virtuellen Maschine aus logischen Knoten
\item Unterstützung von Gruppenoperationen wie \texttt{broadcast}, Barrieren, Verteilen und Einsammeln von Daten an alle Knoten oder kleinere Knotengruppen
\item serialisierbare Objekte (durch \enquote{Implementierung} des Marker-Interfaces \texttt{Serializable}): \enquote{call-by-value} mit Kopien
\item sonstiges: Fehler
\end{itemize}
\item Auch Serialisierung von Typinformationen notwendig: \begin{itemize}
\item Übertragung des einer Klasse zugrundeliegenden Bytecodes
\end{itemize}
\item besonderer Aufwand bei Serialisierung von Objektgraphen: \begin{itemize}
\item rekursive, \begriff{tiefe Kopie} des gesamten Graphen
\item Vergebung eindeutiger Objekt-IDs zur Vermeidung von Endlosrekursion bei Zyklen notwendig
\end{itemize}
\item Probleme bei maschinenübergreifender Synchronisation mit Sprachprimitiven (\texttt{synchronized}) durch Wechsel der Prozessidentität
\item Speicherbereinigung: \begin{itemize}
\item Bedingungen für Bereinigung: kein lokaler Zeiger sowie keine Remote-Zeiger mehr auf das Objekt vorhanden
\item Verwendung von \texttt{WeakReferences} durch \texttt{rmiregistry}: Garbage Collector kann Objekte, die ausschließlich über \texttt{WeakReference}s erreichbar sind, entsorgen
\item Verwendung von \text{finalize()} auf Aufruferseite: Bei Entfernung des Objekts durch den GC wird \enquote{unreferenced}-Nachricht an den Server geschickt
\item periodische \enquote{Keep Alive}-Nachrichten an Server, damit Remote-Objekt weiterhin als referenziert gezählt wird
\end{itemize}
\item Performance bei häufiger Kommunikation mangelhaft durch schwergewichtiges Protokoll und teures Serialisieren
\item Gliederung eines Programmes in \begriff{Supersteps}, in denen jeder Knoten unabhängig rechnet und Kommunikation anstößt, durch Synchronisationsbarrieren
\item Empfang wird bei Ende eines Supersteps garantiert
\item Effizienz des Synchronisationsmechanismus wichtig: z.B. per Baum