| JAWS + HTTP |
(Hypertext Transfer Protocol). HTTP GET allows
reading of a selected set of files, HTTP POST lets you send a query and get back
information. HTTP PUT lets you upload a file, though the PUT feature is rarely
supported. You write an Applet, signed
Applet, Java Web Start or application to
simulate a browser. |
Your client program can tie into a conventional Servlet system without
having to change the Servlet system. You can also modify the servlet system to
have a more efficient computer-friendly interface, (perhaps with auxiliary raw
sockets). The Applet etc. presents a much crisper UI to the end user than
browser would. |
The client must have Java installed and enabled. Sometimes corporations
mindlessly block even the safest Applets in their paranoia. |
| browser + CGI/Servlets |
(Common Gateway Interface). Lets you communicate with Servlets
running on the server that will read or write files for you and send back
results. See Base64 and URLEncoded
to convert your binary data to armoured printable
characters. |
Most common technique. Does not require anything other than a browser
installed at the client. This is the biggest plus. |
Clumsy user interface limited by browser and HTTP forms. |
| RMI |
(Remote Method Invocation). Lets you send Java objects
back and forth between the remote computer and a server. Each can run methods on
the other published objects. These methods may read and write files. |
Extremely flexible communications |
High overhead. Complicated to set up. Java only. Must have Java installed on
the client and firewalls permeable to RMI. |
| Sockets |
let you send raw streams of bytes back and forth between remote machine and
server. The program on the server can then use that information to read and
write files. If you compress your data, this about as efficient as it gets. |
compact, efficient, low level. This is the way to pump large volumes of data. |
Pooling connections is complicated. You can’t afford to keep open idle
sockets for every user. |
| Ajax |
You use traditional Servlets, with JavaScript assist on the client to give a
richer UI. |
Makes the user interface more responsive to the user, particularly in
catching errors before results are transmitted. |
Lack of standards. Requires different code for every browser. Mickey mouse
coding language makes maintenance difficult. |
| XML |
You exchange XML (sometimes XML-SOAP)
messages between client and server. |
Allow sending tree-structured messages. |
Bloats the size of the messages to many times what they need to be, thus
slowing down communications. They are thus suited only for short messages or low
volumes. Messages need overly complicated tools to create and parse at each end. |
| CORBA |
(Common Object Request Broker Architecture).
A heavy duty RMI that supports languages other than Java. It is considerably
more complicated to use. |
Must create definition files for every possible interaction. Tedious. |
Ties into non-Java corporate CORBA systems. |
| EJB |
(Enterprise Java Beans). Are like RMI
plus servlets, plus transaction logging and backout.
They are a augmentation for Servlets. The client side can be anything a Servlet
might support. |
Heavy duty corporate business logic. |
Complicated. Requires heavy duty servers. |
| FileTransfer classes |
From Canadian Mind Products. Let you copy files from a variety of sources,
including jars, to a variety of targets, both remote and local. They use HTTP
protocol where necessary. |
Very simple to use. |
Handles only files, not streams or transactions. |
| FTP |
(File Transfer Protocol). Allows file upload/download.
For efficiency, send only zipped files, bundling many small files into one big
one. FTP is a slower protocol than HTTP but supports recovery there is a
disconnect in mid transfer. |
Supported almost everywhere. |
Supports only file transfer, no streams or transactions. It is for batch
work. |
| JavaSpaces |
I’m told you can use this for intermachine communication, but I have never
tried it. |
| JDBC |
(Java DataBase Connectivity) Lets you
communicate with an SQL server running on the server to read and write database
files. |
Gives and Applet or JAWS app complete power to do complex queries and
updates, anything supported by JDBC. |
This exposes your database to the outside world in a way that invites
hackers. It is safer do all your database work with Servlets, triggered by
transactions coming in oven the Internet. |
| Jini |
I’m told you can use this for intermachine communication, but I have never
tried it. |
This works with tiny devices as well as desktops. |
The technology seems to have stalled. |
| Pipes |
java.nio.channels.Pipe.
Under the hood these are Sockets useful for parent
child process communication, not general Socket
communication. |
Fast, simple. |
Regular java.io. PipedOutputStream
pipes only work between Threads in a common JVM.
They are not suitable for remote data access. |
| WebDAV |
A system to make a shared volume look like a local hard disk. Mainly used
for sharing Microsoft Word documents. |
platform independent. Looks like ordinary HTTP to firewalls. |
Handles only batch sharing of files, no streams or transactions. |