Distributed object programming is significantly more complex than programmi
ng a local host and requires highly skilled developers. Current distributed
middleware for distributed programming is hard to use mainly because its p
rogramming model and runtime support are quite different from those of Loca
l programming. For instance, the local reference and the remote reference t
o the same object are of different types and therefore are not assignable t
o the same set of references. Hence, a remote reference cannot always repla
ce a. local reference as a parameter in a method invocation. Furthermore, a
local object cannot be referenced remotely, unless it has been first conve
rted into a remote object. Another distributed programming obstacle with cu
rrent middleware is that access to classes and resources residing across th
e distributed environment is not as natural and transparent as with local p
rogramming, where all resources are in the same classpath. The Java languag
e introduces a new scope where distributed object programming can become as
easy and simple as local programming. In this paper we identify the main d
istinctions between local and distributed Java programs and present new mid
dleware which achieves this goal. The proposed middleware converts any Java
-enabled ti host into a Java peer, which can share its classes and object i
nstances and interact with other Java peers in a manner which almost reflec
ts a single system image to the user. (C) 2000 Academic Press.