﻿<?xml-stylesheet type="text/xsl" href="../../../templates/doc.xsl"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
<html 
	xmlns="http://www.w3.org/1999/xhtml" 
	xmlns:doc="http://www.lepus.org.uk/doc" 
	xmlns:classz="http://www.lepus.org.uk/classz" 
	xmlns:fopl="http://www.lepus.org.uk/fopl" 
	xml:lang="EN-GB" 
	xmlns:v="urn:schemas-microsoft-com:vml" 
	xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml">

<head>
	<link rel="stylesheet" type="text/css" href="../../../templates/doc.css" />
	<title>Java RMI in LePUS3</title>
	<meta http-equiv="Content-Style-Type" content="text/css" />
	<meta name="Author" content="Amnon H Eden" />
</head>


<body>


<h5><a href="../../">Sample specifications in LePUS3 and Class-Z:</a></h5>

<p class="pagetitle">Java's Remote Method Invocation (RMI)</p>

<div class="abstract">

	<p>This page demonstrates how to combine constants and variables
	<a href="http://lepus.org.uk/">LePUS3</a> to specify application frameworks</p>
</div>

<h3>Links</h3>

<div class="abstract">

	<ul>
		<li><a href="../../../ref/legend/legend.xml">Legend: Key to LePUS3 and Class-Z Symbols</a></li>
		<li><a href="../../../ref/refman/refman.xml">LePUS3 &amp; Class-Z Reference Manual</a></li>
		<li><a href="../../../ref/companion/">The 'Gang of Four' Companion: Formal specification of design patterns in LePUS3 and 
		Class-Z</a></li>
	</ul>
	
</div>

<p>Java's Remote Method Invocation (RMI) mechanism allows objects of one program 
to invoke methods in objects that belong to programs that are not executed on 
the same machine. Sun's documentation of Java RMI includes the following 
statement:</p>

<blockquote><em>A remote interface must extend, either directly or indirectly, 
the interface </em><code>java.rmi.Remote</code>.</blockquote>


<p class="style1">We use this statement to demonstrate how <em>variables</em> 
are used in LePUS3 to model yet-to-be implemented classes and their relations to 
existing classes. To model this statement we use a combination of a 
0-dimensional class constant (java.rmi.remote), which stands for an existing 
class (<code>java.rmi.Remote)</code>, and a 0-dimensional class variable (<classz:variable value="TremoteInterface" />) 
which stands for the class that the user must implement.</p>

<table class="chartandschema">
<tr>
	<td><img class="chart" alt="Java RMI" src="rmi.gif" /></td>
</tr>
<tr>
	<th>
		A remote interface must extend, either directly or indirectly, the interface 
		<code>java.rmi.Remote</code> 
		(<a href="../../../ref/legend/legend.xml">legend</a>)
	</th>
</tr>
</table>


</body>
</html>

