According to statistics, Java continues to have the crown of the most used VM-based platform in the industry. However, Microsoft’s C# and .NET gain ground every day. While C# might or might not overcome Java in the following years, the fact remains that more and more programmers want the choice of C# among their developer tools. So, where does this situation leave Apple?I believe that Apple has either already started porting an existing C#/.NET platform or they are building their own (maybe based on Mono or Portable.NET). The reasons behind this belief are:
1. Apple can’t afford to possibly lose some commercial developers to C# and .NET.
2. If there is a reason to support Java, there is an equal reason to support C#. This reason gets more important by the day.
3. More and more apps are getting written in C# or Windows.Forms and so Apple would need a way of bringing application ports to OSX (so far C or C++ Windows applications were portable-enough to the Mac, but C#-based apps?).
4. Creating Cocoa# bindings shouldn’t be too difficult to achieve, especially if Apple ports Mono (which is already able to run on OSX more or less, hence a port will be “easy/cheap enough” to justify).
5. Support for ASP.NET (via Apache) is also paramount for the same reason the plain ASP module for Apache was: interoperability for web code especially between software houses and web servers.
6. Apple simply can’t afford not to be ahead of the times. If something “big” is out there, Apple has showed in the past that they will eventually support it.
Some will say that Apple will never want to strengthen Microsoft’s position with .NET, but this is already too late. Latest statistics show Apple below 2% of global desktop usage and so Apple is not in a position to play such business games. Once upon a time, when Apple used to have above 10% of market share they were able to decide if they wanted to make the life of Microsoft more difficult or not, but today, by not going with the times and supporting the latest and greatest it would be Apple in the loss, not Microsoft. Apple is not as a dangerous competitor to Microsoft as it used to be. Funnily, if Apple decide to not officially support C# or Mono, Apple will also be losing to Linux!
Others will claim that C# and .NET is not important, but these people will probably be non-Windows developers. The reality of business today for Apple is that it is craving for Windows application ports. If these Windows developers are not satisfied with the developer tools they won’t be looking at Apple as their alternative market, but quite possibly, at Linux.
If we see a .NET-like implementation (with or without Windows.Forms) for Mac OS X this year, it probably means that Apple have licensed Microsoft’s code. If we see such an implementation next year (around 2005) it will probably mean that Apple will be using Mono (which is arguably more mature than Portable.NET). But no matter which engine they will use, one thing is clear, Apple can’t afford to not support at least one.