Sad but True
i have coded in about half a doZen different languages including c, c++, java, python, and what not. but the 80-20 rules seems to be applicable here too. 80% of my work has been in only one of those mentioned(java). with all its beauty, surprisingly java has never been considered a geek language. and someone points out why it is so.
- Java has considerably fewer surprises and prefers not to add complexity to the language for rarely used features thereby resulting in a language where you cannot really make your friends go ga-ga at amazingly brief programming constructs. You need to write something substantial [like Gosling's Huckster] for them be to impressed with your programming abilities and not your language knowledge. This is probably the biggest reason Java is un-cool. It's too easy (although programming or software development remains as tough as ever). Java was always touted as the language that the "average" IT programmer can use. It's such a language-for-the-masses that yet again, it fails the "geek" test. And if you use Java, so do you.
- Java has been considered slow for ages. The earlier allegations (1995) were true. However, with the recent advancements in the JVMs from Sun and IBM, Java runs pretty close to C/C++. Check this benchmark. Contrary to this, there are other benchmarks that prove that Java is slower. All considered, it would be fair to say that Java cannot be considered "slow" anymore, yet its stuck with the label. How cool is to be the jock with the second fastest race-car in the block?
- Swing disasters continue to give Java a bad name. Swing is a brilliant, although hard to learn, API. But the vast majority of Swing applications are so bad that they give Swing and therefore Java a bad name.
- Java is a strongly typed language therefore you have to tell the compiler exactly what you intend to use. And if you make a mistake in the way you use it, the compiler has the guts to tell you that you were wrong. Too much chaperoning?
- Java has a vast library that is available to all Java developers without any ambiguity. Thus, if you wrote yet another Map you would not be considered a data structures guru by Java programmers but a guy who hasn't heard of java.util.*.
- Java did not have a good IDE that compared with MS Visual Studio. I think this one was true. I am not so sure it is any more with IntelliJ. The absence of good tools probably pushed away a lot of good programmers.
- Java is popular. Anything that is popular has lost its elite status and therefore is not cool.
- Java is an application programming platform. You cannot do cool things like device drivers and games, etc (until recently - but Java gaming is coming in a big way).
now, most of that is sensible, except a couple of ones ion which i would have my reservations. the primary one would be the one that says java aint have a good IDE. i think thats a point that would make java pro-geek. i study in a college that has 240 students in one batch/stream. and hence i can produce credible proof that great IDE`s only deter geeks away frm that language. take the example of .Net. VS.Net is the best IDE. but u aint have that control with you. u cannot program that much stuff urself. im to believe with the help of .Net u can build a webService within 3 clicks!!! now i would take that route only if i was building s/w for some organiZation and time was money. if i were doing it for fun or to learn something i did take the longer route and build them using apache tomcat, apache axis, uddi4j, wsdl4j and soap4j. thats the only way i can erally explore everything and find out whats happening behind the scenes. in the case of using .Net i aint even see what stubs it generates. there is hardly any excitement and/or learning on that road. and hence i think java is better off without a great IDE as java is not a geek language, but C# or VisualBasic are miles away. im also vary on the last one. i think it is a baseless argument. period.
the other stuff is true to every word. anything that would be acceptable to an average person would not be acceptable to a geek. and java IS TOO EASY and TOO POPULAR to be accepted by a geek as his/her vehicle. there is also this point about not having 'many surprises'. true java is not a language about continous exploration and adventure. once u learn teh basic constructs of OOP, java turns out to be baccha stuff.
sadly java IS NOT a Geek Language