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.

[ Also on ITworld: The Oracle-Sun merger 5 years on: How Sun's products have fared ]

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 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." - Mike Milinkovich, executive director of the Eclipse Foundation

"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.

The stumbles

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.