Distributing Applets
Distributing Applets
try {
Class C = Class.forName("myClass1");
thinButton.setLabel("Loading...20%");
thinButton.repaint();
C = Class.forName("myClass2");
thinButton.setLabel("Loading...40%");
thinButton.repaint();
C = Class.forName("myClass3");
thinButton.setLabel("Loading...60%");
thinButton.repaint();
C = Class.forName("myClass4");
thinButton.setLabel("Loading...80%");
thinButton.repaint();
}
catch (ClassNotFoundException e)
{
System.out.println("Class not found exception");
}
The lightweight button would solve the problem of the applet taking too
long to download and the progress bar would be a psychological crutch which
would help the user through the download time. But again, this would be
impossible if you downloaded the entire application as an archive because
by the time the light weight button was instantiated, the entire class
library would have been downloaded.
Web Server Twiddling Its Thumbs Scenario
One of the "official" benefits of archiving is that a web browser need
only make one HTTP request from a web server in order to download an applet.
This saves the web browser from having to open separate HTTP connections
for each class file, image and data file in your program.
Thus, if you have two dozen files in your applet, you would reduce the
number of necessary HTTP connections by 11. Wow, 11 times faster!
Well, not exactly. In actuality, the time it takes to make an HTTP connections
is minimal. In fact, the more connections you open the better it is for
you. After all, if the web browser multi-tasks by downloading class files
in tandem, it can download the class files even faster.
So why archive (besides compression if it is available)?
The "real" danger of multiple connections is that if everyone multi-tasks,
we may end up with some pretty nasty traffic jams on the I-way.
Further, the more HTTP requests that you hit a web server with, the busier
it becomes. If two people download a 12-file applet that is archived, the
web server must juggle two requests. If, on the other hand, the web server
has to distribute the 12-file un-archived applet, it has to juggle 24 requests.
As you can imagine, this could bog down a web server pretty quickly.
So the official word is that you should always archive. In a sense, archiving
is more a courtesy than a performance boost. By archiving you are doing
your little part to reduce the total traffic on the net. And in exchange
you agree to accept some slowdown in your own work.
Well, as it so happens, and as you might expect, very few people are courteous
on the net. In fact, in terms of the number of HTTP connections, Netscape
and Internet Explorer have had well-publicized speed wars throughout the
last few years in which they ruthlessly opened up connection after connection
in order to boast their marketing superiority over the other. "We're faster!"
"No, we're faster!" Faster at what cost?
And as for the benefits of slamming servers with multiple HTTP requests,
because of web server time slicing, applets that demand 12 HTTP requests
get a higher priority over those that demand only one connection.
So what is a web designer to do?
From a selfish perspective, it is better to multi-task. The designer must
ask, "why should I be courteous and in the process, be less competitive"?
Courtesy and morality are up to you, however we would suggest that you
at least consider the load on the web server you are using. If your web
server is relatively unused, feel more free to demand more of its attention.
However, if your applet is hosted on a public ISP, try to keep the other
users on the system in mind. Also, carefully balance the time savings that
you gain from multi-tasking. Clearly, the time saved for multi-tasking
a 3-file applet does not necessarily justify the network traffic and server
load you cause.
The Final Word
As you can see, deciding how to distribute your applet can be a challenging
design decision in itself. However, regardless of what you choose in any
given case, it will be necessary for you to have at your disposal an array
of tools for distribution. This chapter will discuss the process of distribution
to give you a more detailed look at the available technologies to make
distributing your applet faster and more efficient.
Additional Resources:
Writing
Applets
Table of Contents
Distribution
History
|