Recently someone posted to Reddit, “Why does everyone hate Java?” It got a lot of very passionate responses and it made me wonder. It really did seem like everyone hated Java. I worry about this because I do a lot of work in Java. I like the language, it does well by me. But, like any technologist, I don’t want to fall behind and in Java’s case, I don’t want to be a “has bean.”
After digging into the question, I decided that I am not out of style and that Java is just as relevant now as it was several years ago. What I found was…
1: Java is very popular
Online, there are two major polls that I follow to see how popular languages are. The TIOBE Index updates their ranking monthly. They base their findings on a hazy mix of search results, jobs, courses, etc.
LangPop is more raw, giving monthly rankings based upon sites such as Freshmeat, Craigslist, Amazon, Google Code, Del.icio.us, etc.
TIOBE gives a good disclaimer in stating that these ranking do not tell you if the language is a good one, just if it is still relevant in the marketplace. TIOBE ranks Java as August’s #1 language. LanPop ranks Java a respectable #2 overall. Not surprisingly under the equally unhip and widely used C.
So if Java is so widely used, why does everyone hate it?
2: Not Everyone, Just the Internet
This was my second realization. Most programmers work on teams building software for their corporate masters…at least part of the time. Not all of us can be like Richard Stallman and get grants to rant. A lot of software is written by the quite guy or girl three cubes down who doesn’t even have a facebook.
I am going o posit that programmers are not excluded from the GIFT. As with most people, give programmers the chance to go ape behind screen names on a forum and you see a lot of poo slinging.
Just look at the numbers, a lot of people use Java, ergo a lot of people like to bash it. Which leads to my third point…
3: Programmers are Contrarian
This should hardly be a surprise to anyone. Just look at Linux, and if one alternative OS weren’t enough; we have hundreds maybe even thousands running around the web these days.
Programmers think for themselves. They like to be independent. These qualities are what make great programmers, but also mean they can’t agree with each other on most things. And like all the alternative teens at your high school, programmers stand united against whatever is popular at the time.
Java is so lame, I only do [insert today’s tech].
Programmers are real life Indie Rock Petes. I say this because, as a programmer, I only listen to bands you haven’t heard of yet.
4: Good for groups
Finally, looking at the thread. Most of the Java bashing was about the over-kill safety features and nanny like quality of the language.
Java is built to make sure you don’t screw things up. It doesn’t allow you pointers, sneaky false encapsulation, exotic access, funny macros, etc. If you a hip and hardcore code hacker, Java is a very polite and bureaucratic reform school. It makes you show your work, generate comments, and do Hello World in 6 lines if code instead of 1.
However, all the safety that individual programmers complain about are it’s secret for working in large groups and with code you don’t own. Having dealt with the hip and hardcore hacker’s code months after he split from the company, I can appriciate the dotting of i’s and crossing of t’s.
Java hit it big with the internet, but not because it is a great language for network code. In the past, most software used to be created by small teams working physically together. With the Internet, more and more software is created by larger and larger teams. The projects span across location and even years of development. People come and go, and sometimes the code is the only thing to stay.
Maybe the nature of these large projects is what hip hackers rail against, but that is really were most of today’s work is done.
“3: Programmers are Contrarian. This should hardly be a surprise to anyone. Just look at Linux”
forget Linux, just look at JOE! he is the picture of what we call Contrazy: Crazily Contrary.