James Gosling responds to all those who took him to task on his previous comments. And in response he makes some strong, compelling arguments. I just don’t understand what he’s arguing for.
That PostScript is not a good language for writing interactive shoot’em’up games? I think we sensed that. That by inference Perl and Ruby and Python are not good languages for writing Doom VI? I think we came to terms with that. That Java is a great multi-purpose programming language? No doubt.
Java is great, don’t let anyone tell you otherwise. But what makes it so great, and Gosling is great at capturing that, is also it’s Achilles heel.
If I’m building a help-desk service, a yet-another photo sharing site, or a financial application, I only need to worry about one thing. The application I’m developing. It doesn’t help me that the language can do games and interplanetary navigation. In fact, I’d rather it didn’t.
A language that does interactive games needs a lot of optimizations. In most applications those optimizations are irrelevant, but you pay for them: the language is verbose, strict and hard to work with. All those premature optimizations you want to avoid in your design, are built into the language itself!
A language that can run on anything from cell phones to spaceships needs a lot of abstractions. But when I’m building my help-desk app, I don’t want to work extra hard just to make a simple SQL query. I’ll never port it to a cell phone, and I’ll never send it flying into space. Do I need all that complexity?
One could argue that if you only learn one language … well, if I only learn one language than I’m not doing my job. Being a productive software developer is not about learning one language and using it to hammer every nail. Being a productive software developer is about learning the best language to solve the problem in front of you.
All I can say, given the new reality of software development, Java is a hard language to defend. I’m glad that’s not my job.
Sci-fi photo by Simon Zirkunow.
![5060569_f01a017abd[1].jpg](http://blog.labnotes.org/wp-content/uploads/2006/03/5060569_f01a017abd%5B1%5D.jpg)

