What is up with all the java haters out there? I’ve been thinking about this for a while. If you don’t care about techy posts, this will probably just bore you.
First off i’ll say that any language has its detractors. No one language is perfect for everyone. No one language is good at doing everything. I think lots of languages have their places and lots of problems can be solved in different ways with different degrees of success by any number of languages.
But seriously – why is it that java is viewed in such a harsh light now a days? in multiple job interviews and companies i’ve worked out, java is a hiss and a byword.
When i was going to college and java was the shiny new toy, two things happened. First – everyone (including myself) went “uh, why would i want to do anything using java? it’s just for making silly web animations, right?” And at first, that’s mainly what people used it for. Applets. Those silly web animations. But actually you could do much more. You could write an entire fully functional program that ran in the browser if you wanted (and you could even access restricted resources if you asked nicely for the users permission). Still, applets kind of sucked then, and they still suck today. They’re slow, they are memory hogs, and they never work very “smoothly”.
Second, after the applet, everyone went “but what about for create cross-platform GUI’s? Swing to the rescue, right?” I did that too. I created several large enterprise applications back in the 90′s and even early 2k’s using swing. And guess what – swing is slow. It sucks. It doesn’t look “smooth”. It doesn’t behave like the native GUI apps. So again – can’t complain when anyone says java isn’t good at making gui apps.
So what’s left? Well, there’s the server side. And this is where i think java absolute rocks and why i don’t get why people think it just totally sucks all around. It’s got all the features you could want to do anything. It’s a simple language, syntactically speaking. You can come up to speed on it much more quickly than you can with c/c++. If you really need to drop low for some serious speed in a critical section, use JNI and call a c function.
But here’s where i think people get the wrong impression. And i can’t believe i’m going to say this, but “kids nowadays use java as a crutch”. Yes, i think that’s probably true. They don’t start out learning the low level constructs and theory behind programming languages. They don’t understand what makes the programs tick. They just fire up a java editor and start writing code. There’s so much detail that’s hidden from a java programmer that it’s easy to see why someone more “hard core” might poo-poo someone who’s main competency is java.
I’ll tell you though – not all java programmers are like that. There’s quite a few of us who DID do c/c++ in school (and even in our professional careers). We learned the theory. We know why compilers and languages do what they do. And you know what – i’m damn glad there’s a language like Java that hides most of the crap from me. It lets me focus much more on solving the problem at hand and writing the app. Whenever i dive into c, i spend more time worrying about the syntax of the language and the memory management and the pointer arithmetic than i do about the algorithm. My productivity is cut down by 50% or more. THAT’s why java rocks.
But yes – you can write some really shitty code using java if you don’t understand why things work they way they do. So to all you java haters out there – make sure you give a java guy a fair shake. They might surprise you and actually be able to write some seriously good stuff with the language. And for all you java weenies out there that don’t understand the guts of why things are the way they are – figure it out. Take a class, read a book, pick someone’s brain. Find out the lower level details so that you’re aware of and can make use of that information. It’ll help you write better code and avoid a lot of issues that java helps you to gloss over. And you’ll be a lot more marketable as a result.