This site uses CSS (Cascading Style Sheets). If you can see this message, you may have some trouble navigating this site. You will need to upgrade to any CSS capable browser, such as
MS Internet Explorer (version 5.5 or higher),
Netscape (version 6 or higher),
Opera (version 5 or higher), or
Safari (any version).
Java
by Yoshinori H. T. Himel
Solar Tea? This Brew Is Stronger
You probably have seen some World Wide Web pages with cute moving pictures, flashing lights and dancing words. But did you know that those animations contain the seeds of a major shift in how we compute?
Sun Microsystems' Java programming language should become a major time and money saver — as important to us as its liquid namesake. To begin, here is a Java primer.
Interpreting Java
Java is a computer programming language — that is, a medium through which a programmer writes programs, like your word processor, that tell a computer what to do. Without computer languages there are no programs, and your computer, receiving no instructions, does nothing.
But there is another layer to all languages. For the computer to follow the programmer's instructions, it needs language software to translate those instructions into the computer's native tongue.
Many language programs are "interpreters," which translate and execute each instruction as the computer receives it. Others are "compilers," which translate the programmer's instructions into an executable program to be run later.
The first, "interpreter" approach places limits on running speed, because the computer must translate each line of code every time the line is executed, and some programs may require one line of code to be executed millions of times. One popular interpreted computer language, Microsoft BASIC, was Bill Gates' first saleable software product and powered the first IBM PC in 1981.
The second, "compiler" approach takes a long time for translation; but one translation, by the software maker, is enough. Your word processor, like most application programs, has been compiled.
Generally, today's compiled software can run on only one type of computer. So, if you need a word processor for both your Macintosh and your Windows PC, you have to buy Mac and Windows versions.
Java, like BASIC, began as an interpreted language, running small applications, or "applets" downloaded to it from World Wide Web pages. Its interpreted nature helped it to be platform-independent, that is, able in principle to run on any machine and under any operating system. As an interpreted language, Java could run small applets fast, but it slowed down on more complex tasks.
Larger application programs, like your word processor, can be written in Java. In Java, programmers break such programs down into applet-size "component" programs. To prevent delays from plaguing the user, the larger applications need a way to execute faster than an interpreter can.
To speed the running of these bigger Java programs, several makers, including Symantec (working with Sun) and Microsoft, are offering Java compilers. Because Java applets come to your machine when needed instead of taking up residence when you first install the program, Java compilers must be able to put applet-size pieces together into a working whole. These "JIT" (just in time) compilers read the Java instructions as they download, compile them rapidly into your machine's native tongue, and execute them at compiled-program speeds.
Java's dynamic nature, with program components or other applets coming into the user's machine at different times, means that applets can sometimes conflict with each other. JIT compilers therefore can adapt and recompile already-compiled components to coexist with the newer downloads.
Net-Centrism and Thin Clients
Java differs from the languages that preceded it because it is "Internet-centric." As Brent Schlender explained in a 1996 Fortune article, unlike conventional software applications, which occupy many megabytes on your hard drive, Java programs mostly reside on network or Internet servers. Only when you need a particular application program component (or applet) does the network bring it to your machine. Your machine then puts these components together like Lego blocks.
So long as applets stay small, the machine on your desktop does not need to store them on its hard drive, for it can download them rapidly from the server. Without a large hard drive, floppies, CD-ROMs or other such devices, your station is a "thin client," that is, a machine specialized for network computing. Oracle and other companies have devised $700 NCs, or Network Computers, on this model. Not believing in these thinnest of clients, Microsoft and others push an intermediate-thickness machine, a $1,500 "NetPC" with its own hard disk but no user-replaceable parts.
Maintenance Costs and Platform Independence
Net-centrism is a major change in the way we compute. Why should we adopt this new computing paradigm when we have just assimilated the latest version of Windows?
The main reason is that net-centrism helps control costs. A Gartner Group study says that a Windows 95 PC with a purchase price of only $2,000 costs $6,000 per year in hardware and software maintenance, done either by high-paid computer professionals, or by users at the cost of many puzzled hours. Much of the $6,000 comes from the computer professionals having to maintain individually-configured computers and having to install software upgrades at each user's desk.
By contrast, application programs (word processors and the like) residing on an office's server mean that only one copy needs upgrading. The program's upgraded component applets then diffuse through the office as the users' stations call for them. Individuals can still set their own preferences, and the server can send those preferences to any station at which the individual logs in.
One of Java's makers' slogans is, "Write once, run everywhere." Everywhere means on any type of machine, under any operating system. For a machine to run Java programs, it needs a Java Virtual Machine (JVM) written in its native language. Java programs see only the JVM, not the particular hardware and operating system.
Although in principle a Java program executes the same way on every machine, the facts sometimes lag the aspiration. Windows partisans say platform independence is illusory: "Write once, debug everywhere." If Java's cross-platform capability is fully realized, our offices should be able to run new Java software on any type of machine, including the ones too old to run Microsoft's newest version of Windows.
Java in Action
So, how would you do your everyday work under Java? Say you are a busy lawyer who needs to check the cites in a brief you are about to submit.
You call the brief up, perhaps to a screen that resembles a Web browser. You press the cite-check button, and your computer downloads a Java cite-checking applet to its memory from your office's server or from the Internet. The program then executes, checking your brief against your office's CD-ROM or on-line case law database, and marking the questionable cites or quotes in your brief. Then the program disappears, freeing your computer's memory for your next task — perhaps the editing modules of a word processor to excise the bad citations.
Java's Beginnings
Java traces its origins to 1990. As reporter David Bank told it in a 1995 Wired story, Sun Microsystems had realized that ever cheaper and more powerful desktop PCs might squash its server and high-end workstation market into a minor niche. Patrick Naughton, a recently-hired, well-regarded Sun programmer, told Sun CEO Scott McNealy he was quitting Sun's Windows programming shop to join Steve Jobs' NeXT firm. At NeXT, Naughton said, "they're doing it right."
McNealy — described by Bank as a "fierce competitor" with a "blood lust" to smash Bill Gates' operating system monopoly — asked Naughton to write him a memo saying how Sun should do it right: "Tell me what you would do if you were God." Naughton responded, and McNealy forwarded his memo through the company, igniting what Bank called a "firestorm" of strategic rethinking.
The resulting proposal was to think small. Assemble a small team; work for the consumer; create a small operating environment; and aim software at personal, simple-to-use machines — "computers for normal people." Instead of the increasingly powerful, complex, expensive-to-maintain computers that today's expansive desktop software suites require.
Rejecting Software Bloat
Parkinson's Law says that "work expands so as to fill the time available for its completion." Like work, software seems to expand to fill the available computing resources, including storage space and processor time.
The reasons for this software bloating are not hard to divine. Software users want features, and they communicate their wants to vendors. Vendors compete with each other by offering every desired feature. Features require computing resources.
The latest version of a software package therefore tends to be the most feature-laden, the biggest, and the slowest. New software often requires new hardware with a bigger hard drive, more memory, and of course, Intel's next-generation processor.
Before Java, Sun was no exception to software bloat. Its software applications for Sun's powerful workstations were as complex as anyone's.
Against this background, the Schumacher-esque "small is beautiful" idea being advocated within Sun was unconventional, perhaps even heretical. To succeed, its creators needed resources, creative freedom, and, most of all, insulation from Sun's established divisions. Obligingly, McNealy and the rest of Sun's top management gave a team code-named Green--including programmer Naughton and a few others — $1 million, an off-site location, and carte blanche. Their mission was to come up with a software system that could run anywhere, even on devices that people did not yet think of as computers.
Brew Dumped; Brew Reinvented
Green team member James Gosling had been working at home to replace the C++ language with something new. The new language got a name, Oak, by the fall of 1991.
The Green team sought to make Oak the mother tongue of the Internet. In Gosling's fantasy at a Doobie Brothers sound and light show, "I kept seeing imaginary packets flowing down the wires making everything happen." Thus, packets of Oak code would zip around the Net, assembling themselves into a program in somebody's computer (or non-computer device) on demand. In late 1992, Sun created a subsidiary, FirstPerson Inc., for the Green team.
The team aimed Oak at one market after another: a box to control your VCR, an upgraded Minitel system for France Telecom, cell phones for Mitsubishi, industrial control systems, interactive TVs for Time Warner, set-top boxes for game maker 3DO. None worked out. In 1994, Sun scrapped the FirstPerson subsidiary.
Later that year, however, Sun co-founder Bill Joy convinced Sun management of a new idea--the "Internet play" — in which Sun would give away Oak to build market share, as Netscape had done with its Web browser, Netscape Navigator. Giving away software was a risky strategy. Bank says that Sun's chief technology officer, a supporter of the Internet play, felt he was surrounded by silent accusations that he was giving away Sun's "technological crown jewels" to the public, including arch-rival Microsoft.
Despite all doubts, the Green team was back in business. By January 1995, Oak had a new name, Java; and Naughton had written what would become HotJava, a Java-based Web browser.
A New Ally
That spring, Marc Andreessen, co-founder of Netscape, the Navigator browser's maker, got a copy of Java and told the San Jose Mercury News that Java was "great stuff." Java's senior product manager hailed this as a "blessing from the god of the Internet."
Netscape immediately licensed Sun's Java language interpreter and placed it in Netscape Navigator. Java now was available to masses of Web surfers — and indispensable for Web sites. Java had entered the marketplace.
But Java gained a powerful enemy. Newspaper editor Dan Gillmor, writing in ComputerWorld, quotes a Microsoft view of Java by group vice president Paul Maritz: "It's a competing operating system."
Rebel Alliance
Politically, according to Schlender's Fortune article, the industry in 1995 was ripe for a war against two near-monopolies. These were Microsoft (dominating the operating system market with Windows, and on its way to dominating application software) and Intel (similarly dominating microprocessors). This Wintel (Windows and Intel) duo had been "leaching more and more of the profit" from competing makers of microprocessors, operating systems and applications. Competitors' decreasing profits could cause them to leave the application software market. This would mean an end to competition for the user's software dollar, to users' eventual detriment.
What alternative to the Microsoft-dominated Windows platform did the other application software houses have? The answer was Java. Written to be net-centric, secure against viruses, ubiquitous, and universally compatible, Java was becoming a platform in itself.
A number of the computing industry's players need such a cross-platform platform, and therefore are investing in Java. IBM, a supplier of computers from mainframes to desktop Aptivas and notebook ThinkPads, needs ways for its larger and smaller machines to talk with one other. Makers and users of non-Intel-compatible processor chips, such as DEC's Alpha and Motorola's Power PC, need processor-independent software. Hewlett-Packard and other makers of handheld devices need small, nimble, inexpensive software to run the handhelds and let them talk with bigger machines.
Thus, this August HP announced plans to make Java the basis for the operating systems that will run its handheld devices. In a Computer Reseller News article, Jeff Bliss quotes an HP Computer Organization vice president as saying that Windows is "just not designed for very sleek, simple environments."
Corel, the maker of WordPerfect, rewrote its Corel Office suite in Java in late 1996 and early 1997. It released the result in beta, but not in final form.
Why did Corel not market Corel Office for Java? Nicholas Petreley, writing in NC World in August, said that Corel, after attracting attention with its not-marketed "monolithic" Java office suite, now is exploiting the new "Java Beans" technology.
Java Beans is Sun's way of assembling applets from the network to do the tasks needed at the particular time. Microsoft has another way of assembling program objects from the server at a station: ActiveX. Java partisans deride ActiveX as Windows-bound by calling it "CaptiveX."
Corel dropped its "monolithic" suit to do an application suite as a series of applets, the way that Java does best. Corel says on its Web page to watch for its Java-based, network-resident Enterprise Edition of WordPerfect and other major programs around the end of this year.
The other major application suite vendor, Lotus (now owned by IBM), also is reinventing its suites in the form of Java components such as a text editor, a chart maker, and a business form designer. Schlender's piece says that Lotus also is converting its Notes groupware to Java, and that it has reassigned hundreds of programmers to these Java projects. Schlender quotes Lotus president Jeff Papows as saying, "Java will be instrumental in loosening Gates's stranglehold on the world."
In maintaining the alliance against Microsoft and Intel, Sun set up another organization, JavaSoft, to keep Java licensees' products "100% Pure Java," that is, completely compatible with Sun's Java standard. This August, Sun, Netscape and IBM announced a Java Porting and Tuning Center, to be located at JavaSoft in Cupertino and staffed by 100 engineers from all three companies. According to Clinton Wilder in InformationWeek, "IBM and Netscape are arguably Sun's most important allies for propagating Java in the corporate and Internet communities, respectively." The article quotes an IBM vice president as wishing to capitalize on Java's "big inroads" into enterprise computing, but recognizing "performance," that is, speed, as an area needing work.
How is Java faring with corporate customers? According to a piece by Carol Levin in the September 9 PC Magazine, a survey by Zona Research found that half of the surveyed information technology professionals in Fortune 1000 companies are using Java, and the other half plan to use it within 12 months. Companies are building Java applications for themselves now; examples include online banking and automated package routing. The companies project their applications development spending as 13% Java-related in the next half-year and 21% in the next two years.
What has Microsoft been doing in the face of the Java challenge?
Gates at the Gates
In 1995 Microsoft announced a push to exploit the information highway. In Bank's colorful words, Microsoft decided to "make war with Netscape Communications and morph itself into the overlord of the Internet." To compete with Netscape, Microsoft had to give Netscape Navigator-like capabilities to its own browser, Microsoft Internet Explorer.
The ability to run Java applets is one of Netscape's significant capabilities. As Schlender puts it, "Once Gates decided he wanted to unseat Netscape as the Internet browser king, Microsoft had to incorporate Java into its own browser...Internet users wouldn't stand for anything less." Microsoft had to go to McNealy, its "blood lust" rival, for permission to build this important feature into Internet Explorer.
Microsoft and Sun inked their licensing agreement the next spring, in March of 1996. Microsoft has announced successive versions of its own Java Virtual Machine running under its Windows operating systems. Microsoft claims that its JVM is the "reference" Windows implementation of Java and, also, the speediest. Armed with these new rights and products, Microsoft then responded to the distress call of an old competitor in the desktop operating system market.
William's Arrow Finds Apple
Apple Computer, with its Intel-incompatible Power PC processors and Mac OS software, needed a path to the mainstream to assure its loyal customers that it would continue to exist. Java is becoming such a path. But the question now is, will Apple's path be platform-independent Java or Java as modified by Microsoft?
In August, Apple announced a broad alliance with Microsoft. One part of the alliance, according to a Microsoft press release, is collaboration between the two "to assure compatibility between their respective Virtual Machines for Java." Another is Apple's adoption of Microsoft's Internet Explorer as the default Mac browser. Apple's Java strategy is most likely to come from its bigger partner. Apple's path to the mainstream will have a Microsoft gate.
Microsoft — Coopting or Coopted?
Java holds dangers for Microsoft. First, Microsoft can lose its operating system monopoly. Sun's McNealy ("This blows up Gates's lock and destroys his model of shrink-wrapped software that runs only on his platform," according to Bank's story) and Microsoft's Maritz agree that Java means operating system competition.
Second, Microsoft may not be able to exploit new Internet-centric technologies because of its commitments to its existing customers. As David Moschella says in ComputerWorld, "If Microsoft has a weakness, it's found on the flip side of its installed-base strengths. It will be increasingly difficult for Microsoft to support new Internet technologies while it provides integration and backward compatibility with bloatware such as Word and Excel, all the while incorporating more functions into its operating systems."
Editor Gillmor, however, views Microsoft as the coopting party. Microsoft is, he says, "working feverishly to derail one car on the Java Express while it hijacks the rest."
Praise Their Language; Push Our Platform
As Gillmor phrases it, Microsoft's derail-and-hijack strategy is: "Praise the language and make it Microsoft's own if possible, but undermine the cross-platform notion. How to make Java just another Windows programming language? Make Java run best on Windows and create programming tools with Windows-specific features."
The last step of Windows-specific features may, however, breach Microsoft's licensing agreement with Sun. Microsoft recently refused to implement JavaBeans, according to a Windows Magazine story in September. It backed down on Beans, but now is refusing to implement Java Native Interface, another component of Java 1.1. Although Microsoft's program manager reportedly said that "we can do whatever we want" and can refuse to ship Sun's "crap," JavaSoft's corporate marketing director said that all Java licensees (even the Gatesian goliath) are required to support "the entire release" of Java.
The result may be a legal battle over Microsoft's obligations under its Java license. The Windows Magazine piece suggests that if Microsoft were found in violation, it might be compelled to stop distributing its Java-based software, including its Java language tools and Microsoft Internet Explorer with Java. Of course, were this about to happen, Microsoft likely would back down again.
My view? Windows's monopoly position is bad for us as computer users. No matter how good a PC product may be now (and some of Microsoft's are quite good), in the long run we do best when many vendors vie for our business. Java technology should help users by fostering competition for our hardware and software dollar.
SLUG's Fall Meetings
On November 19, Erik Smith of JavaSoft will update SLUG on Java. On December 17, Garrett Dailey, Esquire, will demonstrate LAWGIC's new interview and document generation software.
SLUG meeting information
SLUG meets on the third Wednesday of each month, at noon at the Delta King, 1000 Front Street, Sacramento, California. Dues-paid SLUG members can pay $17 by the Monday before the meeting or $22 at the door. Non-members pay $2.50 more. Mail your check (payable to "SCBA") to Tonya Mathews, Office of Administrative Hearings, 501 J St., Ste. 230, Sacramento 95814, 445-4926. Everyone must reserve and make a menu choice with Ms. Mathews. To suggest topics for future meetings, call program chair Yoshinori Himel at 554-2760. For all other information about SLUG, call SLUG chair Stuart Home at 447-7771.
Reference
Bank, David, The Java Saga, Wired, December 1995, p. 166
Bliss, Jeff, HP Selects Java for Appliance Introduction, Computer Reseller News, September 1997
Gillmor, Dan, Microsoft Crashes Java Dance Party, ComputerWorld, September 1997
Grinzo, Lou, Microsoft's Java Push Getting Cold, Windows Magazine, September 1997
Levin, Carol, Wanted: Full-Time Java Developers, PC Magazine, September 9, 1997, p. 29
Moschella, David, Just-in-Time Unbundling, ComputerWorld, September 1997, p. 117
Parkinson, C. Northcote, Parkinson's Law (1957)
Petreley, Nicholas, Rejoice: Corel has Abandoned its Office for Java, NC World, August 19, 1997
Schlender, Brent, Sun's Java: The Threat to Microsoft Is Real, Fortune, November 11, 1996
Schumacher, E. F., Small Is Beautiful: Economics As If People Mattered (1973)