Wake Up and Smell the Java

Hype doesn't run networks. A dynamic and evolving programming language does. Don't believe the hype -- believe the results.

by / April 30, 1998
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.


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 as Netscape Navigator and Microsoft Internet Explorer. In theory, this means that programs written in Java will run, without change, on any platform to which the Java Virtual Machine has been ported. For IT managers with mixed environments, this feature alone makes Java worth considering.

* Distributed -- Although Java can be used for standalone applications, it lives comfortably in networked environments and tries to make life relatively easy for developers who need to distribute their applications.

Java extends the conventional understanding of "distributed" by including noncomputer devices, such as cell phones, pagers -- or toasters. Recently, Java has been moving into both ends of the spectrum: at the low end, into hand-held, non-PC devices; at the upper end, into enterprise servers. The promise is appealing and obvious: to use the same operating environment across the enterprise -- from the hand-held parking ticket citation pad used by local police to the high-end servers processing city financial statements.

So what is Java? At its core, it is a programming language intended to operate well in mixed vendor environments. Two examples illustrate some of the kinds of applications for which it is well suited.


The Development Services Department (DSD) in Phoenix has 120 inspectors who cover 400 square miles within the city; scheduling their time is a major undertaking. Under the old system, contractors called in their request for inspections by 2 p.m. the day before and left a taped message giving the details. Beginning at 2 p.m., the requests were entered from the taped messages, and everything needed to be completed before the 8 p.m. backup. The requests that made it into the system were printed overnight and given to the inspectors the following morning.

Part of the plan for increasing the quality of service was to streamline the front end, so contractors could talk directly to the back-end database, thereby eliminating the tedious transcript process. The public interface is Touch-Tone phone-based.

"We're using ADL, a BASIC-like programming language, which handles the telephone [system]," said Greg Morgan, lead application analyst/programmer for DSD. "It can sense when a telephone goes off hook, can read what has been input on the phone, and then it can write to a local database -- it uses a dBase-style database -- or TCP/IP to go remotely."

Since ADL couldn't talk directly to the remote database, Morgan developed a Java-based server to receive the phone data and talk to the Oracle back end.

"I could have gone with ODBC [Microsoft's database connectivity standard], but in March of last year, I went to a Java world education conference and realized that here was a language that could do all the TCP/IP stuff and could do the multithreaded stuff with ease," said Morgan.

With the new front end, contractors can wait until 8 p.m. to submit their requests for the following day. This means they can tour the worksite themselves after the day's work is completed to verify they are ready for inspection. Beyond this project, Morgan expects to benefit from Java code reuse and anticipates using the Java server hardware for other tasks. Interestingly, the Java part of the application was probably the easiest to write and deploy. Whereas the ADL was 6,200 lines, the Java portion was only about 600 to 1,000 lines of fully documented code.

In terms of performance, even during the pilot, contractors commented on how fast the system responded. Eventually, Morgan hopes to add a Web front end and move away from paper entirely by transmitting an inspector's assignment into laptops. When that is in place, Morgan expects contractors will be able to schedule inspections as late as 7 a.m. the day of the inspection.


The city of Pittsburgh is moving even more rapidly to Java with four applications, which were scheduled to go live in April.

"The first is an Early Warning System [EWS] that is designed to identify police officers who are potentially at variance with the police bureau's behavior standards and to assist police management in providing effective training, counseling and management for those police officers," said Steven Schmitt, Pittsburgh's CIO.

The city was required to put the application in place under a consent degree with the Department of Justice. Another application runs on the police department's mobile data computers -- each police vehicle is equipped with a Pentium machine running Windows NT. This application runs under a browser and is used to do DMV and FBI checks.

"We picked Java for both the early warning system and the mobile data application, as I felt that the requirement to conform to the consent degree would change over time. And [in the case of the mobile applications] I felt Java gave us the ability to quickly change requirements in the application without visiting all those different devices," said Schmitt. "In the police world, you have a very distributed computing problem."

The third application is a case-tracking application written for the Office of Municipal Investigations -- the city's internal affairs organization. Residents may lodge complaints on any city employee in person or through a Web interface. Each complaint is given a preliminary investigation, which is upgraded to a full investigation, if needed. Each of these applications was developed in Java, mostly using outside contractors.

The fourth piece -- a police record management system -- was done in-house and leveraged existing expertise with Oracle Developer 2000. "It is a large application, and we wrote it in Oracle Developer 2000 as a traditional client/server with Oracle on Solaris on the back end and a 32-bit regular application," said Schmitt. "But Oracle gives you the option of publishing Oracle forms to a Web environment, usually in HTML and Java."

In addition to development flexibility, Schmitt has also been pleased with Java's implementation flexibility. For example, EWS was written and tested as a standalone program, but its design permits it to run, with the flick of a switch, under a browser. With this flexibility, Schmitt was able to leave his options open, until as little as a month before launch, as to whether the application would come out of the gate under a browser, or whether it would move there at some later date.

Schmitt did caution IT managers to know the limitations of Java when designing applications -- in particular for designers to understand the available tool kits and widgets -- and not to expect a Java application to look like Windows 95. He also ran into some difficulty with Java's handling of escape keys and interrupts. "But that's a maturity issue, and every month it seems to be better," Schmitt noted.

Because of Java's flexibility and portability, Schmitt also plans to deploy some Java applications to handheld devices. "We'll start deploying solid [non-PC] devices in the field in 1998 and 1999 -- mostly to query information," said Schmitt. "That's another reason why we picked Java; we didn't want to be pigeonholed to Windows CE. The Java vision is clear; it's where we need to go."

Hype is no reason for IT managers to start considering Java for their future application development. Portability, flexibility, security, networking, easy development, central administration and performance are. And though Java will probably mature further over the coming months and years, it is remarkable how far it has already come in three short years. Despite that apparent young age, Java seems to have matured to the point where it merits serious consideration for both large and small applications.

David Aden is a senior consultant for webworld studios, inc. -- a Northern Virginia-based Web application development consulting company. He can be reached at.

May Table of Contents
David Aden
David Aden DAden@webworldtech.com is a writer from Washington, D.C.