Monday, February 13, 2012

My stance on JVM Languages

There have been JVM languages popping up all the time; there's Scala, Clojure, Groovy, etc.

These are all excellent languages, without a doubt they are. I use them all the time, and I have come to enjoy them a lot.

But, sometimes, I wonder about the very long-term (well, at least in the software world) consequences on using these languages.

Java, as many of us consider it these days, is an "uncool" language. It is too verbose, too complicated and has too much over engineered crap that no one uses.

It lacks the simplicity of something like C (notice I did not say C++ :P), where the manual for the ENTIRE LANGUAGE was a hundred something pages long.

But, there is a ton of existing code in Java that no one wants to let go of, because people spent so many years trying to develop that code, and it took take many more years to replicate it in another language.

So, people created JVM languages which run on the Java Virtual Machine, and they can interface pretty easily with Java. Then, you can write all your new code in a fast, hip language like Scala, but, you can still keep all of your legacy stuff around, and you don't have to rewrite a thing!

This works wonderfully, except...

Java, in my opinion, is slowly turning into another COBOL. Heavily used in large, high capital industries where a change is made every few centuries (roughly speaking), but, not used much elsewhere because its just too obsolete.

So, if one creates languages on top of such a language, you're still hooking into the same old architecture. That's like writing a language that compiles to a COBOL virtual machine, people would laugh at you.

Does this change anything for us, right now?

Absolutely not.

The term we're talking about (for Java to turn into COBOL), is just so long, that most companies won't even live to face the day.

I'm still going to keep using JVM languages, because they're just plain awesome, but, I just wanted to put my thoughts out there.


  1. Great example of stagnating crap made from Java: Blackboard.

  2. What are your opinions about the fact that most new high quality distributed systems (Cassandra, Hadoop, some LinkedIn products, some Twitter products).

    Java was my first language, then I got disillusioned and avoided it for 7 years or so, until this winter I had to come back to it since I was dealing with a semantic web related project for which I had to use Cassandra, and high quality reasoner/OWL/RDF apis like Jena, which only exists in Java. I was pleasantly surprised to see that it isn't really so bad. The type system is pretty useful (I mostly do Python, JS and C++), iterators are very well thought out, and more importantly well supported by the libraries I was using, and if you use something like eclim, then IDE bloat is also out of the way. Java is fast, and manages memory, and generally gets out of your way when the system actually starts running. It won't be my favourite language, but COBOL? I don't think so.

    1. I see what you're saying, but, I still stand by my statements, and here's why.

      All of the systems you are referring to are all the types of things that could be considered what telecom systems are right now in the next 10-15 years (i.e. what happened to COBOL).

      The type system is pretty useful right now (just as COBOL was pretty cool 20 years ago), but, that will change as dynamic typing and maybe even inference-based statically typed systems become more popular.

      So, even though Java seems like an "okay" option, its really showing its age, and it will do so more and more the programming language scene advances.

      So, again, Java is still a viable language *right now*, but, its stagnating.