Sponsored Link •
Java is a network-oriented technology that first appeared at a time when the network was looking increasingly like the next revolution in computing. The reason Java was adopted so rapidly and so widely, however, was not simply because it was a timely technology, but because it had timely marketing. Java was not the only network-oriented technology being developed in the early to mid 1990s. And although it was a good technology, it wasn't the necessarily the best technology--but it probably had the best marketing. Java was the one technology to hit a slim market window in early 1995, resulting in such a strong response that many companies developing similar technologies canceled their projects. Companies that carried on with their technologies, such as AT&T did with a network-oriented technology named Inferno, saw Java steal much of their potential thunder.
There were several important factors in how Java was initially unleashed on the world that contributed to its successful marketing. First, it had a cool name--one that could be appreciated by programmers and non-programmers alike. Second, it was, for all practical purposes, free--always a strong selling point among prospective buyers. But the most critical factor contributing to the successful marketing of Java, however, was that Sun's engineers hooked Java technology to the World Wide Web at the precise moment Netscape was looking to transform their web browser from a graphical hypertext viewer to a full-fledged computing platform. As the World Wide Web swept through the software industry (and the global consciousness) like an ever-increasing tidal wave, Java rode with it. Therefore, in a sense Java became a success because Java "surfed the web." It caught the wave at just the right time and kept riding it as one by one, its potential competitors dropped uneventfully into the cold, dark sea. The way the engineers at Sun hooked Java technology to the World Wide Web--and therefore, the key way Java was successfully marketed--was by creating a special flavor of Java program that ran inside a web browser: the Java applet.
The Java applet showed off all of Java's network-oriented features: platform independence, network- mobility, and security. Platform independence was one of the main tenets of the World Wide Web, and Java applets fit right in. Java applets can run on any platform so long as there is a Java-capable browser for that platform. Java applets also demonstrated Java's security capabilities, because they ran inside a strict sandbox. But most significantly, Java applets demonstrated the promise of network-mobility. As shown in Figure 4-1, Java applets can be maintained on one server, from which they can travel across a network to many different kinds of computers. To update an applet, you only need to update the server. Users will automatically get the updated version the next time they use the applet. Thus, maintenance is localized, but processing is distributed.
Java-capable browsers fire off a Java application that hosts the applets the browser displays. To display a web page, a web browser requests an HTML file from an HTTP server. If the HTML file includes an applet, the browser will see an HTML tag such as this:
<applet CODE="HeapOfFish.class" CODEBASE="gcsupport/classes" WIDTH=525 HEIGHT=360></applet>
This "applet" tag provides enough information to enable the browser to display the applet. The
CODE attribute indicates the name of the applet's starting class file, in this case:
CODEBASE attribute gives the
location of the applet's class files relative to the base URL of the web page. The
HEIGHT attributes indicate the size in pixels of the applet's panel, the visible
portion of the applet that is displayed as part of the web page.
When a browser encounters a web page that includes an applet tag, it passes information from the tag to
the running Java application. The Java application either creates a new user-defined class loader object, or
re-uses an existing one, to download the starting class file for the applet. It then initializes the applet, by
invoking first the
init() and then the
start() method of the
applet's starting class. The other class files for the applet are downloaded on an as needed basis, by the
normal process of dynamic linking. For example, when a new class is first used by the applet's starting class,
the symbolic reference to the new class must be resolved. During resolution, if the class has not already been
loaded, the Java virtual machine will ask the same user-defined class loader that loaded the applet's starting
class to load the new class. If the user-defined class loader is unable to load the class from the local trusted
repository through the bootstrap class loader, the user-defined class loader will attempt to download the
class file across the network from the same location it retrieved the applet's starting class. Once initialization
of the applet is complete, the applet appears as part of the web page inside the browser.