Our Thinking

A State of the Java Union

Posted by Dave Gillies on Oct 3, 2011 3:00:21 AM

First, Oracle took over Sun. Now, a new version of Java is in the wild and another is being developed. The language has gone Open Source with OpenJDK. Oracle has a lawsuit against Google pending, and the Apache Software Foundation has resigned from the Java SE/EE Executive Committee. Virtual Machine (VM) language support and usage trends beyond Java itself are at an all-time high and climbing. What does it all mean for the future of the Java ecosystem?

First - The Buyout

In April 2009, Sun announced its sale to Oracle for approximately $7.4 billion. This came hot on the heels of a failed attempt by IBM to come to a takeover agreement and was a surprise to many as IBM had been an ardent Java supporter and active in the community. By August, the US government had approved the deal after clearing antitrust legislation and in January 2010, the European Union also approved the deal.

Next - The Fallout

The Oracle takeover triggered dramatic events. The immediate repercussions included a major changing of the guard. Many notable Sun engineers and executives resigned, including the father of Java himself, James Gosling and President and CEO Jonathan Schwartz, notifying the world by tweeting a Haiku.

With Oracle executives in charge, the Java developer community pointed to Oracle’s reputation for sacrifice at the altar of the bottom line and vocally pronounced a Java death watch. A series of controversial events soon took place that seemed to cement this mindset. The OpenSolaris project was ended in fall 2010 to focus on the commercial Solaris 11 release and future commercial versions. MySQL, a previous Sun acquisition and an Oracle database competitor, was widely speculated to be the real driver for the takeover and its quick death was predicted. Pundits pointed to low-end support prices tripling as a sign of things to come. The OpenOffice project, to which Oracle bought certain rights but not the code, was taken over and commercialized, leading the Document Foundation team to fork a new LibreOffice product to maintain full control. At the end of 2010, the Hudson continuous integration server team found themselves losing the name Hudson to Oracle ownership, prompting the founder to continue the project under the Jenkins name. In February 2011, Oracle indicated that they intended to continue improving Hudson. In a sort of stalemate, both projects consider the other to be a fork. In short, there was turmoil. 

Later developments have tempered the initial sting. Oracle has not killed MySQL, and has in fact continued to support and enhance it. Oracle reversed its earlier OpenOffice decision, saying it would hand it back to the open source community. In June 2011, the Apache Software Foundation took over management for OpenOffice. Recently, Oracle submitted a proposal that would see Hudson become part of the Eclipse Foundation project, giving it back to open source, but further confusing the issue. These events have given observers hope. 

While the open source community churned, Java platform changes were mostly stalled in discussions amongst members of the Java Community Process (JCP). Some background is required to understand the discussion. The JCP is comprised of companies and individuals interested in advancing the language and platform. Members submit proposals (JSRs) for new features that are then specified by experts for public review. Apache, IBM and Oracle all play key roles on the JCP Executive Committee (EC), selecting JSRs for development, then approving draft and eventually final specifications, Release Implementations (RI) and Technology Compatibility Kits (TCK). 

So, what was going on in EC meetings? Apache had created the Harmony project, focused on creating an independent, compatible implementation of Java SE. The bone of contention at meetings centered on Oracle’s licensing terms for the TCK - a test framework used to demonstrate compatibility and therefore be granted IP rights. Oracle’s license restricted distribution of independent open source implementations of the specification. 

In frustration, the Apache Software Foundation resigned from the Java SE/EE Executive Committee, citing a lack of openness and Oracle’s failure to uphold the Java Specification Participation Agreement. Apache has been a long time Java advocate, provider of nearly 100 Java components and implementations, and is very well respected by the developer community. This decision confirmed for many developers what they had always believed: Oracle was killing Java - if not by deliberate action, then out of profound neglect or greed. 

Finally, Oracle sued Google over its use of the Java language in its Dalvik VM that powers the Android OS. Oracle claimed not only that Google could not use or distribute Dalvik, having never released a TCK to Google for Java, but also that Google has materially contributed to infringement by encouraging others to copy and distribute what could be considered derivative works! A recent development in September 2011 is that court filings show that both parties have agreed to settlement talks with the intent of resolving the patent and copyright case before it heads to jury. 

The Ecosystem 

So, by now you are probably thinking that the politics are pretty grim. But, there is another - positive - side to the story. The ecosystem is in fact thriving in many ways. First let's talk about the Java language. Java 7 is out, with great new features such as support of dynamically-typed languages, improvements to switch statements, try blocks, type inference, varargs, literals and exception handling. Concurrency and collections classes have been updated, classloaders improved, I/O augmented and performance enhancements added. Work on Java 8 has also been underway for some time and is destined for release in late 2012, promising to bring with it features that developers have been clamoring for - closures, type annotations, and new modularization options. 

There is more to Java than just the language. The VM currently supports eight languages. Groovy, Clojure, and Scala are all on a strong uptick - mind share, blog posts and job trends show incredibly high growth.

 JavaFX2 is coming in late 2011. Where JavaFX was a flop as a Rich Internet Application delivery platform, JavaFX2 looks to learn from its mistakes and developers are feeling cautious optimism. It will be pure Java, and launched like any other Java app, and providing Java language features that developers are accustomed to. It promises to integrate easily with Java server and client code. It promises to be friendly to the alternative JVM languages discussed above. Better hardware acceleration, a new web component for embedding HTML, an improved browser plug-in and a much more rich set of sample applications are also being provided.

JRuby and Jython let businesses leverage their VM infrastructure while allowing developers to work in the popular Ruby and Python languages. Rhino is a fast and stable Java implementation of JavaScript that allows developers to leverage JavaScript knowledge and features on the backend. Finally, AspectJ is the de-facto standard language for Aspect-Oriented Programming (AOP). Using a Java-like syntax, it allows for source or bytecode weaving or direct VM manipulation and is a widely used as an enabling technology for many projects, most notably the Spring framework.

The Future

So where does that leave Java? It has been said “Languages don't die - they just lose momentum.” Is that what's happening here? I think so. The TIOBE Programming Community Index tracks the emergence, adoption and decline of languages based on the number of skilled engineers, courses and third party vendors, boiling it all down to a number expressed as a normalized percentage. It shows that 10 years ago, Java was rated at 27% and is now at 18.8%.

Tiobe Programming Community Index

So, Java has lost its tremendous lead and has certainly declined in the face of the growing and improving competition, but the numbers show some other interesting trends. Java still leads the C language by a moderate margin and all the other languages are still significantly behind. Java has shown a 1.4% improvement on this scale in the August 2010 to August 2011 time span. For comparison sake, C# sits at 6%, showing 1% absolute growth and Objective C is at 5.5%, showing 2.3% absolute growth. These examples represent the only other gaining languages in the top 10 and significantly larger growth than any other gainers in the top 20.

On the evidence then, I believe that people who state “Java is Dead” aren’t using the latest tools. The language continues to evolve for the better. The VM continues to improve and language support continues to grow. Developer mindshare on the core Java language is in relative and moderate decline, but some of that is accounted for by developers moving into other VM languages that are experiencing strong growth in popularity, maturity and mindshare.

I also believe that there are significant challenges to overcome. Will the language improvements that were promised in Java 7 make their way into Java 8, and will they appease developers? Will Oracle ever truly embrace the open source ideology that has come to be the lifeblood of the Java ecosystem? Will the new VM languages continue to grow in popularity or reach a critical mass the way that Java has? The next few years will be a critical time for Oracle and the Java community. Stay tuned! 

References

Topics: Languages

Our Thinking - The Online Blog is a source for insights, resources, best practices, and other useful content from our multi-disciplinary team of Onliners.

Subscribe to Blog Updates

Recent Posts