Is .NET Taking Over the World?

The Microsoft Side of Things

Microsoft has treated the .NET Development process in a way that no one could have ever anticipated, and it seems to be treating them well in return. Besides breaking quite a few “family traditions” of the Microsoft Camp, .NET is a step in the right direction no matter what angle you look at it:

  • No Backwards Compatibility – Not Really

    Microsoft’s insistence on backwards compatibility won it a host of developers and a big headache back in the 90s – but with .NET it’s a whole ‘nother story. .NET 2.0 isn’t strictly compatible with .NET 1.0 or 1.1 applications – that is, Microsoft isn’t worried about bringing older applications crashing. After all, since the .NET platform is a virtual machine of sorts, why bother?

    Instead of allowing .NET 1.x applications to “run guaranteed” on the .NET 2.0 platform Microsoft simply provided a way to run both simultaneously without a problem. You simply install both engines, and the application can pick and choose the combination that suits it best: keeping the headache and bloat factors down to a minimum but nevertheless ensuring that developers don’t need to sit for hours figuring out just why their applications don’t run on the new platform. You just don’t need to anymore.

  • Friendly Licenses – Really Friendly

    Using the licensing system first used in/by Microsoft Research (TM), the .NET Framework comes under a very friendly license that lets you do almost anything. Know as “Shared Source,” it’s Microsoft’s version of the BSD License: you don’t own the engine, but you can do whatever you want with it… And pass the license along. Or something like that.
  • It Exists for Itself

    Microsoft does the research, codes the platform, and then gives you the tools to do what you need. Besides being free, it exists for itself. What that means is, Microsoft doesn’t use .NET as a way to gain money (not directly at any rate), but rather urges and innovates in .NET just for .NET to gain market usage – since .NET is guaranteed to run flawlessly on Windows and the server-side implementations still need IIS, and the users just want a steady flow of innovation and improvement for a framework that just works, it’s a win-win situation for everyone.

But .NET isn’t just different, it’s also the same. Everyone has heard Bill Gates’ version of “I have a dream:” Information at the Fingertips. That was Microsoft’s goal ever since Windows 2.0, and although Vista failed to achieve that, .NET still can. The .NET Framework is at heart a framework that gives the developers direct access to the very tools they need to make applications that do exactly what they want, without needing to mess with the other code too much.

But if .NET is what Microsoft always wanted.. What happened to Longhorn?!

That’s a good question that unfortunately doesn’t have a good enough answer. In the original alpha builds, Windows Codename Longhorn was a pure .NET-driven operating system, complete from head to toe.

We can only guess what happened and why Microsoft decided to leave .NET and write Vista’s backend and 99.9% of the UI in unmanaged C++, but it’s probably something along the lines of “too much pinvoke.”

To put it simply, .NET 2.0 simply isn’t ready for a project on the enormous scale: an operating system. It isn’t flexible enough, but even more importantly: it isn’t mature enough. It’s stable, but it’s missing too many functions that are required for an operating system to work the way it should. Too many low-level calls simply aren’t there, and if you’re going to use pinvoke 90% of the time, you might as well just fall back to C++.

Although that doesn’t satisfactorily put the question to rest, and Microsoft could have built the .NET Framework up around them as they went along, it doesn’t really matter. Anyone using .NET will be writing applications to run on top of an operating system, not instead of one — and for that it’s plenty good enough.

65 thoughts on “Is .NET Taking Over the World?

  1. My first reply was a joke, my second was serious.

    Java is an excellent and more-or-less efficient language. C# is just a bit more excellent in my opinion 🙂

    But seriously, count all .NET jobs for real, take into account the fact that most businesses don’t go with the flow (some still use Cobol!!), and that it takes time for languages as new as C# to gain ground – you’ll realize that job counts do not qualify as a factor for language success.

  2. ” job counts do not qualify as a factor for language success”

    Agreed. But surely that is rather obvious. If a brand new beautiful language came out tomorrow that everybody loved and wanted to write in, job counts would not qualify as a factor for language success for a very long time.

    I take the the implication that your statement is about the future. What happens tomorrow is anyones guess. However, job counts very much qualify as a factor that a language has succeeded in the market.

    Personally, I can’t see that .net has very much going for it over other solutions. Maybe I would be more interested if the source was available and I wasn’t locked into Windows (and don’t bother mentioning Mono, it will always have huge sections of functionality missing and/or out of date).

  3. It’s funny. It’s as usual on neosmart.

     

    There are some guys around who provide facts about Java vs .NET. And then there are MS fanboys who just don’t care about facts.

     

    Give up the fight, if you want to have a reasonable discussion, go somewhere else, you won’t have it on this website 🙁 

  4. Kieron, I agree.

    If Microsoft only released a redistributable (even if closed-source) framework for Linux and OS X, it would certainly become a much more productive venue.

  5. “Java is an excellent and more-or-less efficient language. C# is just a bit more excellent in my opinion :)”

     

    The main problem with Neosmart is that Java folks are attempting a serious debate, backed up with citations (e.g. the performance comparison cited above). Most of the C# folks here are basing assumption upon assumption, based on opinions.

    The whole article that sparked this discussion appears to be based purely on the opinions of the author, which seems to be based MS press releases and marketing. There is no evidence whatsoever of any credible research. It’s not that the article is written badly, it’s actually quite readable, the problem is that it makes many false assumptions about Java.  e.g. Java not being portable. Applications written with Java version 1.0 on Solaris (SPARC) in 1996 work without recompiling on a Windows or Linux system on x86 using Java 6.0 more than ten years later. I can only guess that the author has little interest in Java (his choice), and doesn’t really know much about it.

  6. I was also referring to compability in my previous post, as this was mentioned in the article. Just in case somebody reads my previous post and jumps to the conclusion that I don’t know the difference between portability and compatibility 🙂

  7. I’ve worked on both Java and .Net and have found both to be more or less similar in terms of my general productivity with a couple of notable exceptions:

    .Net thick client development targeted at Windows is of course far more productive on .Net – not surprising.

    Visual Studio is complete crap. Without the Resharper plugin, it’s next to useless especially in terms of refactoring and intention support when compared to Eclipse and InelliJ. Even with Resharper, it still doesn’t quite match the power that the others put at my fingertips.

    ASP.Net is a really annoying way to do web apps for anything which deviates from the ‘normal’ web application. I once had to go through all those auto generated pages stripping out all the HTML and leaving only the ASP tags – then go and rewrite all the HTML and CSS around them by hand. That said, this was on a VS 2003 and I’ll be the first to admit that VS2005 may have improved things.

    Microsoft also has no support for ORM which has been around for years now. You still have to use NHibernate. OSS. Hurray.

    Ultimately, if your application follows the flow that the .Net development environment enforces, you’ve hit the sweet spot and will be productive. But if you need to deviate, god help you, because you simply can’t mix and match portions of the stack like you can in Java.

     

  8. i saw a  lot of java programs and they really look bad.  the UI is dirty and not very enticing to use.  I think the performance difference is not noticeable with the fast computers used by users nowadays.

    i think what we should consider how much you can do with each language.  i test myself and i have created a simple MDI photo-editing program using .net with brush/eraser/color selection/save tool for only 1 and 1/2 hours. is that possible in java? 

  9. I only wish that SUN could sue the pants off Microsoft for taking the idea and concept of using a VM.  I’m glad that SUN open sourced Java.  Doing so will only enhance it even more.  Now, if only wish Mr Gates would give credit where credit’s due, because he sure as hell, didn’t come up with the idea.

  10. “And just for the record, Paint.NET is as powerful as Adobe Photoshop Elements but 4 times as fast? (of course Photoshop Elements is written in Native C++)”

     
    Ahahaha. This tells you how seriously you should take this post.  I like Paint.net but it doesn’t even have soft paintbrushes.

     

    Java and C# (the languages) are 90% the same. One is not massively more productive than the other. Java is slightly faster but not enough to worry about (plenty of people like ruby which is 10-30x slower)

    The Java standard library is significantly better than the .NET one. Windows forms are a bit quicker than Swing but much less full featured as it is basically a thin wrapper on Win32. I don’t know how the Mono implementation is coming along but most Mono developers use gtk bindings instead. There is also the ever-present threat of legal action against Mono by MS.

    90% of Open source libraries for .NET are ports of Java ones e.g. Nant, NUnit, Spring.NET.

    JRuby is significantly better than the .NET Ruby implementations.

  11. Really learn .NET and you?ll see what I mean.

    I work with .NET and Java. If you really learn .NET and compare it with Java objectively, you’ll will see why .NET is a good framework to work with.

    If ASP.NET is annoying, try using JSF. BTW, where does JSF get it’s ‘code behind’ concept from.

    The main point is ‘Do not let Java or you hatred with MS affect your judgment.’

  12. Just stumbled over this article this morning and I’m really amused that nothing has changed between the .net und the java community.

    I work with .net in porfessional und at the university (part time study on software design, so I’ve still some years of proffessional expirience) we use java.

    My personal preference is .net because i like the visual studio ide more than eclipse ide (but there are stille other ide’s for java so don’t hang up on this).

    To take a look at the language features I think c# compared to java is nearly the same (both copy from both and both invent new features). With the next Visual Studio release Oracas und the .net 3.0 (and 3.5 that comes with Orcas) framework microsoft introduces a lot of new things but let time show whether this makes it more popular and even the more important thing to make it better. So for me there is no question that both platforms will be there in the future and both have their right to exist.

    Maybe we should keep a bit more in mind that the platform should support us to get our job done und companys have to decide what’s best for their requirements. And yes of course both platforms are better on differnt requirements (what a suprise!). Nearly no one would use java to create windows client apps (no suprise too). On the other hand very broad band of server applications are written in java (for me no suprise too).

    At least to bring in one fact of the populartiy of programming languages visist http://www.tiobe.com/tpci.htm. Here we see that java with 18% is the clear leader. But what i we also see in the long term trends is that java lost some of there market und “.net languages” gained some market shares. I hope that both plattforms would be the same popular. Competition is good for at least the end user and this in this case is us, the developers.

    So folks it would be really nice to see a bit more harmony between the communities.

  13. Ok, fine, as you guys sang priases that .NET was cool but it’s also true that J2ME is used in most of mobile sets available. Future is Mobile and SUN guys really knew about it.

Leave a Reply

Your email address will not be published. Required fields are marked *