Josling On Other Languagues

time to read 3 min | 580 words

Josling (the father of Java) was quoted talking about C#, Ruby and PHP. It's amazing how such a short piece can annoy me so much.

First, I did very short work with PHP (and really couldn't stand the dot operator for concantation), and virtually no work with Ruby. I work quite a bit in C#, as you probably know. I don't know of any usages of PHP outside the web, but I can certainly think of usages for Ruby outside the web. Ruby != Rails !! Ruby is used in WATIR (wrapper for IE's COM interfaces), Stocks watcher, File Systems, etc (just from looking at RubyForge for a couple of minutes).

The comment that really irritated me was:

We were afraid they [C#] were going to do something really creative - but they're hopelessly focused on one platform.

I understand that there are some people to whom cross platofrmism is the holy grail. But I just don't get this type of attidute. Platforms don't really mean anything without applications, and application are created when developers like a platform. If developers don't like a platform, it will quickly be delegated to the legacy benches, to chat with Cobol to the end of time.

To claim that .Net is not relevant because it is focused on Windows in to turn a blind eye to the truth. First, this claim is not true, I can run my applications on Windows, Linux, Solaris, Mac OS X, and Unix. I can run it on anything from a honking server to a phone. No, it's not as portable as Java, and it will probably not run on AS400. For the relevant applications, I can take the same assemblies, and use them on all those platforms (you can't run an ASP.Net app on your phone, though).

That said, I would still consider this irrelevant. There are some great advantages to Java, but I would consider this mainly in the culture and maturity of the development community. Most of the tools that I use daily have their roots in Java (NHibernate, NUnit, NAnt). Hell, I can trace the roots of Rhino Mocks to Easy Mocks.Net, which is a port of Easy Mocks, a Java mocking framework.

I don't see any ground breaking differences between Java and .Net, to tell you the truth. There are some things that I like in .Net that I can't do in Java (real generics, anonymous methods, yielding, nullable value types, consistent types), but nothing that I really couldn't live without. I'm certain that there are things that Java does that .Net doesn't (and I like the syntax of anontations more than attributes).

I'm very surprised to hear such a dismisal from Josling. If he thinks that Java's biggest advantage is its cross platform capabilties, something is wrong. As a developer, I don't care where my code is running (unless the environment will affect my code, of course). That is the job for the integration stage. I do care about productivity, richness of the langauge, ability to mess around with stuff, etc. If I don't like the environment that a platform is giving me, I'm highly unlikely to use it.