What I’m going to say in this post is actually what I really wanted to say in my previous post about Apple’s agreement statement.
I started to look at the Silverlight and .NET seriously.
If you are a Cocoa programmer, you will notice that .NET is very similar to Cocoa in terms of its programming model. Because MS has its own issues to solve with the framework, .NET is not as clean as Cocoa. However, from MFC programmers’ point of view, .NET is huge enhancement regarding to code manageability, more advanced programming model, and so on. While .NET provides such virtue to Windows programmers, Silverlight, which is a subset of .NET, tries to expand its territory. Silverlight was once called .NET something, which means light version or web version of .NET. The most popular .NET language, C#, and the framework, i.e. .NET itself are running on runtime. It can be thought as virtual machine or middleware. Architecure-wise or concept-wise they are similar to Java’s runtime or VM.
Sun touted “Write once, Run everywhere”. The same language and library with which you build Java app are used to create Java applet which can be embedded on a web page or invoked from web page. So, it can be considered more powerful web app than AJAX based web apps. However, even during the period Java was mentioned in every magazines, it didn’t feel like that Java app will replace any desktop apps and web solutions.
Java is very active and important language, but it still gives feeling like “Java app is heavy”.
However, .NET apps don’t feel like that. Probably it is because MS don’t need to spare its time to make design for multiple architecture and OS. Although its spec says that .NET runtime can be on any OS/platform, but MS doesn’t spend most of its time to write C#/C++ CLI compiler/IDE for other platform than Windows. So, it means that they could optimize their codes soley for Windows/Intel architecture. So, although it shares similar VM architecture to that of Java, it is faster and in most of cases, it can replace native apps.
Based on this, they announced Silverlight. Silverlight is, as I mentioned, an environment which is subet of .NET. So, the languages and framework used to build desktop apps can be used to make a web-based app. This is huge plus for Windows programmers.
Also, Silverlight programs look faster than Java applets. Silverlight is available on Mac and Linux. Silverlight apps can work exactly like desktop apps. The performance is very good. I don’t feel any big difference between C#/.NET desktop app and Silverlight app.
So, I started to see that Silverlight/.NET/C# can dominate all S/W industry.
Additionally there is Mono project lead by Novel but supported by MS.
At Novel, they made their in-house programs using the Mono/C#.
Although many parts of .NET is still missing from Mono, it is almost there.
With all of those in mind, they now provides MonoTouch. With the MonoTouch, you can write iPhone programs using C# and Mono framework. You don’t need to install Mono framework to iPhone system folders to have .NET framework available system-wide.
This can be a big threat to Apple.
Although the Windows is not as strong as it did during 90’s and early 2000’s, it still dominates the market. In addition to that, .NET framework is very good, C# is very popular to ex-VisualBasic programmers and nowadays even to C++ programmers, because C# is decently fast for the most jobs, and many of .NET features are only provided to C# or easier with C#. With C# and .NET, they can make web apps. With C# and Mono, they can make iPhone programs.
What does this mean? If Apple people doesn’t stop this, most of programmer-wanna-be will choose C#/.NET. Then they are potentially Windows programmers, and this will raise chance that they write Windows programs and put the iPhone in Windows territory.
Don’t forget this food-chain :
More developer=>More programmers for xx platform => More user of that platform => More developer =>….
Apple is currently very successful in creating Objective-C/Cocoa echo system, which was thought to be very hard to achieve before. Without breaking the Windows echo system, Apple’s platform can’t survive.
Steve Jobs mentioned “Ubiquitous computing” in Wired magazine. To make Apple survive, he first tried a product which can be sold to Windows users also. It was AirPort. It was successful and gave them some cash. Then they introduced iPod. It gave them huge success, and found out that they could change the game. This also made Mac sold well.
iPod Touch and iPhone made it possible to have more and more programmers learn Objective-C/Cocoa.
In other words, Steve Jobs is about to see success in making Mac/Apple echo system which is as powerful as that of Windows.
It is amazing how he could have done this. It is like to have your soldiers move forward while enemies keep watching them. For each and every move, enemies can see his soldiers’ movement. But he successfully disguised where his soldiers headed for. And finally when they almost reached their destination, enemies finally figured out that his soldiers reached the desination where the enemies should prevent from this soldiers’ arriving in.
So, unlike others, the Apple’s agreement statement looks like more against C#/.NET than Adobe’s.