Java is now in its sixth year, and developers from around the world are descending on San Francisco for this year's JavaOne conference to hear where the platform is going.
Java is rarely out of the news, but it can be difficult to pin down the technology. Java 2's three families - Enterprise, Standard and Micro - encompass server, desktop and small devices. And, while Java is no longer in the running for standardisation, Sun aims to keep its development open on its own terms - while continuing its lawsuit with Microsoft.
Earlier this year Sun unveiled its latest version of the Java 2 platform, opening another chapter in the "write once, run anywhere" story of cross-platform software development.
Originally designed by Sun Microsystems to run on a competitor to the Apple Newton, Java was sidelined to a set-top box when Newton failed. This venture also collapsed, but Java was reborn in 1995 as a vehicle for developing Web applications.
Java is a conventional programming language owing a lot to C++. Designed for portability, Java runs in a "virtual machine", isolating it from the computer. This makes it possible for a Java application to run on different hardware and operating systems without modifying the code. Such distancing from the hardware minimises the chances that rogue code will cause damage - accidentally, or intentionally.
Getting a clear picture of the Java world is confused by Sun's liberal sprinkling of the name over a host of related products. The classic desktop environment is Java 2 Standard Edition (J2SE). This differs from Java 1 in having more bundled features, such as the Java foundation graphics classes, and a Corba2-compliant object broker.
There are also enhancements to the security model to give greater flexibility. A Java 1 applet is bluntly prevented from accessing files on the hard disc. In Java 2, certificates are used to give authority, down to specified actions for individual files.
J2SE is not a product, but a specification and a compatibility suite. Real-world products are the virtual machines and development kits, such as Sun's recently launched Java Development Kit version 1.3. The more compact Java 2 Micro Edition is being developed for handheld devices from phones to palmtops.
And then there's Enterprise Edition - J2EE. This sits on top of a conventional Java virtual machine, adding the functionality of a Web application server. Like the desktop model, J2EE is a specification, not a product - a potential competitive advantage. Where other servers are available from a single supplier, J2EE will be used by a range of manufacturers from the Sun/Netscape venture iPlanet to IBM.
Yet another recipient of the Java label is Java Beans. As Sun's Dave Pennington points out, this branding is downright confusing. "We have Java Beans and Enterprise Java Beans. The only connection between the two is they both have 'Java Beans' in their name."
Java Beans is, like Microsoft's ActiveX, a mechanism for providing packaged components that can be deployed at runtime to perform a local task. Enterprise Java Beans is a totally different, server-side component model. It is part of J2EE and includes technology for handling XML, directory services and dynamic Web pages.
Church and state
Sun portrays its relationship with Java as "church and state" - the church is Java as platform, the state is Sun's commercial products.
Several attempts have been made to give the platform a standards-based status. Unfortunately, it is difficult to marry the practical world and standards bodies - a C++ standard, for example, has existed for more than 10 years, but no products yet match it.
After an uncomfortable time with the ISO, Sun attempted to establish Java as a standard through the European Computer Manufacturers' Association. However, this too stalled.
Blaming slow bureaucracy and the influence of the Microsoft, Sun devised its own form of standardisation - community sourcing. This makes Java source available to whoever wants it, with two provisos: there is enforced compatibility of core software, and proprietary extensions are allowed, provided they don't interfere with core compatibility.
Acting as a pseudo-standards body, Sun provides the Java Community Process, allowing anyone to submit an enhancement to Java. It may not be true standardisation, and has irritated rivals, but at least it lacks the inertia of a traditional approach.
The difficulty of Sun's balancing act has been highlighted by the company's lengthy lawsuit with Microsoft. For more than half Java's lifetime, Sun has been in dispute over Microsoft's Java implementation, claiming that the Seattle giant introduced incompatibilities to make Java more favourable to Windows.
Initially, Sun's suit did some damage, particularly to Internet Explorer 4.0. However, this year's judgements have mostly gone against Sun, and while there is a possibility of future disruption it now looks less likely.
The position of Java has been further confused by the emergence of XML, the extension to HTML that moves Web pages closer to programs in their own right.
Sun sees Java and XML as partners, with Java the vehicle for producing tightly coupled applications, and XML a binder for applications and a gateway to data.
The company is keen to push Java into corporate developments, makes great play of its enterprise facilities. However, while servers based on J2EE are spreading quickly, the Java application market has been fuelled from the bottom up. Most Java developments remain one-person projects.
Java's position is very different, though, on computer science courses. As John Spiers of Sun's development arm Forte points out, "Anyone who has been doing programming in universities will be working in Java, it's where the skills lie."
Language of choice
A straw poll of computer science students confirms this - Java is the students' language of choice. Whether Spiers is right in assuming this means that Java will take over the corporate world is a different matter. In the past, educational establishments majored on languages like Pascal without changing corporate practice.
Java is not going to go away, nor will it take over the world. Its portability, popularity and Web-friendliness will make it a useful part of the IT toolbox for years to come, while the J2EE specification gives other Web application servers a run for their money.
Links to more on Java