Sun Microsystems’ years-long effort to profit from Java has come to this: the chief executives of two of tech’s most powerful companies, Oracle and Google, being grilled in court.
Scrapping over copyrights, patents, and licensing deals is an ignominious outcome for a technology that a decade and a half ago spooked Microsoft and seemed poised to inject dynamism into a largely static Web. Back when it debuted, Java was a brand that carried impressive power.
Though Java has been technologically influential, its brand clout with the average person has diminished as other software such as Apple’s iOS and cloud computing rose to prominence. So now probably is a good time to dig into some of the details on which Oracle’s case hinges.
What is Java?
Java — invented at Sun in the early 1990s and absorbed into Oracle with Oracle’s Sun acquisition in 2010 — is several things.
First, it’s a programming language — a carefully defined way of issuing instructions to get a computer to do something useful.
Second, Java comes with software called a virtual machine that runs programs written in Java. The Java virtual machine (JVM) looks to Java programs like a real computer, but it’s really a layer that hands off instructions to the lower-level operating system actually running on some computing hardware. By building JVMs tailored for a variety of computers, the same Java program can at least theoretically run on both a Mac and a Windows computer. Thus Java’s initial tagline: "write once, run anywhere."
Third, Java includes pre-written code called class libraries that does all manner of work — everything from cryptography to communicating using Bluetooth. A Java programmer wanting to tap into this prefab power does so through a carefully defined mechanism called an application programming interfaces, or API. A sizable collection of companies define these APIs for Java.
Collectively, these three components are collectively called a Java runtime environment, or JRE, and it’s what you need on your computer to run Java software. To be able to slap a Java logo on a particular device, it has to pass tests to ensure it runs Java programs correctly.
Well, that sounds simple enough
Guess again. Java quickly gets more complicated than that.
There are different varieties for different uses. The initial Java Standard Edition was geared for personal computers. It was joined by the Enterprise Edition, which defined APIs for server tasks such as managing databases, and the Micro Edition, which defined APIs for mobile tasks such as sending text messages on a phone.
And it got even more complicated: the Micro Edition had different varieties: the Connected Limited Device Configuration, the Personal Profile Specification, the Mobile Information Device Profile, the Mobile Information Device Profile 2.0, and more.
The upshot was that programmers couldn’t necessarily predict what APIs a particular device would support. Would a phone allow accelerated 2D graphics through Java? How about 3D graphics? That’s important to know if you’re writing a game. The lack of consistency led to the mocking tagline of "write once, test everywhere."
A last gasp came in the form of JavaFX, which aimed to sweep away the muddle with a prepackaged software foundation from Oracle. But as it was arriving, another force attracted mobile programmer attention instead: Apple’s iOS.