Hate Java? You’re fighting the wrong battle.
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?
- It’s popular to hate Java.
- C-like syntax is no longer popular.
- Hate for Oracle is being leveraged to promote individual interests.
- People have been exposed to really bad code, that’s been written in Java.
- … 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.
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.
don’t stick C in this. C is great, java is horrible, it has to die.
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.
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.
I think you’re confusing IDEs and programming languages.
Only reason why someone would hate Java in general is because it’s too main stream. No, really.
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 »
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.
guess what, I think you’re right…. maybe that’s why i hate Java
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.
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.
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 »
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?
“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.
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.
Java is powerfull as nitroglicerin in correct hands.Ofcourse it will tear you apart if you dont know what you doing.
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 »
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 »
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.
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 »
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 »
“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…
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 »
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 »
“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…
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 »
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 »
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 »
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 »
“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!
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
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 »