Saturday, August 14, 2010

Why Java is more open than .Net

First of all, lets clarify a few things: Open does not necessarily mean free, and indeed Open Source, secondly in saying that Java is open, I also don't mean that it couldn't be more open than it already is and that the current processes don't have some painful problems regarding openness.

With that out of the way, why is Java more open than .Net?

Lets start with a Simple question: Can anyone show me a .Net 3.5 (Never mind .Net 4.0) certified implementation, that also has certified implementations of all the important .Net technologies that actually make .Net useful like WCF, WPF, WWF, WIF etc, etc. so that I can take my .Net 3.5 App written on Microsoft's .Net implementation and dump it unchanged onto this implementation onto - say Solaris - and it will run no problem regardless of what frameworks and features of those framework I used?


While you are looking it up, here are some more questions:

  • How do go about (or can I even) license .Net from Microsoft?

  • How do I get a say in the specifications for new or existing .Net technologies?

  • Can I actually get my .Net implementation and appropriate frameworks rubber stamped by some certification authority?

  • Does .Net have some type of philosophy regarding platform neutrality?


  • Here are the answers to those questions from a Java perspective:

  • I go to Oracle apply for a Java License, pony up some cash, agree to some terms, then I get a nice kit from Oracle and go forth an implement.

  • I join the Java Community Process and give input to the various Java Specification Requests, I can even submit new Java Specification Requests.

  • I run my implementation of a Java Specification Request against the Technology compatibility kit for that Java Specification Request and not I can say my implementation is certified.

  • Java has had the concept of Write Once Run Anywhere from the beginning and it's backed into Java and the JCP.


  • So what does this mean, and why does it make Java more open?

    It means; that as an end user of Java I can pick and choose the best Java implementations around, and if I decide that I want to change the underlying platform or even the implementation I can do so with relatively little fuss.

    I have in the past run the same Java program happily on OSX, Windows, AIX on Solaris running on Intel, PowerPC and Sparc respectively.

    I have also developed on JBoss and deployed on Glassfish.

    In other words; I as an end user am not locked into any specific Java provider.

    But what about Mono and Ecma?.

    Yes the CLR (and I think C# as well) is an Ecma standard which Java is not.

    But the CLR and C# alone maketh not a development platform and the stuff that makes .Net useful is not very open at all, and as much a The Mono community likes to play it down a cloud still hangs over Mono regarding patents. (BTW: If any Mono guys ever read this, it's fair to say that Mono hasn't cost Microsoft a lot so far, if Android where to run Mono, the cost to Microsoft might be in the billions, can you guarantee Microsoft's behavior when it's losing market share and money?)

    Things may of course change, Microsoft may actually put forward a formal licensing program, and together with the ECMA standardization, and then when I can run all of .Net anywhere on any implementation, then I can say .Net is more open than Java.

    1 comment:

    Javin Paul said...

    Java is definitely lot more than .NET which is just a copy of Java in everything starting from CLR to language specifics.

    Javin
    String vs StringBuffer vs StringBuilder in Java