Matt's Blog: while { coding }
    Back to Matt's Homepage   |   Hire Matt

Creole (or why I’m not down with the JVM)

A lot of languages are seeing ports over to the JVM these days. I don’t think that’s a very good idea.

Why? I’ll spare you a long exposition. The answer is this: Java’s libraries suck. Yes, there are tons of libraries for Java. And yes, I’m sure very smart people wrote them. But that’s actually part of the problem. An awful lot of a language’s character comes from its libraries. Better said, libraries encapsulate culture. So when your culture devalues simplicity, your libraries will reflect that. Worse, they will propagate that.

I’m sure the JVM performance is wonderful, and it has no doubt been analyzed to death to make it shiny and lickity-splickity fast. But it seems like an awful lot of people want to get their oddball language on the JVM to take advantage of Java’s libraries.

That’s just crazy talk.

For the first few years of my career I was a C++ programmer. Pretty serious about it too. I loved me some C++.

At that time there weren’t a ton of libraries for C++. Not by today’s standards, anyway. In fact, a lot of the libraries I used were directly descended from C or were just straight C libs that had been around forever. So for me, at that point, C++ really was a C with an object system and a few extra bells and whistles.

When I started to learn Perl, my expectations of C++ changed. Which eventually led me to the STL. The STL was a huge leap forward for me. It was only at that point that I felt like I was seeing C++ as its own language. Before that I could only see it as a C.

Many years later, when C# was announced, I winced. Here was M$, and it seemed they were going to just blatantly clone Java and everything that came with it. But that’s not what happened. Aside from out-iterating Java, the .NET platform (and therefore C#) actually got better libraries. Much better, in some cases. In other words, they managed to capture a lot of the advantages of Java without absorbing too much of the culture.

Similarly, a lot of people who liked VB 6 feel that VB.NET is hobbled because it has to be compatible with C# through those same .NET libraries. And they are probably right. VB culture was hugely impacted by the move to .NET.

So, language designers and porters, look before you leap. Putting your language on the JVM brings it closer to Java, a platform whose values are probably the exact opposite of yours. Don’t be surprised if your culture changes.