May 23, 1995 saw the fruits of a four-year project at Sun Microsystems called Java. The new language with a C-like syntax promised the ability to write once and run anywhere through the use of virtual machines that compiled the code on the native platform at runtime.
The project began in 1991 when a small group of Sun engineers called the "Green Team," led by James Gosling, began working on a language and networking system for the next generation of digital consumer devices and computers.
In the 20 years since its launch, Java has exploded in use, been the subject of lengthy litigation with Microsoft, grew and died on the desktop, moved to the server, then jumped to feature phones, only to have its lunch eaten by smartphones, fallen into such disarray that the Department of Homeland Security said not to use it, and is now enjoying a renaissance under the stewardship of Oracle.
What other programming language can claim such drama?
When the project began, Sun saw a collision of the computer industry and non-computer industry technologies like cell phones to stereo systems to railroads to whatever. Sun noticed that they were all, in some form or another, reinventing computer science.
"The unifying theme was networking," said Gosling, now chief software architect for Liquid Robotics. "When we looked at these companies, they were designing their own networking and doing a really bad job of it. A lot of it was predictable. They were repeating a number of experiments we'd had in computer science 30 years ago."
The problem was the consumer electronics people didn't take networking into account, like common APIs across multiple platforms, or code reuse. "There was essentially no software reuse. Everybody was reinventing everything over and over again. We were trying to get to a place where we had models to help them get out of that," said Gosling.
"I remember doing native coding before Java and one thing we tend to forget is a lot of our time and energy and resources were spent taking something we wrote somewhere else and having to port it to a lot of places," said Georges Saab, vice president of development for the Java platform at Oracle.
"A lot of places would have teams the same size of the primary development team working on porting things to other platforms. Coverage was spotty, things were lagging. Java reduced cost and improved productivity," he added.
While home stereos didn't ship with Java, Gosling notes that what the consumer electronics vendors envisioned back in the early 1990s was what we call the Internet of Things today. "The fact you could take a networking library and run the same thing on a small device, the cloud and the desktop is really powerful. In my current job we do all three of those all the time. I have lots of libraries that run in all three places," he said.
Java's first five years were spent getting high performance compilers out, said Gosling. The next five years, though, everybody forgot everything except enterprise apps. "Just watching how Java EE took over the world was pretty amazing. The only thing that bugs me about that phase is we forgot everything else. All the resources got put into EE. At Sun it was just about impossible to get any funding for desktop work," he said.
But Saab notes that the sands shifted during that time. "In the '90s, everyone was focused on building desktop apps. By 2000 everyone had jumped off that to build the next Pets.com. The industry moved to HTML apps from the desktop. With the advent of phones/tablets, we saw a dramatic transition from desktop apps to being built for touch-based mobile devices. It's very difficult to predict what the next trend would be," he said.
Then there was Java 2 Micro Edition, introduced in 1998 when it split the language into three platforms: Java 2 Standard Edition, Java 2 Micro Edition and Java 2 Enterprise Edition. ME was meant for small devices and embedded systems. It found a home in flip phones, which were the standard at the time.
Then came iOS and Android.
"ME was doing really, really well. It was out on cell phones way ahead of any of the other platforms. But it's sort of been forgotten. It pretty much got overshadowed by Android," said Gosling.
It didn't help that as a separate platform, Java ME was left behind. Cameron Purdy, senior vice president of development at Oracle, said that the work being done on Java 9 will bring all of the platforms together.
"ME got separated from the standard edition and fell behind. The modularity capabilities in Java 9 means we're reunifying that so Java ME developers are not second -class citizens. Android and iOS were not foreseen when ME came out," he said.
Java began to fall behind as Sun fell behind competitively late last decade. The company experienced a downward spiral of sales and losses of talent as its RISC systems fell out of favor and CEO Jonathan Schwartz proved not up for the job. First IBM stepped in to purchase the company but the deal was scuttled. Then Oracle stepped in, but the approval process took nine painful months, which did a lot of harm to Sun in lost talent, sales and momentum.
For the first few years of Oracle's ownership, Java was hit with a string of critical zero-day bugs. It got so bad that in January 2013, the Department of Homeland Security advised people not to use Java unless they had to.
"I read that with some combination of anger and amusement," said Gosling. "A lot of that was Oracle coming to terms with what it means to have a product out there. With a product like that, something used on the wide open Internet, you have to be willing and able to issue fixes instantly."
Oracle is an enterprise software company that issues fixes much slower than a company with consumer-facing products like Microsoft or Adobe. It wasn't used to having to respond in hours or days instead of months, he said.
Purdy said Oracle was already heavily invested in Java and understood how important it was to the industry as a whole. The challenge it had was getting a team together after so many people, including Gosling, had split from Sun, and then getting their arms around a language that had been severely neglected for some time.
"We did get a lot of criticism for things that predated our ownership of Java but we took responsibility for them and consistently looked for solutions to those issues," he said.
A stronger Java
The DHS statement was the nadir of things for Java, leading more than a few people to declare it dead. Just Google "Java is dead" and you get 23 million results. But it didn't die. It slowly came back, prompting Dr. Dobb's Journal editor Andrew Binstock to defend the language in an editorial entitled "If Java Is Dying, It Sure Looks Awfully Healthy."
"I would say that the state of Java is pretty darn good," said Mike Milinkovich, executive director of the Eclipse Foundation. "Java went through a lull around the Java 6 timeframe when Sun couldn't invest in moving the platform forward, but since Oracle has taken it over we've seen a steady pace of innovation happening, and that's been pretty good for Java."
Gosling is also happy with Oracle's stewardship of his baby. "I'm surprisingly happy about it. Oracle has done a better job of being a good custodian than I would have expected. My expectations were that Java would turn out like Solaris, pretty much dead. They have done a very good job with Java."
Since taking over Java, Oracle has brought a number of vendors into the Java Community Process, the group that seeks industry input into the direction of the language. They include IBM, Apple (which is delivering the JDK for the Mac), Red Hat, Intel, Microsoft and some expert users, like Twitter, Square, and Goldman Sachs, according to Saab. However, the Apache Foundation quit in 2010 after a disagreement with Oracle.
In the five years since it took ownership of Java, Oracle had to rebuilt its Java team, who in turn had to learn an enormous code base with a lot of moving parts. "We have over time looked at our entire process for how we handle bugs, from input to fixing to the mechanics of the release. There was quite a backlog to fix," said Purdy.
"They've gone from something pretty close to a disaster to a state where it's been a while since we heard about a Java security problem. If you go back two years ago, you'd see conversations on Oracle earnings calls about Java security and it doesn't happen anymore. It doesn't get noticed that there are no new problems," said Milinkovich.
Purdy notes with pride that Java was the only target not broken at the 2014 Pwn2Own hacker contest, and it was removed from this year's contest because no one could break it. We asked the folks at CanSecWest, which runs Pwn2Own, for comment but they have not replied.
Present and the future
Java 9 will be Oracle's next big move and its first major overhaul since taking ownership of the language. The main goal of the Java 9 project is to modularize the JDK as much as possible so people can use just the parts they need for their app.
"We're trying to help people get out of JAR hell," said Saab. "You'll be able to do a lot of things that have been a challenge for Java programmers in the past, like packaging, and address startup and warm up time. Of you know which modules you need, you can strip out the ones you don’t need and make the footprint smaller."
Purdy added that the project has been going on for the entire time of Oracle's ownership, and then some. "This is a fairly significant change in the java platform. It's not tacked onto the side or glued on the top. This is working through the entire set of Java libraries and reworking their interdependencies into a single graph of interdependencies," he said.
So where does Java go from here? Milinkovich and Gosling both think it should go where it was initially headed: into the Internet of Things.
"I really think Java's future is in IoT. I'd like to see Oracle and partners focused on a complete end-to-end storage solution for Java, from devices through gateways to enterprise back-ends. Building that story and making a success of it will help cement the next 20 years for Java. Not only is that a massive opportunity for the industry, but also one I think Java can do quite well," said Milinkovich.
"The whole VM is its own ecology," said Gosling. "All the parts are understood together. A lot of the IT world works better if you think of the edge and the core as being a unified whole. You don't design an edge device and find something to connect it to. You design both sides together. You get a symbiotic relationship between them to that can be really powerful."
Not surprisingly, Oracle agrees. "Java is an excellent tech for IoT," said Saab. "Many of the challenges in IoT are many of the challenges of desktop and client Java helped address in the 1990s. You have many different hardware environments out there. You want to have your developers look at any part of the system, understand it and move on. Java is one of the few technologies out there that lets you do that."
As Java enters its twentieth year, it has become a mature language rather than the hot new thing. It's more like C++ than Python. And its supporters are enthusiastic about its future. "I don’t think Java is anywhere near close to dead," said Milinkovich. He added that it has the image problem of being a reliable enterprise platform, where longevity and scalability is more important than being the coolest new language.
"It's not the hot new thing but it's the tried and true," said Gosling. "It is absolutely mission critical solid. I keep hoping that writing desktop apps will become hot again. Look at all the big players, their core system are all big bags of Java code. Anyone who has to do high performance, high volume systems, it's the platform. If you look at any of the stats or job postings, you'll see it's really healthy."