Download Distributed Java Communications

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

RS-232 wikipedia , lookup

IEEE 1355 wikipedia , lookup

Parallel port wikipedia , lookup

UniPro protocol stack wikipedia , lookup

Lag wikipedia , lookup

Remote Desktop Services wikipedia , lookup

Hypertext Transfer Protocol wikipedia , lookup

Real-Time Messaging Protocol wikipedia , lookup

Transcript
Distributed Java
Communications
Eric Lind
CS522 Semester Project
December 9, 2002
How does one distribute using
Java?
Many different methods are available
 Sockets
 RMI
 CORBA
 XML (SOAP or JAX)

How do I decide which to use?
Each new trend claims to be
faster/stronger/better
 Can be hard to compare different
methods
 Numbers are hard to come by
 Which numbers to use?

Project Benchmarks
Use a simple chat application
 Contrived, yes, but still demonstrates
features of each method
 Measure data written and read by each
client or server
 Not concerned with low-level traffic, but
with the application level data.

Sockets
Server
Port
Port
Connection Request
Bi-Directional Connection
Client
Port
Sockets

Advantages:
 Nearly universal
 Uses the smallest
amount of data to
communicate
 Bi-directional

Disadvantages:
 Pretty low-level
 Must do many
things by hand
 No additional
services provided
RMI
Registry
Obtain Remote
Reference
RMIChat
Obtain Remote
Reference
receive(Message)
Port
Port
RMIChat
receive(Message)
Each RMIChat object must implement both
the client and server interface
RMI

Advantages:
 Standard Java
API
 Allows remote
objects to be
treated as if local
 Includes some
services

Disadvantages:
 Uses client-pull
(clients must also
be servers for 2way comm.)
 Setup code is
cumbersome
 Marshalling is
slow
CORBA
IIOP
ORB
CORBAChat
ORB
CORBAChat
As with RMI, each CORBAChat object must
act as both client and server
CORBA

Advantages:
 Open standard
 Many platforms /
languages
 Provides
additional
services
 Generally faster
than RMI

Disadvantages:
 Not “Java-friendly”
 Uses client-pull
 Tends to be trickier
than other methods
 Had considerable
trouble with
generated classes
JAX-RPC
Tomcat (or any Servletenabled Web Server)
Chat Service
Ties
Runtime
SOAP Message
HTTP
SOAP Message
HTTP
Runtime
Runtime
Stubs
JAXChat
Stubs
JAXChat
JAX-RPC

Advantages:
 Uses SOAP (can
talk to non-Java
platforms)
 Very easy to
develop
 Uses HTTP
(eases security
concerns)

Disadvantages:
 Uses SOAP (XML
is very verbose)
 Requires web
server
 Restricts data that
can be sent
 Still buggy
Benchmark Results
3500
2922
3000
2494
2000
2411
2399
2500
Sockets
RMI
JAX-RPC
1755
1500
1000
500
126 169
138 181
0
Setup
"" (35 bytes)
"Test Message" (47
bytes)
Conclusions
Sockets have the lowest overhead
 RMI does not add much (only 43 extra
bytes)
 XML adds a lot of overhead (19 times)
 Must convert binary data to text
 SOAP envelope is huge

Conclusions (cont.)
RMI is probably the best for pure-Java
applications
 Low overhead
 Normal Java semantics
 RMI over IIOP should put RMI on par
with CORBA for speed.

Conclusions (cont.)
Web Services are (supposedly) platform
neutral
 Good model for general data access,
not so good for bandwidth constrained
applications
 CORBA is still the only viable, crossplatform communications protocol, but
it’s not easy to use
