I recently read Scott Leberknight’s “Can Java Be Saved?” with interest and started typing up a response. As Scott’s article was a bit lengthy, so became the comments I had in response. In excess of 1000 characters, which JRoller told me was spam when I finally tried to post it. I’m still never surprised to see that happen to my writing. Anyway, I’m probably just an oaf, but I didn’t see Scott’s e-mail listed anywhere on his site (probably another spam-deterrent choice) so I thought since I spent more than a few minutes on it, it’d be appropriate enough to post here and link it. Sorry but I don’t have the energy to evolve this into a more formal post, perhaps I will at a later date.

A Newardian post deserves a Newardian reply! I really do like your suggestions for language additions. But those kind of additions are going to be happening in the context of the JCP, and that’s its own can of worms. I think you can directly attribute people’s despise for Java, or maybe more aptly, their enthusiasm for new languages, to the difficulty involved in making language changes to Java. Regardless, there is still freshness to the innovation in the Java world. People are just looking for it in the wrong place. Certainly, the virtual machine ecosystem is alive and well, as you point out. But in terms of innovation within Java, it’s happening in the programming model, not the language. Some of Spring, Guice, and CDI’s enhancements to the programming model are novel ways of evolving Java given the restrictive “all things to everyone”, bureaucratic nature of language changes at this stage of the game.

Here are a few examples of programming model innovation. The native property syntax reminds me of another recent blog entry by Gavin King. Sure, it’s a bit more verbose, and lacks the punch of a native language feature. But is it that much different? Also, do I really need type inference? I see it as easier to read and more powerful to leave the variable declaration and remove the duplication by nixing the call to the constructor, and annotating a producer method. It also gets rid of the new keyword, which was your next item on the list. Again, this is a programming model enhancement that’s independently evolved and proven itself.

I think there is still a lot of room for evolution, and a lot of work being done. As you point out, the 800 lb gorilla seems to be continued by-in and enthusiasm from vendors – but most if not all of the real innovation that is occurring in the community is through open source software. It’s interesting how you have a rift in the open source space, in how, e.g. the Spring and the Seam teams have approached developing open source, and the willingness to reintroduce innovations to the JCP. Is the JCP to be used as a springboard for adoption, or a roundtable to resolve pain points everyone is feeling? Its days as a think-tank for ivory tower specs are gone. The fate of Java is not yet sealed, but I think in terms of the language, we’re only really going to see problems that everyone feels are painful get pushed through diplomatically. But that’s not to say that there are programming model enhancements that can be pushed for adoption. Vendors seem to be more open to evolving the programming model than the language at this point, if someone is willing to baby a spec through the process.

I certainly welcome any of your thoughts on this. Thanks for the interesting article.

More Related Content