I’m looking at slides for essential Java 7 enhancements like the new File I/O capabilities and it is tough not to notice the date “Java One 2008”. Ugh. Java 7 has been stagnant for too long. The language has been in a semi-crisis for years. Meanwhile, there are legions of people shouting “Java is Dead” from the sidelines (all the while running Ruby on the JVM), and there is a huge audience of Java developers stuck in 2007. What people need to understand about the Java 7 JSR and the success of failure thereof is that Rose’s work on InvokeDynamic, the single biggest issue in JDK 7, affects a much larger audience than Java developers.
Forget the Project Jigsaw enhancements for the moment (it remains to be seen whether that will catch on), and ignore the Project Coin enhancements (even though they are important). Method handles and invokedynamic will have the biggest impact.
Java 7 -> invokedynamic, Java 8 -> magical closures
At a conference last week everyone kept talking about Java 8. Java 8 is something of a promised land for us Java developers. It represents a world in which lambda is baked into the language. Every time a speaker would say, “…and in Java 8 all of this will be much easier with Java 8”. I’m really interested in Java 8 happening some time before I retire, and for this happen, Java 7 needs to get out of the way. Clearly, there’s an expectation that Oracle is going to find a way to break the JCP log jam, and Rheinhold’s activity yesterday is likely the first move of many.
From what I can see, Java 7 is going to be released in mid-2011. It isn’t a question of process or voting any more. Oracle has convinced IBM and Apple to cooperate with OpenJDK, and I don’t think that there is anything the ASF could do at this point to prevent forward progress. While Apache has staked out a position, I just don’t see that they have any leverage. Unless something changes between now and then, I think the ASF will either have to compromise or drop out of the JCP.
What if the ASF dropped out? What then?
Maven, Ant, httpd, Tomcat: all of these projects form a foundation for most Java developers. These projects are not going away even if Apache decides to quit the JCP over the question of a TCK license for Harmony. What difference would it make if Apache dropped out of the JCP? Would VMWare or IBM people suddenly stop participating in expert groups? Or would they simply switch contexts?
Would the companies that use Apache httpd or Tomcat suddenly reconsider these choices if the ASF were to drop out of the JCP. Not a chance. Apache isn’t a political machine, the kind of developer that participates in the ASF isn’t motivated by activist politics in the same way that a participant in the FSF is. Instead they are motivated by an abstract idea that open source software shouldn’t come with restrictions on use.
If Apache dropped out of the JCP, I predict very little change. Individuals and companies associated with the ASF would still likely participate in the process. The ASF would no longer have access to TCKs for different specifications, and you would likely see some of these projects just spin themselves out as separate entities. There will be some fireworks for a week or so, maybe people will talk of a “boycott”, but ASF developers are not the kind of people to be moved by collective appeals to action. The net effect of Apache dropping out would be that a few Java projects might decide to move elsewhere.
The big question here is, would this be a bad thing? Would it be such a bad thing if, instead of operating under the auspices of the ASF, more open source Java projects just decided to set up shop as independent projects on GitHub?
I understand the minute details of the original fight over the TCK license, I respect the idea of fighting for freedom, but I also think that Java needs momentum…. yesterday. The ASF is great. Great projects, great people. But, I just don’t see this fight as being the defining fight for the community.