Has it been 20 years already? It’s hard to decide what date should be considered the “birth” of the Java platform. While the final release date of Java 1.0 was on January 23rd in 1996, alpha and beta releases had been published as early as March 1995, and Sun Microsystems later celebrated May 23rd 1995 as official birthday of Java – the day it was presented at the SunWorld conference and where Sun also announced that it would be incorporated into the Netscape browser. A time, then, to look back…
The Java technology was developed by Sun Microsystems beginning in late 1990 and originally intended for “smart appliances” such as TV set-top boxes. But opportunities in this market failed to materialize, as TV companies were still uncertain about their own business models in video on demand and digital video markets, and hesitant to give up control to users or technology providers. The project was then re-targeted at the nascent World Wide Web and developed a web browser called “WebRunner” at first and later renamed to “HotJava”. It allowed webpages to embed Applets, Java programs that would be automatically downloaded and run on the user’s machine, showing their GUI as part of the webpage.
Hype and Backlash
However, a backlash appeared just as quickly, since Applets performed rather poorly on the consumer PC hardware of the time, yet were often used in a way that provided no value. Users came to associate Java with having their browsing experience interruptions as the browser paused to load the Java runtime, only to display some cute visual effect. This, and the requirement to have a JVM installed (which represented a rather large download), prevented Applets from gaining much traction.
This could have led to the Java platform slowly fading into obscurity, if not for three developments that would turn it into one of the dominant software platforms:
- Many universities and colleges adopted Java as a teaching language, because it was object-oriented (a hot topic at the time) and offered good parallel programming features, had a familiar C-like syntax, but was much simpler than C++. This ensured a large and steady supply of developers knowing Java.
- Since the Java standard and Sun’s implementation (including most of its source code) were freely available, many open source software projects began to use it. This included many development tools that made the platform more attractive for developers and ultimately created a true “Java ecosystem”.
- In 1997, the release of Servlets gave Java developers a standardized API for developing server-side web applications, and the Java platform its big success story that continues even today. In the more fragmented OS and hardware landscape of servers, Java’s platform independence was very useful, and its managed memory completely prevented some common security holes. Even performance was relatively good because multithreaded handling of HTTP requests eliminated process creation and switching overhead.
So while applets all but died out, and successful desktop applications written in it were (and still are) uncommon, Java truly started to flourish on the server, especially in enterprise environments. Sun quickly recognized this as their big chance and began to focus its marketing and engineering efforts in this area, culminating 1999 in the release of an “Enterprise Edition” for Java (called J2EE at the time and later renamed Java EE) built on top of the regular Java runtime, which was now declared the “Standard Edition”.
This Enterprise Edition consisted of a set of standardized APIs for functionality typically used on enterprise application servers, among them Servlets to handle HTTP, JSP for HTML templates, and EJB as a component architecture. But unlike the Standard Edition, the reference implementation from Sun was only a proof of concept, and providing stable and performant implementations of Java EE was (at that time) left to the makers of already successful application servers such as IBM’s WebSphere and BEA WebLogic.
Completing the Standard and Enterprise editions of Java, the Mobile Edition released in 2000 represented for some years (until the advent of the iPhone and Android) the most significant platform for third party application development on mobile phones. Java ME was also an important source of revenue for Sun, as phone makers had to pay to license it.
Java had become so successful and firmly entrenced in the enterprise, helped by considerable performance improvements in every major release (especially the Hotspot technology released with Java 1.3 in 2000) that in 2002, Microsoft created .NET, a very similar but more Windows centric development platform, and made it the main focus of their corporate strategy.
But a bigger threat to Java was lack of innovation, and perhaps too strong a focus on features over ease of use. Among developers, it acquired a reputation for being cumbersome and inconvenient to use; the “XML hell” of XML-based configuration files that were heavily used by many technologies of this era (most prominently EJBs) was especially reviled. Other languages such as Python and Ruby became more popular among startups and for developers’ hobby projects, while more lightweight alternatives such as the Spring framework challenged Java EE.
It wasn’t until the release of Java SE 5 (in 2004) and Java EE 5 (in 2006) that Sun implemented some much needed and very useful convenience features and simplifications. Many considered it too little, too late for Java to ever again become fashionable, but meanwhile another development had gained momentum that might eventually seal the fate of the programming language Java while simultaneously making the Java platform more popular and successful than ever: alternative languages like Groovy (2003), Scala (2004), and Clojure (2007) which offer more modern and powerful language features than Java, but which are compiled to Java bytecode, run on the JVM and integreate seamlessly with existing Java code and each other.
Another offshot from “vanilla Java” that has become an enormous success is Google’s Android (first released in 2008), a smartphone OS running applications that are written in Java but run on a special, non-standard JVM.
A change of management
The next important development in Java’s history was the 2009 acquisition of its creator, Sun Microsystems, by Oracle who thereby gained control of Java as well. This created major concerns about the future of Java as a free and open platform; it was feared that Oracle could damage or destroy the ecosystem through attempts to monetize their IP. The 2010 patent lawsuit in which Oracle claimed infringement by the JVM used in Google’s Android was seen as confirmation of these fears. However, Oracle lost the case and there have been no other causes for concern so far. On the contrary, in 2011 Oracle completed the OpenJDK project (begun by Sun in 2006) and put its reference implementation of Java and the JVM under the open source GPL license, thus considerably reducing the possible extent of the feared monetization attempts.
Since then, Java version 7 (in 2011) and 8 (in 2014) have brought steady technological improvements. Among these the most important are probably the improved support for dynamically typed languages through the invokedynamic byte code, and for functional programming with the introduction of lambdas and streams which constitutes the biggest innovation on the language level since Java 5 ten years earlier.
Where we are now
All things considered, the Java platform is running as strong as ever and will undoubtably remain a major factor in the IT landscape for decades to come. It has gone through multiple cycles of hype and disaffection already, but persists thanks to a combination of technological and cultural merits. Among these, the main factors are:
- A high-performing managed memory runtime that is often called the most advanced in existence
- A platform evolution that is based on open standards and prioritizes downwards compatibility very highly
- Openness to alternative implementations, frameworks, and languages, and an environment where these can coexist
- Friendliness towards and easy access for new developers and new projects
Given all this, it is easy to be optimistic about the future and say from the depths of our developer hearts: Happy Birthday, Java!