Just months after celebrating Java’s 20th birthday (and the qualities that made it the most used mainstream programming language), the programming world is abuzz with rumors that Java is doomed. In September, it was widely reported that Oracle had laid off a significant number of its Java evangelism team, and then, in October, InfoWorld ran a gloomy article about an e-mail from a “former high-ranking Java official,” with the subject line “Java’s planned obsolescence.”
The claim is that Oracle, which took over Java when it bought Sun Microsystems in 2010, has been a bad steward of the language and, with typical Ellisonian ruthlessness, is abandoning Java while it reinvents itself as a cloud computing business. Sigh. This is just par for the course for Oracle, whose developer relations have always been defined by something in between neglect and contempt.
(Related: Java turns 20)
Oracle has always emphasized sales relationships with executives and managers over the opinion of developers, and it has a long history of producing buzzword-laden initiatives and pie-in-the-sky promises. Oracle has a reputation for abandoning unprofitable or redundant product lines, but it’s these new projects—not proven technologies—that Oracle has a history of giving up on. While this is guaranteed to lead to dissatisfaction among elements of the technical rank-and-file, it’s worked out fine for Oracle’s bottom-line.
To be fair, Oracle itself is somewhat responsible for talk about Java’s declining prospects. According to Oracle, Google’s use of Java in Android has “destroyed Java’s fundamental value proposition as a potential mobile device operating system.” This claim comes from Oracle’s lawsuit against Google, which has been ongoing since about five minutes after Oracle acquired Sun.
When Google first released Android in 2007, Sun was delighted. But it apparently never “specifically and affirmatively” granted permission for Google to use Java and its libraries in Android. Oracle bought Sun, but six months later negotiations broke down, and Oracle sued Google.
Ultimately, a U.S. District Court found “Google’s equitable defenses rest primarily on a November 2007 blog post by Sun’s CEO congratulating Google on the release of Android, as well as similar positive statements by Sun executives thereafter. Congratulatory statements do not fall under the narrow circumstances proscribed by our court of appeals.” Like every other techie, I start from the presumption that the company suing for infringement is the bad guy, but a multi-hundred-billion dollar company pointing to a blog post as its justification is pretty pathetic.
While the truth of the lawsuit is the desire to extract rent from Google for using Java on phones, the legal battle centers on whether Google has performed copyright infringement on the Java API. From a developer’s perspective, it seems clear that APIs should not be covered under copyright. Even if one believes, as I do, that the law should give creative people an incentive to invent, a group of function signatures should not be protected the same way a novel is protected. APIs are not experienced and put on the shelf to be periodically revisited; their value is entirely dependent on implementation in a fast-changing environment. If anything, APIs should be protected with something closer to patents. (Yes, I understand that patent law is even more screwed up and subverted from its original intent than copyright law. And I am not a lawyer, so please do not sue me if it turns out that copyright law is worse.)
In 2012, Google (essentially) won, but Oracle won a partial appeal in 2014. It is the nature of lawsuits to drag on, and it is the nature of lawyers to use dire language to describe damages. Thus, we have people from Oracle offering the previous hyperbolic statement about Java’s value, apparently as part of an effort to extend the lawsuit.
A lot of online comment about the “destroyed value” statement pretended that it wasn’t limited to the absurd scenario of a highly profitable, Java-based, Oracle-produced mobile operating system. So, instead of eye-rolling at lawyer-driven hyperbole, we have hand-wringing about buzzword-driven technical abandonment.
Java is, for better or worse, the legacy enterprise language. There are millions of Java programmers, all around the world, and there is a broad distribution of ability. There are many brilliant programmers who work in Java. There are many people who ought not to be in the business who work in Java. There are great codebases written in Java. There are bad codebases written in Java. Java is now owned by a company that markets and responds to the concerns of executives and risk-averse department heads, not to entrepreneurs hammering out their business plans over coffees at the San Francisco Ferry Building. Of course Oracle is going to undersell the power of “plain old” Java and push the use of Oracle’s higher-level, enterprise-focused tools, infrastructure, and consulting services.
Is this the same as “planned obsolescence”? I don’t think so. Although I’ve heard rumors of a new direction in terms of the Java Community Process (which in my opinion desperately needs an overhaul), Java is probably going to remain one of the slower-evolving mainstream languages. It’s certainly not going to leapfrog, say, Swift in terms of language features. There’s simply not the same pressure for dramatic change in the Java community as there was in the Apple-centric Objective-C community: The JVM already hosts several powerful emerging programming languages, and Java, while long in the tooth, has vast educational, support, and infrastructure resources. For Oracle’s bread-and-butter customers, slow-and-steady evolution of the core language is exactly what they want.
By the time you read this, JavaOne will have occurred and Oracle will have made a number of reassuring announcements about the language and tools. Perhaps this year or next it will release new higher-level tools that work with legacy Java codebases and promise greater productivity and ease than ever. Perhaps they’ll be great, perhaps (as is generally the case with high-level programming tools) they will deliver less than they promise while introducing complexity and cost.
What I’m sure of, though, is that Java will continue to be supported and updated. And that the lawyers will continue to get paid.