systems and software organization could not support large software projects.
Twenty-five years ago when we wrote our first Basic programs, they typically
went through very few layers: the program, the Basic interpreter, Basic ser-
vices, and thin hardware-support layers. The Basic and hardware-support lay-
ers were burned onto read-only remory ( ROM ). Of course, we did not get any
of the benefits of a dynamic operating system, either.
Over time, operating systems and languages have increased layering, mask-
ing complexity and improving productivity. Today, a simple “Hello, World”
servlet could go through many layers, networks, and computers. Figure 2.1
on the next page shows some of them, along with the supporting Internet
standards. On the client, the HTML presentation layer renders the user inter-
face. HTTP provides a standard messaging protocol that in turn is layered over
standard communication and addressing protocols, such as Transmission Con-
trol Protocol ( TCP) and Internet Protocol ( IP) . A domain name service ( DNS )
server provides a software layer to resolve the name to a formal IP address.
The server has TCP and IP layers for communication, HTTP layers to receive a
client request and process static content, a Java virtual machine ( JVM ) that
supports the Java programming language, and a servlet container that pro-
cesses the servlet. It would not be unusual for a simple Hello, World servlet,
called through a proxy server or firewall, to touch hundreds of hardware and
The architect for each layer made assumptions that work in your favor.
Imagine a casual Internet programmer who uses the Microsoft software devel-
opment tools (Visual Basic, Access, and FrontPage) to create a simple website
for his home business over a weekend or two. Consider the complexity of the
Through HTML and extensions, he may give it a sophisticated graphical
user interface ( GUI ). For this, he may use some complex structures such
as tables, layers, prebuilt components, and even multimedia.
The site could directly communicate with other user interfaces through
links, even when the programmer knows little about the environment
He could link it to a database without any programming, and even link
it to other applications on the desktop.
Compared to programs written just 10 years ago, this application is amazingly
sophisticated thanks to the supporting layers. Microsoft architects correctly
assumed that home developers are willing to trade performance for ease of