Software Development

Hate Java? You’re fighting the wrong battle.

One of the most interesting trends I’ve seen lately is the unpopularity of Java around blogs, DZone and others. It seems some people are even offended, some even on a personal level, by suggesting the Java is superior in any way to their favorite web 2.0 language.

Java has been widely successful for a number of reasons:

  • It’s widely accepted in the established companies.
  • It’s one of the fastest languages.
  • It’s one of the most secure languages.
  • Synchronization primitives are built into the language.
  • It’s platform independent.
  • Hotspot is open source.
  • Thousands of vendors exist for a multitude of Java products.
  • Thousands of open source libraries exist for Java.
  • Community governance via that JCP (pre-Oracle).

This is quite a resume for any language, and it shows, as Java has enjoyed a long streak as being one of the most popular languages around.
So, why suddenly, in late 2010 and 2011, is Java suddenly the hated demon it is?

  1. It’s popular to hate Java.
  2. C-like syntax is no longer popular.
  3. Hate for Oracle is being leveraged to promote individual interests.
  4. People have been exposed to really bad code, that’s been written in Java.
  5. … insert next hundred reasons here.

Java, the actual language and API, does have quite a few real problems… too many to list here (a mix of native and object types, an abundance of abandoned APIs, inconsistent use of checked exceptions). But I’m offering an olive branch… Lets discuss the real problem and not throw the baby out with the bath water.

So what is the real problem in the this industry? Java, with its faults, has completely conquered web application programming. On the sidelines, charging hard, new languages are being invented at a rate that is mind-blowing, to also conquer web application programming. The two are pitted together, and we’re left with what looks a bunch of preppy mall-kids battling for street territory by break dancing. And while everyone is bickering around whether PHP or Rails 3.1 runs faster and can serve more simultaneous requests, there lurks a silent elephant in the room, which is laughing quietly as we duke it out in childish arguments over syntax and runtimes.

Tell me, what do the following have in common?

  • Paying with a credit card.
  • Going to the emergency room.
  • Adjusting your 401k.
  • Using your insurance card at the dentist.
  • Shopping around for the best car insurance.
  • A BNSF train pulling a Union Pacific coal car.
  • Transferring money between banks.
  • Filling a prescription.

All the above industries are billion dollar players in our economy. All of the above industries write new COBOL and mainframe assembler programs. I’m not making this up, I work in the last industry, and I’ve interviewed and interned in the others.

For god sakes people, COBOL, invented in 1959, is still being written today, for real! We’re not talking maintaining a few lines here and there, we’re talking thousands of new lines, every day, to implement new functionality and new requirements. These industries haven’t even caught word the breeze has shifted to the cloud. These industries are essential; they form the building blocks of our economy. Despite this, they do not innovate and they carry massive expenses with their legacy technology. The costs of running business are enormous, and a good percentage of those are IT costs.

How expensive? Lets talk about mainframe licensing, for instance. Lets say you buy the Enterprise version of MongoDB and put in on a box. You then proceed to peg out the CPU doing transaction after transaction to the database… The next week, you go on vacation, and leave MongoDB running without doing a thing. How much did MongoDB cost in both weeks? The same.

Mainframes software is licensed much different. Lets say you buy your mainframe for a couple million and buy a database product for it. You then spend all week pegging the CPU(s) with database requests. You check your mail, and you now have a million dollar bill from the database vendor. Wait, I bought the hardware, why am I paying another bill? The software on a mainframe is often billed by usage, or how many CPU cycles you spend using it. If you spend 2,000,000 cpu cycles running the database, you will end up owing the vendor $2mil. Bizzare? Absolutely!

These invisible industries you utilize every day are full of bloat, legacy systems, and high costs. Java set out to conquer many fronts, and while it thoroughly took over the web application arena, it fizzled out in centralized computing. These industries are ripe for reducing costs and becoming more efficient, but honestly, we’re embarrassing ourselves. These industries stick with their legacy systems because they don’t think Ruby, Python, Scala, Lua, PHP, Java could possibly handle the ‘load’, scalability, or uptime requirements that their legacy systems provide. This is so far from the truth, but again, there has been 0 innovation in the arenas in the last 15 years, despite the progress of web technology making galaxy-sized leaps.

So next week someone will invent another DSL that makes Twitter easier to use, but your bank will be writing new COBOL to more efficiently transfer funds to another Bank. We’re embarrassing ourselves with our petty arguments. There is an entire economy that needs to see the benefits of distributed computing, but if the friendly fire continues, we’ll all lose. Lest stop these ridiculous arguments, pass the torch peacefully, and conquer some of these behemoths!

Reference: Hate Java? You’re fighting the wrong battle. from our JCG partner at The Code Mechanic blog.

Related Articles :
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

32 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Mike
12 years ago

Java the language is a hopeless mess of bloat and straightjackets.

It will never anything else.

That is why Scala, Clojure and JRuby are so important to keep Java the platform from being just a platform for legacy code. Of course your average Java API monkey won’t be to look outside the box to learn these amazing languages.

Jancis
12 years ago

don’t stick C in this. C is great, java is horrible, it has to die.

John Kang
John Kang
12 years ago
Reply to  Jancis

But seriously…WHY WHY WHY bring C into this? I mean I can see why someone might one to put Java and C-O in a pit fight to death…Java and C is like putting two dogs in a cage to see which one smell the other one’s balls first.

Yuri Albuquerque
12 years ago

No, Rails is not bad for scalability. This is a myth. Twitter still uses it, github uses it, Diaspora uses it. Refactoring in Rails is not that difficult with the right tools. Refactoring is a matter of tools, not language.

Carlos Gottberg
Carlos Gottberg
12 years ago

I think you’re confusing IDEs and programming languages.

John Kang
John Kang
12 years ago

Only reason why someone would hate Java in general is because it’s too main stream. No, really.

Sean
Sean
11 years ago

My very first encounter with java was interesting. I enjoyed writing it at first, until I realized I had to make multiple modules.. just to do one thing.. and it was extremely verbose. Although, this was rather minor. I gave it the benefit of the doubt and continued. Then I took a job where the systems admin, who was hardcore into java, was the biggest douche bag I’ve ever had the misfortune to known. This one man, intelligent, but by far the most pessimistic, egotistical, idealist jack wagon – broke my spirit in ever wanting to use and code in… Read more »

Fern Gonzalez
11 years ago

I think Java as a language is not that bad. The problem -specially with web applications- is the plethora of frameworks you have to stand up before you do anything. It’s not so much programming, environment configuration that programmers spend time on and loose heart with.

erika
erika
11 years ago
Reply to  Fern Gonzalez

guess what, I think you’re right…. maybe that’s why i hate Java

Nullified
Nullified
11 years ago

Java has Unsigned Integer and Signed Byte? Nope. C does. Java is a DEAD language to me and I’ve banned it from my workplace and forced my employees to shift their java knowledge to C#/C/C++.

Java need to die, there is no argument. It’s a langauge that pile the works on the programmer rather than itself therefore costing everyone time, money, and morale.

Hans
Hans
9 years ago
Reply to  Nullified

Java leaves it on the developer? Whahahaha xD
No, it actually takes work out of your hands, that you can’t use this efficiently is your own problem.
I personally prefer Java for small 2D games and C++ for bigger 3D games, but so will I use a fork for pork and a spoon for soup. So will a fish swim and an ape climb, everything has it’s good sides and rotten sides.. So has c++ with it’s manual memory management. Now that’s putting the work on the developer.

Jeff
Jeff
11 years ago

You make a lovely point but I’m not a programmer. I don’t care how good or competent the code is. I am an end user and Tier 1 support. As a user I detest the frequent updates and the pre-selected “Do you want the Ask toolbar?” and “Do you want Ask to be your default search engine?” When a customer’s software breaks because they loaded legacy software AFTER current Java updates I have to try to find an old version-specific JRE, get them to close everything and uninstall Java, blah blah blah. Or I’ll be in front of a customer’s… Read more »

Sean
11 years ago
Reply to  Jeff

Jeff,

You know that there are free Oracle OTN downloads for both the JDK and JRE that don’t include any of that ASK toolbar bullshit right? Apparently your IT group doesn’t?

Sean
11 years ago

“It’s a langauge that pile the works on the programmer rather than itself therefore costing everyone time, money, and morale.”

Yet C/C++ does this in spades and certainly much more than Java does. Good luck with that.

madrain
madrain
10 years ago

lol at those who say java will die. just look at how much java is involved in everything. from android to web to desktop to every thing. and its growing more and more everyday.

tomtom
tomtom
10 years ago

Java is powerfull as nitroglicerin in correct hands.Ofcourse it will tear you apart if you dont know what you doing.

Dave
Dave
10 years ago

I used to program mostly in c++ and seriously I hope java will die !!! Not because i prefer c++ or it is popular to hate Java , simply because it is the worst language ever made in Software development history.Unfortunately i give it a try just to get more into Android programming… So now i hate it even more !! Stupid complicated , non standard and slow. So here is some reason why i hate Java (and Android) – They forcing you to code in Java. (well , there’s an option to use Native code from java trough JNI… Read more »

Manuel
Manuel
10 years ago
Reply to  Dave

So, you hate the way that Java is used, not Java. Even the people that say ‘I hate Java’ are really hating the way that it is used, not the Language. But Java is fast, helps to avoid the memory leaks that cost a lot of money to the Enterprises, is portable, is more productive and helps to reduce costs. The problema with Java is that a lot of people say that they know Java, but its false. The know a little of Java and think that they just know all about Java. In fact you need a lot of… Read more »

henry
henry
8 years ago
Reply to  Manuel

Totally agree!!!! Some people hate Java is because they never go beyond the point to enjoy the beauty of using Java to solve the problem.

Mohammad Naeem
Mohammad Naeem
10 years ago

I started learning Java with an enthusiasm years ago but sometime later realized it has no future. The reason is simple. It is an extremely complicated language laden with unnecessary verbosity and terminology that put burden on the programmer. And the use of new terms (e.g., container, contentpane, bla bla) and formal vocabulary almost combinatorially explodes as you explore it further. In an effort to systematize things Java people have created a behemoth that is continuously growing grotesque and irregular. Why not use C and other languages which are simple, elegant, fast, and come up with fewer constructs and concepts… Read more »

Jay
Jay
9 years ago
Reply to  Mohammad Naeem

You obviously have never tried other languages (if you think Java is extremely complicated), go do a bit of programming in C++ or C# and then you will quickly see that Java is the lesser evil. I’m not a huge fan of Java and wouldn’t do my hobby projects in it (I prefer Clojure and smaller scripting languages) however I would rather do professional work with Java than any other language. The reasons are simple: Java is the most complete and consistent language out there. Many languages, C++ being a notable example, bloat the language with features which have been… Read more »

Dave
Dave
9 years ago
Reply to  Jay

“C++ templates cannot be restricted to certain types, i.e. if you have a numeric templates you could use it for strings resulting in a big mess”

Can you show an example of this ? if your type (no matter if it’s a string or color or whatever) has a defined operator that is used by the template , how would that turn into a mess ? it will work just as it is expected…

Jay
Jay
9 years ago
Reply to  Dave

Here is a simple example, it is a bit contrived but it shows why you cannot rely on the type having a defined operator. template T left_shift(T arg1, U arg2) { return arg1 << arg2; } All seems well, it will work for an int, short, long `left_shift(10, 2)`, and even for any bignum class provided it implements the '<<' operator. Theoretically it should fail for anything else e.g. a string. Wrong! `left_shift(std::cout, 2)`, that will print 2 to the screen or whoever standard output is redirected to. Now imagine that I don't call the function with std::cout directly, but… Read more »

Dave
Dave
9 years ago
Reply to  Jay

well… your example only proves that you are indeed java programmer… why would anyone write such templates ??? it’s like playing the cello with a saw…. left and right shift are bitwise operators and absolutely notning to do with templates.I recommend to pick up a c++ book and read the template part to understand what templates are exacly “imagine there are multiple developers for which your template function is a black box which they know nothing about.” yeah good c++ programmers would laugh at it and say :” oh no… someone hired an ex-java programmer again…” Your example proves that… Read more »

Dave
Dave
9 years ago
Reply to  Jay

“it could be very subtle, some method called add doesn’t do exactly what you expect it to”

Now what that suppose to mean ?! you mean like a member function say add() you expect addition but performs subtraction ? Well if someone SOOO stupid to write such functions they are probably fired by now… Not to mention that you can do that freely in JAVA too… Yeah member functions are dangerous ! They should remove them…

Jay
Jay
9 years ago
Reply to  Jay

Java is one of the languages I program in, I’m not passionate about any particular language but I do regard this as a serious flaw. C++ pushes the idea of type safety and strong typing as opposed to weak typing using void* in C. However all that has changed is that void* is substituted for a typename template parameter, barely any type safety is gained, sure you have optimization gains but that wasn’t the reason why templates were introduced in the first place. You asked for an example and I gave you an obvious contrived example to prove my point.… Read more »

Dave
Dave
9 years ago
Reply to  Jay

Interesting… the only problem is , i use c++ 10 years now. I worked on many large projects , contribute to opensource projects on GIT , sourceforge , right now we working on two indie games , (one of them is written from scratch in c++!) I’VE NEVER ENCOUNTERED SUCH THING YOU SAY ! i don’t see whats confusing to you ? if a linked list has an add() member function , you probably know that it isn’t performing addition but adds a new element to the list. And you will probably implement the + operator for addition and not… Read more »

Jay
Jay
9 years ago
Reply to  Jay

Like I said earlier my examples were contrived to prove a point. Here’s my real world example of the fraction class template. My class template takes one typename parameter, the type of the numerator and denominator fields. My class should be able to hand any integral type: int, short, long, long long, etc. and it should be able to handle any type which behaves like an integral e.g. a big integer class. It cannot handle floating point types, and should not be used with floating point types. Problem is I have no way of indicating this in my class template… Read more »

ray
ray
9 years ago

I write in over 13 languages, yes, even COBOL (D, F & ANSI) I don’t think there is a one fit language, it totally depends on the need. I personally enjoy the many flavors of assembler, for sheer speed and size. Things i can do in 500 bytes, a java programmer wouldn’t even think of! Things have become so bloated that today’s programmers are so far removed from what is going on under the covers. I write embedded code for micro controllers, which only sometimes have an LED for debugging. I do know what is going on under the covers.… Read more »

henry
henry
8 years ago
Reply to  ray

“I don’t think there is a one fit language, it totally depends on the need” good saying.
However, unfortunately most of the people in the USA. don’t even know this. They think “NEW” is good. Some of them even abuse their power as a MANAGER to ban the Java language in the work place. FXXX that!

johnny2times
johnny2times
8 years ago

Java will never be certified to run on an airlines, and we can all be thankful for that.
Now seeing the FAA knows how bad the language is, why so many other idiots still use it is beyond me.
GC = crash n burn

derp
derp
7 years ago

This article misses the entire point of people still using cobol and not using Java. Want predictable results and performance? Want business logic to be structured and obvious? Want sh*t to actually work? Don’t use Java. Use COBOL. Ever run out of memory on your workstation and notice in your task manager this one process taking up 3 GB on your 4GB RAM workstation? Java*32.exe Yeah, you’re using java. Ever see random stack traces pop up out of nowhere because of some retarded null pointer exception (whatever that means)? You’re using Java. 1. Java is NOT platform independent. You still… Read more »

Back to top button