[om-list] How Microsoft has stolen Sun's thunder

Mark Butler butlerm at middle.net
Fri Nov 23 20:21:20 EST 2001


Can Microsoft do anything right?
--------------------------------

There is no question that Java has a five year head start over C#/.NET.  However, .Net is a very elegant language independent architecture, including the *libraries*.  Unless Sun dramatically improves the Java VM design, it is likely that Java running on a open source CLR implementation (similar to J#) will become more common than Java running in a JVM.

I do not trust Microsoft either, and despise their operating systems in particular.  I personally do not care if Microsoft ever makes a CLR implementation on non-MS platforms, as long as the specifications are open enough so that other people can. By all accounts, the Mono people have not run into any problems implementating the ECMA specifications, including all the standard libraries.

Windows only, for now...
------------------------

C# isn't ready for non-Windows application development yet, but if you are forced to develop Windows software, it certainly has a lot of advantages over both C++ and Java. It makes life much easier for those of us who are forced to operate at the boundary between proprietary Microsoft perversions and more open systems.

There are certain aspects of .NET, like transparent COM integration, that will likely always work better or be available only on Windows environments.  However, certain aspects of Java, like the Swing GUI framework, perform so poorly that they are rarely used for commercial applications anyways.

C# and the CLR specification are open enough that it is possible that a C# + CORBA combination could become as viable for enterprise application servers as J2EE is today. (C# + COM probably will never be).  Even without CORBA integration, the transparent CLR integration with SOAP makes CLR targeted language environments far superior to traditional Java for developing web services.


Java is a closed architecture
-----------------------------

The irony is that Sun dominates by giving the Java libraries away, but only on the condition that no one changes them.  This is why no one is particularly motivated to write open source Java implementations.  On the other hand, Microsoft rarely gives software away, but opening the specifications to a degree greater than Sun for a much superior architecture has produced a situation where open source, cross platform C# and CLR implementations will actually get written.

I would really like to see Sun release a modern J# implementation the current Java 2 libraries.  I do not see why they think it is in their best interest to maintain perfect hegemony in language, libraries, and VM design - a preference where Microsoft is open by comparison.   


Microsoft's Secret Weapon: Language Agnosticism & Interoperability
------------------------------------------------------------------

Microsoft has always been language agnostic, they just didn't do it very well - now that they can do it well, it doesn't matter if .NET implementations are all proprietary - .NET may very well dominate just because Sun insists on maintaining a tight leash on Java architecture, while Microsoft bends over backwards to be interoperable across languages both within the .NET framework using the CLR and to other environments using SOAP.  .NET represents a landmark change in direction for Microsoft, one that shows that they are starting to be at least as open as companies like Oracle and Apple, and one that will probably give them a new lease on life in the server market.

Keep in mind that there are existing .NET implementations of C++, Java (J#), Perl, and Python.  If you are required to use MS platforms, you can take advantage of language interoperability and a very rich set of language independent libraries right now.  I personally like the idea of calling integrating "managed" C++ classes into Java or C# code without playing exceedingly ugly games with JNI or CORBA. The technology is compelling enough that it is almost inconceivable to me that this architecture or something like it will not come to dominate language implementations across all platforms.  Sun had the chance to do this with the JVM, but they squandered it by encouraging everyone to use Java only instead of promoting language and library agnosticism across a common VM.  The promotion of language and library agnosticism on a platform arguably superior to the JVM is why Microsoft has
stolen Sun's thunder in the development community.

 - Mark

Luke Call wrote:
> 
> C# may have advantages but it still "feels" proprietary--yes, I'm aware
> MS has plans/submissions to standards bodies and Sun didn't etc., but
> you can't use C# in the foreseeable future without M$, as you can use
> Java without Sun, (unless Mono really matures and is ported widely and
> remains "compatible", which time will tell). I don't trust M$' and I'm
> sure they'll do what they can do make C# work better on Windows, and not
> be compatible elsewhere. Will be very interesting if that doesn't
> happen. In the meantime, Java is everywhere--learning it today means you
> can code in so many different OS'es and environments--pda, web, client,
> server, gui, daemon, stored procedures, etc, and vendor support is good
> across the board (with a single large exception). Since I'm not smart
> enough to learn too many languages, I'm (tentatively) sticking with a
> menu of C/C++, Java, Perl/Python, or Scheme/Lisp for now, depending on
> the application.




More information about the om-list mailing list