The State of Java: TIOBE Versus JavaOne 2011
My previous post (Is Java Really Losing Popularity Among Developers?) elicited a voluminous and varied response, particularly on reddit (489 comments as I write this), and also in the comments posted on the blog itself. In this post I'll touch on a few of the comments, talk a bit more about what TIOBE plots might actually mean, and return to JavaOne 2011 (which I think has great significance as an indicator of Java's and the JVM's future).
The TIOBE Index: what does it really mean?
Several of the commenters on reddit slammed the TIOBE index and my use of it -- for example, petdance's "TIOBE does not measure anything meaningful" and Taladar's "Anyone citing [TIOBE] and in this case even claiming they recommend making important business decisions based on TIOBE to their clients immediately loses all credibility to me."
But clearly, there is some type of correspondance between the TIOBE index chart for a language and how broadly that language is utilized for software development. I mean, if we had an actual accurate measure of usage of programming languages (number of developer hours spent working in each language in the past month, for example), and we performed a regression test between those values and the TIOBE index values for the languages, there would be a positive and significant statistical correlation.
I think the problem isn't so much what the TIOBE index is (they're quite open about this -- there is no secret as to how their index values are computed); rather, the big problem is in the ranking of different langauges based on the TIOBE index values. As Taladar says:
TIOBE is based mostly on data that correlates much better with the amount of help people need with a language than with the actual popularity of the language (e.g. Google searches). It also does not take into account the relative ease or difficulty to automatically detect the various languages and/or their names.
This is actually a pretty good statement of one of my reasons for writing my post -- which was composed largely in response to Paul Krill's InfoWorld article Survey: Java losing popularity among developers, subtitled "If recent trends continue, C could supplant Java as the most popular programming language by next month." (See TIOBE's October 2011 plot below.)
I think it's almost certain that the TIOBE index values, especially for the very popular languages, are positively correlated with the actual usage of those languages. But I don't think it's reasonable to say that a particular major language (C) is about to surpass another major language (Java) in "popularity" based on the TIOBE index.
Does this mean the TIOBE index is completely useless? I don't think so. If you look at the historic values for an individual language, the trend of that line contains some information that could indeed be of use if you're trying to select a new language as an enduring platform for a client who needs to convert an application written in a now-obsolete language. It's just a single data point, of course, and wouldn't be the deciding factor over broader considerations like the suitability of the language for the application, etc. TIOBE's data has an error bar, certainly (and we don't know what it is, from language to language). But what measure doesn't have an error bar when you're selecting a new language for a client? Who can perfectly read the future?
Significance of JavaOne 2011
I have long planned to write a blog series about the significance of JavaOne 2011. This conversation (is Java's popularity declining?) is a good place to start. "Dying" and "dead" are popular words whenever Java's future is discussed. Sun's decline, its acquistion by a fabulously successful (financially) company that is focused on the corporate boardroom and conversations with CTOs (not developers), inevitably produced concern over Java's future. Some technologies do just die, or become like COBOL (huge working code base, so it can't ever entirely disappear), or ... there were lots of possibilities for Java, many of them bad.
I think what's actually happening is a turnaround, a sudden lurch in a positive direction, and this lurch is exemplified by JavaOne 2011. The JavaOne 2011 attendance was about double the JavaOne 2010 attendance (from what I heard). The 2011 attendance is still probably less than 40% that of the most popular mid-2000s JavaOnes; but the direction is right, now. And the volume of energy and excitement were also very positive at JavaOne 2011.
The State of Java (very short version)
Java is no longer stagnant. It is moving ahead in many different directions. There is a plan. The plan is going to be executed. That's something that was lacking in the final Sun years. There were various plans, but would they be executed? Could they possibly be executed while Sun was still the primary Java steward? With Oracle as chief Java steward, we know the plan will indeed be executed. Java 8 will be released in 2 years, with libraries fully upgraded to support Lambda expressions and facilitate development of Java/JVM applications that efficiently utilize 4/8/16+ core processors. JavaFX 3.0 will be write-once/run-anywhere including Mac and Linux, not just Windows. The Java ME / embedded mishmash will be refined/reengineered into something that makes sense. Java EE 7 will be ready for operation in/as a cloud, once "the cloud" congeals into something definable.
There's much more that can be said. I'll do that in my future series on JavaOne 2011 and the state of Java and the JVM and the broader Java community.
- Tushar Joshi, Concentrating on Task in Hand (similar to Mylyn) in NetBeans IDE;
- Brian O'Neill, Virgil: a GUI and REST layer for Cassandra;
- Brian O'Neill, Virgil gets a command-line interface (virgil-cli); and
- Otavio Santana, Moving o java forward part 4- JSR 166y: concurrent Package
Our current java.net poll asks What interests you about JavaFX 2.0 and its future?. Voting will be open until Friday, October 28.
Here are the stories we've recently featured in our Java news section:
- Shai Almog talks about Places Demo & The Graphics Designer BoF;
- Patrick Curran discusses candidates in A crowded field;
- Brian Goetz presents Language designer's notebook: Package deals;
- Markus Eisele interviews The Heroes of Java: Cay Horstmann;
- Heather Van Cura announces JSR updates;
- Masoud Kalali presents My thoughts on JSR 351, Java Identity API;
- Heather Van Cura announces Meet the JCP EC Candidates Recording Available Now;
- Richard Bair experiments with FXML + Guice; and
- John O'Conner explains Unicode Terminology.
Our latest java.net href="http://www.java.net/archive/spotlight">Spotlight is Janice J. Heiss' The Developer Insight Series, Part 6: Perspectives on Garbage Collection:
Three leading Java developers, Ron Goldman, Tony Printezis, and Kirk Pepperdine, share their insights about garbage collection. Part of the Developer Insight Series...
Our previous Spotlight was Antonio Goncalves' O Java EE 6 Application Servers, Where Art Thou?:
Nearly two years ago (time flies), when Java EE 6 came out, I wrote a post about application servers where I did some micro benchmarking (basically, startup time). I had plenty of comments and recently I had many people asking for some updates. Witht Java EE 6 booming, with some cloud vendors moving to Java EE 6, it was time to update this microbenchmark and focus on Java EE 6 application servers...
Subscriptions and Archives: You can subscribe to this blog using the java.net Editor's Blog Feed. You can also subscribe to the Java Today RSS feed and the java.net blogs feed. You can find historical archives of what has appeared the front page of java.net in the java.net home page archive.