Bill Venners, Artima's founder and president, was interviewed by Ted Neward at the 2006 JavaPolis conference. The video of the interview was recently made available online. In the interview, Venners focuses on a range of topics related to Java's evolution, including the question of how to evolve the language without adding more clutter to it:
The natural law of programming language design is that as time goes by, it becomes harder and harder to enhance the language, because as the language grows, there’s more stuff to be backwards compatible with. To what extent are people going to break backwards compatibility?
[Breaking backwards compatibility] costs money, and I don’t like that. I used an API [from an ISV]... and they cleaned up method names in a new API version, but didn’t deprecate the old methods... Those methods were just gone. So they broke code [that I wrote against that API]. It was painful, it cost money.
The Java community is so vast, and it’s such an important language in commerce, that it’s not easy to break backwards compatibility. Backwards compatibility is very important.
But there is a cost to not breaking it—which is added clutter. If you can just delete deprecated things, that makes the language smaller... Of if you could put
Cloneable. That would make things cleaner and more slick, but you can’t [do that].
So what can we do? I’m very heavily invested in the Java platform, and I’m going to stay there. But how can I do better?
I stumbled onto this language called Scala... Scala is completely incompatible with Java source code, but it’s compatible with Java class files. So that made me think: Should we keep Java stable so that it’s easier for other languages to proliferate? [Those languages] would have to map to existing features of Java, and not keep up with new features of Java, which may not be very easy. And [then we could] start using other languages...
What do you think of Venners' comments on the tension between adding new features to Java and keeping clutter in the language at bay? What is your prediction for the future of Java?