Although the world of information technology is a maelstrom of change, new developments and hype, few things in IT have approached the hype surrounding Java. It's probably safe to assume the only people working in IT today claiming they've never heard of Java don't read anything anywhere concerning the industry; have been stranded on a desert island for the last three years; or are only pretending to work in IT for reasons that are probably best left unexplored.
Over the last six months alone, media attention on Java has ranged from commentaries on Java's "last chance for life" to stories trumpeting Java's move into the enterprise. With it all, evidence of Java's growth abounds. A Sun press release claims that Java's first 800 days saw:
* More than 1 million downloads of the Java Development Kit;
* The number of seats grow from 0 to 70 million;
* An increase from 0 to 400,000 in Java developers; and
* More than 1,000 shipping Java applications.
Computer, and even general-interest bookstores, are allocating shelves or entire bookcases to Java publications, and a search on Amazon.com produces a list of several hundred titles. With all this activity, it is hard to believe that Java was released a scant three years ago.
However, for IT managers responsible for mission-critical state and local systems, hype doesn't carry much weight; in fact, hype is often a good argument against a new technology. State and local IT departments usually work safely behind the bleeding edge, keeping their eyes on key drivers, such as reliability, long-term support and security. Ironically, underneath the Java hype there seems to be some powerful reasons for state and local IT managers to take a closer look. What's more, some agencies have already begun to embrace Java as an important part of their IT strategy.
SO ... WHAT IS JAVA?
David Flanagan, in his book Java in a Nutshell, quotes an early Sun Microsystems definition of Java as, "A simple, object-oriented, distributed, interpreted, robust, secure, architecture-neutral, portable, high-performance, multithreaded and dynamic language."
Flanagan expands and explains each of these elements in some detail, but several stand out as particularly relevant to state and local IT managers:
* Secure -- Although Java began as an attempt to develop a common platform for consumer devices -- an area in which it is still making strides -- it lives in a distributed environment, so security has been a consideration from the ground up. For example, Java's security model checks code at both compile time and run time. Java also eliminates an important class of security attacks by preventing Java programs from directly accessing certain system resources that lie outside a well-defined "sandbox." Elimination of these potential security holes has the added benefit of helping programmers avoid a large and particularly hard-to-debug group of common errors.
* Portable -- Java has extended the usual concept of portability. Languages such as C or C++ are considered "portable" when the same, or similar, code can be recompiled to run on different platforms. (Compiling is the process of turning human readable programming code into something a machine can read and run.) For example, suppose a developer writes an assets management program in C that is compiled to run on an agency's UNIX box. Later, another developer wants to compile the same program to run under Windows NT for use in one of the agency's departments. With hardware and software differences between the UNIX and Windows boxes, it's unlikely the code will compile and run without alteration under both operating systems.
Java's approach is radically different. Java programs run on a virtual machine that can be thought of as a software imitation of a real machine. Versions of the Java virtual machine exist for most common operating systems and are even embedded in common Web browsers, such