Java’s future will be constrained by the bounds of Oracle's business model.

Drama has been running high since Oracle began to shape up the Java technology it acquired along with Sun Microsystems. Oracle ended the impasse over a new core Java release, set out a road map for the next two years, and began reorganizing Java's ineffectual governance. Oracle's Java road map and commitment to invest reassured enterprise customers and prevented a split with IBM but alienated many in the open source community. But Oracle's plans so far fail to address Java platforms' inherent complexity, which remains Java's Achilles' heel in head-to-head competition with Microsoft's.NET platform. Moreover, a controlled, top-down innovation model will limit Java's role as the basis for the "cloud" generation of platforms, rich Internet applications, and new development techniques ranging from languages such as Ruby to approaches such as business process management (BPM) and business rules. Conclusion: Java's future in the enterprise is alive and well but limited.

Oracle’s strategy for Java will change the Java ecosystem that has existed for 11 years.

Oracle will direct Java innovation. Oracle has made it clear that from this point forward, it will direct all innovation in core Java (Java SE). Oracle will happily accept the contributions of others through OpenJDK as long as those contributions align with Oracle's priorities.

OpenJDK is not fully open. OpenJDK is covered by a General Public License (GPL), and though it's certainly true that there are alternative JVM implementations and derivatives out there, OpenJDK is not open in spirit: It's practically impossible to distribute an alternative implementation without Oracle's sanction — specifically without a grant of the Java TCK. Losing The Apache Software Foundation as a supporter also hurts Oracle's credibility as a partner with the Java alpha geeks who drive so much independent and discontinuous Java innovation. Those developers will take their energy elsewhere, probably to Apache projects.

The JCP is dying. The Java Community Process remains in place, but we believe that Oracle will formulate an alternative that ends the fiction of JCP as an open process and streamlines the process of Java platform evolution. The result will be total domination of Java's evolution by Oracle and IBM.

Competition will shift to frameworks. With Oracle directing innovation at Java's core, others in the Java ecosystem will focus on higher-level frameworks. This shift began years ago, but we now expect it to intensify. We expect most of the work on frameworks to focus on the enterprise, as that is clearly Oracle and its core partners' focus with Java.

Fewer young developers will learn Java first. One of Java's greatest strengths has been the number of young developers who learn it as a first language. As Java becomes less and less of a client-side language, we expect to see educational institutions switch to other languages for primary education, ones with stronger client-side representation such as JavaScript and HTML 5. Over time, developers will begin to view Java as a server-side language for enterprises — like COBOL.

These ecosystem changes will have minimal immediate impact on customers. Java SE 7 and 8 will move forward, driven by the strong consensus among Oracle's partners about the content of those releases. Customers will see predictable and stable enhancements of enterprise Java middleware. But Oracle and its close Java partners are in a classic "innovator's dilemma." It may take a decade, but the bottom-up innovation the open source community drives will find expression elsewhere, and smaller companies that Java's high-end capabilities do not serve well will gravitate toward a new "good enough" open platform — likely based on a combination of LAMP and HTML 5 open standards.

Jeffrey Hammond and I collaborated on this research. See the full report at this link.

Comments

Java has become a success story for 10 years way before it became open source three years+ ago.

It didn´t became successful just for being "open" (which it is now) but because it delivers on the promise of cross-platform compatibility.

It´s funny that you say that Java as a client tech will lose momentum when hundreds of thousands, if not millions of people use desktop Java software on a daily basis, like Vuze and jDownloader.

Every one of your "points" is nothing more than repetition of what many "pundits" have been saying for the last year, and every of their doom and gloom predictions has turned being wrong: Oracle didn´t kill OpenOffice.org, Oracle didn´t kill MySQL, Oracle is investing in all these along with Glassfish, Virtualbox and almost every other open source project from Sun, with the obvious exception of Opensolaris.

Oh, one last thing: Who uses Apache´s Java? no one. H*ck, after Java SE 6.0, even IBM´s JDK became irrelevant.

Java is thriving and is not "complex" Java EE is complex, it needs to be tu run mission-critical systems. Java SE can be as easy as you want. People can run common scripting languages on top of Java like Jython (Python on Java), JRuby (Ruby on Java), NetRexx and others.

Java is much more than a programming language: it´s a runtime environment and you can use Java without actually writing Java.

Thanks, Fernando, for your comments. I hope you had a chance to read the full report rather than just the blog. I don't think it is fair to say we are preaching either doom and gloom or the death of Java, as you suggested in your Tweet. We agree on many things, but we disagree on two points. First, on the question of Java on the client. We see a trend away from Java. Second, on the complexity of the average Java platform stack. We hear about this issue from clients all the time. I'd love to know what you and your shop are doing to keep complexity down.

1. Although Java was conceived as a "client-side language", that has never been its core strength. Few people use applets; Java FX never took off; the fact is Java has always been used mostly on the server-side for enterprise apps. Think Servlets, JSPs, EJBs on WebSphere, WebLogic, JBoss, Tomcat but also on Spring, usually paired up with Oracle or similar RDBMS.

3. Sun were never really serious about the JCP. Java (including EE) is mostly developed by Sun. That said, the open-source community contributed substantially by providing software and frameworks such as Tomcat, JBoss, Spring, Struts, Eclipse, etc. which made development much easier, which in turn resulted in much wider adoption. But innovation in the core language and platform standards have always been driven by Sun/Oracle, just as the .NET has been driven by Microsoft

4. As far as competition from LAMP. LAMP=Linux, Apache, mysql, PHP|perl|Python. How can an OS like Linux, a web server like Apache and a RDBMS like mysql compete with a programming language/enterprise app platform such as Java? PHP, perl - nice and very powerfull but not even close to providing enterprise features.

5.The only serious contender is .NET and Python could be one in the near future. .NET is easier to learn and use but is less robust and confines you to Windows. Yes, Fortune 500 companies use both .NET and Java, but typically for different purposes - .NET mostly for departmental solutions, Java mostly for mission-critical applications; although there are exceptions.

I disagree. My country boasts a great university, but in truth, it sucks. University graduates are useless to the industry, they need re-training.

Teaching the basics of programming is the university's duty. What's the point of having graduates that are told they'll have a 10k/mo after they finish their course when in fact the industry can't do shit with them?

The Java vs. .NET competition is alive and well. Most large organizations have both environments. Our latest survey indicates that many more are choosing .NET than in past years -- for a variety of reasons including complexity, product cost, ISV requirements, time to market.

Think of a company of few thousand employees and 50 ITC staff.
What is their OS? Windows.
What is their business software? MS Office, of cause (just look how ugly any OO document looks in comparison)
And then, you need Web portals - Share Point of cause: it is design to work with Office. And with SQL Server. Which works with ASP.NET, and with MS BI and reporting tools. Which export data as Excel spreadsheets. Which are part of the Office...
In brief, MS stack gives a company the complete package.
How, where do we fit any Java into this? To put on some back-end server, and spend few millions a years to maintain integration with front-end systems?

What you say may be true for the client side, (as long as you are in desktop development) - but it is completely irrelevant for server side. Database, web service, naming directory interfaces are all simple to talk to from either Java or .NET. This is why the majority of banks run on Java backends.

Portals are moot, because they should be operating on industry standard interfaces anyway - SOAP, WS-Security etc

Once you get to the server side, Java/Apache/Linux is not going to be replaced with .NET, especially if you want to run on decent hardware.

The MS Stack is file-based. Sharepoint? Show me a good Sharepoint installation. Word? It still has trouble doing simple labels with custom dimensions. Whenever I have a formatting headache in Word, I load Portable OO from Flash Stick to fix it and print and save time.

I think you are making a leap that is unwarranted. We did not say specifically say CS curricula would change.

For most kids now, exposure to programming languages starts WAY before college and increasingly outside of classic CS curricula. In many cases it starts in extracurricular activities like USFIRST.org (which uses Java, C, or LabView) or with dedicated enrichment prgrams. Even on our high school's FIRST team, they are also running Websites, forums, and CMS systems (none of those using Java). By the time CS-101 rolls around many kids today already know about git, Drupal, and yes, even Objective-C, HTML and Javascript.

"Oh, one last thing: Who uses Apache´s Java? no one. H*ck, after Java SE 6.0, even IBM´s JDK became irrelevant."
-> Hum, Google Android?
you should be right, so insignificant, just the largest smart-phone market-share...

I was talking about DESKTOP java, not Mobile, Java. Jave SE and Java ME are different things. IBM in turn grossly mismanaged its IBM J9, dropping support for Palm devices, and tell me which versions of J9 can an end-user download right now.

IBM´s Java VM on the desktop is insignificant, most people that needs java downloads and uses the official one from Java.com

I think John has some valid points. It's a shame you need to buy his research paper though :(

It's amazing how many people on this message board are getting emotional, almost as if Java is their child. Relax guys, so what if Java is losing popularity? Have you seen how advanced C# has become lately? It really does crap all over Java. C# has 120 keywords as counting and offers much more flexibility than stale old Java. Heck, the Java SDK still doesn't even support multicore programming, or a LINQ type language feature.

I think Java is on it's way out. In a few years it will be like one of those legacy programming languages like COBOL. As Java programmers transition from their 30's and 40's and that stubborn attitude sets in, they'll be exactly like those 60 year old COBOL programmers you see today who still like to tell me "COBOL is so much better than anything out there today because 'it just works'".

We expected the insults to fly after publishing our report. Java is indeed a techno-religion. We tried in the report to be dispassionate. My big concern is that people will react to the blog rather than the full report. Such is life on the Internet alas. Jeffrey and I are happy to listen to all views, no matter how extreme, and try to learn from them.

I find your comment about Java being a religion insulting. I am a software engineer with three decades development experience. I like and use a lot of languages. My opinion is that java hating is much more of a religion that liking Java. Java is anything but cool. Liking Java is just about liking getting work done.

If you must compare Java to something, try Scala or Clojure, both of which pride themselves on doing more and being more flexible with *fewer* keywords baked into the language. Now *that's* progress...

I hardly think that having more keywords makes C# better than Java. C# has done some interesting things recently, but I prefer the Java ecosystem over .NET. I work at a non-profit and Java resonates better with the Open Source, collaborative world. I like choice and I like openness. Neither is a feature of .NET. In fact, the company I work for is dumping it's Microsoft tech and moving towards an all Java stack. Quite the opposite of the blogger's opinion.

@Fernando Cassia, you were spot on, since 2003 ( when i was introduced to Java ), i ve been hearing these sort of comments like Java is dead, php surpass java, .NET gaining , Scala the new java so and so.. Its quite natural to lose share when a new one arrives, but its applicable to all these languages, now with a hell lot of new languages, no one is going to gain a consistent share.. its applicable to Java, .net, scala or what ever..Luckily java has already gained a big share.. will lose some for sure, but we can never say, it will be displaced, it holds true for all emerging languages!

All languages run their cycles -- some have very long cycles. One of my questions is whether or not the cycles are getting shorter. Ruby on Rails grew so much faster than most earlier languages, and I wonder if its down cycle will also come more quickly than other languages.

Ruby garnered a lot of hype very quickly but the Tiobe language index and projects on Source forge show it barely rates. The trouble is, it's a one trick pony. If rails is what you need, then ruby on rails is just the ticket. But programming is about more than just quickly building a web page.

The one saving grace for java is possibly Android. Enough to save it ?
Maybe not with c# cross platform ports and native C++ it makes a tempting alternative to java.
If c# goes onto iPhone as well, then c# may win.

All I want is a write once use anywhere (ok with minor tweaks), guess it may never happen.....

Thanks for sharing, am not sure on how the "Open" is going to be real in the near future , the fact that most of the vendors have build their tools on the Java Platform there is no choice but for collaborating with Sun ~ Oracle to get their tools moving until there is a genesis or transition to a new language and another Sun rising in the east..

If these points were not valid, they wouldn't attract such degree of emotional repercussion. Just admit it boys (and girls) Oracle is killing it. As a matter of fact, it's life after all, it was born, it grew and it is going to die.

For the 9th time: Java is BOTH a programming language and a SOFTWARE PLATFORM. You don´t need to code in Java to run Java. You can code in Jython and run Java. You can code in NetRexx and run Java.

C# might be wonderful but is only a PROGRAMMING LANGUAGE. It´s software platform is Microsoft´s .Net, which outside of Windows, doesn´t really exist, unless you take into account Novell´s "Mono" which is not controlled by Novell, but always playing catch-up with Microsoft´s specification.

If my program is Java (Java bytecode) I can run it effortlessly on Mac-Windows-Linux. Good luck trying the same with all the differences between Mono and .Net

Except I have took 3 of my winforms, and 2 .net web applications, and with just modest UI changes, ran them on Iphone, Android, and WP7. The core logic and back end code all stay the same, just had to rewrite my presentation model, and since I use n-tier structure for years, it was really simple and easy to do. So yeah say what you want but Mono is picking up speed, and power, with .net having tons of capabilities and driving nearly all of MS development, the push by MS to have Mono take off, and the fact this week alone Mono did what it claims to do does put a hurt on Java. And as you said / stated Java is a client service. It's nothing more than a browser plug-in that happens to just load on the OS instead of a browser. The only upside with Java is it went open source a few years ago and got support from numerous developers to bring it to all the platforms. The reason people are worried about Java is easily seen in the Oracle vs Google fight, where Oracle says Google violated terms. I don't know the full details but lets put it this way either Google is just a whipping boy for Oracle or Oracle is not going to let any "re-write" of java exists that they don't fully control. Both are why people are worried about Oracles ownership of it. The last nail in java's coffin is the fact its client based, meaning it's not supportive of life on the web. It's missing key pieces it needs to really handle web development, and with so many other technologies providing more for less effort, there is less and less desire to program in java. It was one thing when you wanted a piece of software to run on mac, linux, windows, to have it written in java. However nowadays and even more so in the future, everything runs in the browser and any real code is ran on servers, and is usually custom written for a particular server structure for max performance. For example our new call switch, has 2 linux servers, and 3 MS servers. Each have a specialized task they manage and each are built to provide max efficiency. The end user's machine doesn't matter one bit cause all interaction is through the web page based pages. Doesn't matter if its Mac, Linux, MS if it can run a browser the user is good to go. Add on that any variation to the code base from Oracles standards lands you in court or under scruity from Oracle. All just means a dead product. If java was truely free rein do what you want style open source, I could see it surviving. Oracle however won't let that happen.

It's not useful for the fact that it's so inconsistent (especially the left overs), that it's dead before even having seen the light.

Developers want functionality, not half-a-million kinds of elements which do the exact same damn thing (except for the fact that they have a different name).

For example, font, span, p, and div could have been made into one element (granted, I'd make it two for the sake of block vs inline).

Then, there's the mandatory attributes which no one has actually used since the days when netscape was the major player. Oh, and how about the change of tables on strong/b and em/i?

Finally, there's the best two features; video and canvas tags, where the earlier will be just as bad as embedding movie players / flash and the later feature simply opens the browsers to a yet new era of bugs, incompatibilities and what not - all the while developers are struggling to bridge different incompatible browsers/platform together.

I remember the first time I did a web page, several years ago. I was happy about the design till I realized it worked on a specific screen resolution as well as browser - think something changed? Of course - even less compatibility, with the advent of mobile platforms.

As a (half-seasoned) web developer, my primary thought to this all? Bullshit.