Forgot your password?
typodupeerror
Microsoft Programming

Has a Decade of .NET Delivered On Microsoft's Promises? 558

Posted by timothy
from the full-of-holes dept.
cyclocommuter writes with this snippet from The Register's assessment of whether Microsoft's .NET framework has been a success: "If the goal of .NET was to see off Java, it was at least partially successful. Java did not die, but enterprise Java became mired in complexity, making .NET an easy sell as a more productive alternative. C# has steadily grown in popularity, and is now the first choice for most Windows development. ASP.NET has been a popular business web framework. The common language runtime has proved robust and flexible. ... Job trend figures here show steadily increasing demand for C#, which is now mentioned in around 32 per cent of UK IT programming vacancies, ahead of Java at 26 per cent."
This discussion has been archived. No new comments can be posted.

Has a Decade of .NET Delivered On Microsoft's Promises?

Comments Filter:
  • by Burnhard (1031106) on Friday December 18, 2009 @09:17AM (#30485994)
    The article says that demand for c# is around 32%, but it should also add in the demand for vb.net, which is less but should be added to the total, as it is in use. In my view, the language features, excellent development environment and comprehensive libraries make .NET a win for most LOB applications - which is the vast majority of all PC applications in use at the moment.
  • "mentioned" (Score:4, Funny)

    by Anonymous Coward on Friday December 18, 2009 @09:17AM (#30486002)
    steadily increasing demand for C#, which is now mentioned in around 32 per cent of UK IT programming vacancies

    Yup see them every day

    "Please don't apply if you have C# experience"

  • Java too complex (Score:3, Insightful)

    by HNS-I (1119771) on Friday December 18, 2009 @09:18AM (#30486004)
    I think that java had the momentum, and the quality, so ultimately there was something structurally wrong with it that caused the decline in marketshare. The webapp share was taken over by flash, which is far slower than the java vm, because actionscript was easier to program in. If sun had made a ligthweight version of the vm for the browser and simpler language like visual basic, things might have been very different.
    • Re:Java too complex (Score:4, Informative)

      by thetoadwarrior (1268702) on Friday December 18, 2009 @09:26AM (#30486082) Homepage
      That's the idea behind JavaFX.
      • Re: (Score:3, Insightful)

        Too little, too late.
    • by minginqunt (225413) on Friday December 18, 2009 @09:32AM (#30486160) Homepage Journal

      As a professional Java programmer, I've watched as Java-the-language has stagnated. Java-the-platform has only thrived thanks to Open Source, and no thanks to the sclerotic Java Community Process and an ineffectual steward in Sun Microsystems.

      Java programmers have watched in horror as C# gained fully reified generics, lambdas and closures, arbitrary monadic comprehensions and Hindley-Milner type inference, whilst we've only grudgingly been allowed a broken generics model whilst Sun spent years rejecting and rewriting closure proposals that are still 1-2 years away from adoption.

      C# is thriving because it has a benevolent dictator in the form of Anders Hjelberg. Java the language is a stagnant mess.

      • Re: (Score:2, Insightful)

        by Burnhard (1031106)
        If I had points, I'd mod you up. Great post.
      • by Anpheus (908711) on Friday December 18, 2009 @09:44AM (#30486298)

        Moreover, Microsoft seems to earnestly care about putting the geekiest of the geeks in charge of their language development. They have quite a few functional programmers who have a significant say in the future of languages like F#, and continue to produce great libraries for the CLR.

        And now of course, IronPython is a dream scripting language that's incredibly easy to host and entirely open source to boot.

        I think people unnecessarily mock Ballmer for "Developers, developers, developers!" He was right. It worked, and Java lost, despite having done so many things right first, and having nailed cross-platform application and service design. Or at least, Java is in the process of losing.

        • Re: (Score:3, Insightful)

          by gbjbaanb (229885)

          I think people unnecessarily mock Ballmer for "Developers, developers, developers!" He was right.

          That's not just Ballmer's slogan, Microsoft has focussed on that for the past 15+ years. The trick is to get developers writing code for your platform, and then you'll sell loads of platforms. No manager will buy an alternative because they won't be able to get devs who know alternatives, while there will be plenty of Microsoft developers. That reduces the risk of deploying a platform... and so we see where we a

          • Re:Java too complex (Score:5, Interesting)

            by popeyethesailor (325796) on Friday December 18, 2009 @10:35AM (#30486954)

            However, I think I see a glimmer of hope (for the not-more-blinking-MS-stuff view) in scripting languages..

            Powershell is pervasive now. Every MS product now has powershell hooks. Most command-line utilities are being folded into Powershell extensions. While the language itself is not to my taste(I much prefer the *nix shells still), it's a big improvement alright.

          • Re:Java too complex (Score:5, Interesting)

            by MemoryDragon (544441) on Friday December 18, 2009 @10:50AM (#30487090)

            Java only has lost the war if you thing the entire world runs on windows and develops for Windows only, sorry it is like that!
            I work in banking environments where the language is very strong, the reason simply is you develop on windows, then deploy on Unix and the deployment scales up to the big irons from IBM if you need to!

            All I can see on C# side for now is that it has gotten the ground that VB and ASP had before, that is the market of develop for windows deploy on windows. Ok this is quite a big market but this is only one part of the picture.

            Now with Android we also have a serious push of java being a very popular platform programming language for mobile phones again instead of the trash of J2ME.
            It is not branded java but the Dalvik VM has clearly java roots!

            As I said C# has mostly gathered the ground which was occupied by Microsoft before anyway, quite a big ground but territory java never had.

        • Re: (Score:3, Interesting)

          by minginqunt (225413)

          You're right, of course. Microsoft Research has a number of fellows who are at the very cutting edge of programming language research, including the likes of Simon Peyton Jones (Mr Haskell) and Don Syme.

          And these people have had a direct hand in the evolution of C# (through its type inference, lambdas and LINQ), through F# (which started as a project to port Haskell, and then O'Caml to the CLR), the DLR, Parallel Extensions...

          The level of geekiness that Microsoft encourages at the top end of .NET is remarka

        • by Sycraft-fu (314770) on Friday December 18, 2009 @10:24AM (#30486820)

          Of course their reasons for doing it are not benevolent, they want software designed for Windows so that users want to use Windows. Regardless, they produce extremely slick dev tools because of it. Often the things maligned by self proclaimed "real" programmers are actually quite useful dev tools in the right situations.

          Visual Basic is a good example, all sorts of geeks liked to hate on VB as being stupid. While they were on to something in that VB wasn't powerful like C/C++, they missed that the reason was that VB was a managed language back before such a thing was popular. It allowed you to easily churn out UIs and things like that with minimal effort and without the need to check for the gotchas you got with something like C. Hence it was quite popular.

          What MS has done real well is realized that most developers out there are NOT the hard core "Give me a text editor or give me death!" types. They are people in business trying to get something done, and get it done with minimal fuss and hassle. They also likely have to put up with management idiots who want to change the requirements every 5 minutes and thus being able to rapidly change the software is a benefit.

          They really do seem to be a company that is in touch with what developers want.

          • Re: (Score:3, Insightful)

            Yup, you nailed it.

            Computer languages exist to make tools get stuff done, not as temples dedicated to the genius of the individual programmer whose main talent is mental masturbation through obfuscation. .Net has made my job remarkably easier even though programming isn't my primary job. I can cobble up some rather remarkable tools to do what I need more quickly and easily than I could in either Java, C or C++.

          • Re: (Score:3, Interesting)

            by MrSteveSD (801820)

            Visual Basic is a good example, all sorts of geeks liked to hate on VB as being stupid. While they were on to something in that VB wasn't powerful like C/C++, they missed that the reason was that VB was a managed language back before such a thing was popular. It allowed you to easily churn out UIs and things like that with minimal effort and without the need to check for the gotchas you got with something like C. Hence it was quite popular.

            It was very popular. Millions upon millions of lines of code were written in VB. The company I used to work for had invested a lot of money over many years in their VB apps. Then microsoft dumped VB6. We tried upgrading to VB.NET (using various wizards) but it proved virtually impossible. Basically we were screwed. The company that made the language we depended on had totally shafted us. We just didn't have the finances to rewrite everything in .NET and at the time I left the company, they still had no rea

      • by IBBoard (1128019) on Friday December 18, 2009 @09:48AM (#30486352) Homepage

        One thing I've noticed with generics as a "Java-by-profession, C#-by-hobby" developer is that I prefer many parts of the Java implementation. Having access to the generic parameter type in C# is useful, but it is far more likely that I need the "PARAM_TYPE extends SomeClassOrInterface" method rather than C#'s fixed generic parameters (at least in C# 2.0, which is what I target since Mono has good support and it isn't too huge a download for WinXP users if they don't have it).

        • Re:Java too complex (Score:4, Informative)

          by shutdown -p now (807394) on Friday December 18, 2009 @01:23PM (#30489392) Journal

          One thing I've noticed with generics as a "Java-by-profession, C#-by-hobby" developer is that I prefer many parts of the Java implementation. Having access to the generic parameter type in C# is useful, but it is far more likely that I need the "PARAM_TYPE extends SomeClassOrInterface" method rather than C#'s fixed generic parameters (at least in C# 2.0, which is what I target since Mono has good support and it isn't too huge a download for WinXP users if they don't have it).

          C# 2.0 has constraints on generic type parameters of classes and methods, which are exactly equivalent (albeit more verbose) than Java "extends". E.g. you can write:

          void Sort(T[] a) where T: IComparable<T>

          It doesn't have wildcards, though those can always be replaced by named parameters in generic declaration context.

          There are two things missing. First, you cannot write anything equivalent to this Java code:

          List<? extends Foo> list;

          Again, this is because wildcards aren't supported, and it's not a generic declaration, so there's no way to introduce a named type parameter.

          The other thing that's missing is "super" constraint. For example, this cannot be rewritten in C# while preserving full genericity of the method:

          <T> void add(List<? super T> xs, T x) {
              xs.add(x);
          }

          because "add" is contravariant, this needs the corresponding supertype constraint if we want this to work on any compatible list, but there is none in C#.

          On the other hand, C# generics are fully reified - so you can have T[], and new T(), and x is T.

          Also, in C# 4, a new feature is declaration-site covariance and contravariance of classes. For example, IEnumerable - which is the .NET counterpart of Java Iterable - is now declared thus:

          interface IEnumerable<out T /* covariant*/> { ... }

          which means that you can write:

          IEnumerable<Derived> xs;
          IEnumerable<Base> ys = xs; // implicit upcast

          In Java, you'd have to use "? extends Base" on the second line above, and in any similar context.

          Unfortunately, this doesn't help with classes for which some operations are covariant, and some are contravariant, like List. For those, Java wildcards and constraints (which are effectively use-site variance declarations) do better.

      • by MemoryDragon (544441) on Friday December 18, 2009 @10:30AM (#30486910)

        Java is relatively stagnant but that is also the reason why big buisnesses simply love it, if you want to stay on the edge and keep the platform then use scala or groovy, there you have closures etc...
        The platform is more healthy than ever and java as language has become the same status as cobol had in the 70s, stagnant but widely used!
        As for the JCP you know that 90% of the work the JCP does revolves around the platform not the language?

      • by Mutatis Mutandis (921530) on Friday December 18, 2009 @10:35AM (#30486952)

        I am not convinced that it is such a bad thing that Java-the-language is 'stagnated'. As language, Java was designed from the start to eliminate features that were, in the parlance of the day, "Considered Harmful". So yes, it was and is a bit restrictive. C# has a richer syntax, including "goto"... The richer syntax can be a plus because it often saves time in coding.

        But creating code is what, 20% of the lifetime cost of a software package? And meanwhile C# provides the less disciplined programmer with plenty of opportunities to create write-only code. Never mind lambdas and closures --- I am not so sure that having properties in C# is a great idea, because their very purpose is to hide that code invocation happens. And I positively dislike the opt-out from declaring which exceptions a method throws. Exception handling is simply too important.

        • Re: (Score:3, Insightful)

          by elnyka (803306)

          I am not convinced that it is such a bad thing that Java-the-language is 'stagnated'. As language, Java was designed from the start to eliminate features that were, in the parlance of the day, "Considered Harmful". So yes, it was and is a bit restrictive. C# has a richer syntax, including "goto"... The richer syntax can be a plus because it often saves time in coding.

          But creating code is what, 20% of the lifetime cost of a software package? And meanwhile C# provides the less disciplined programmer with plenty of opportunities to create write-only code. Never mind lambdas and closures --- I am not so sure that having properties in C# is a great idea, because their very purpose is to hide that code invocation happens. And I positively dislike the opt-out from declaring which exceptions a method throws. Exception handling is simply too important.

          Dude, "goto" was never eliminated in Java. It exists in Java in the extremely restricted form of a labeled break statement. And even without a full goto statement, the language still contains pretty much all the potentially harmful constructs (meaning all programming/control statements.) No amount of feature filtering will eliminate programming suckage as the idea of a "safer" programming language is an academic fallacy in anything but the narrowest, best well defined problem domains.

          As a professional Jav

        • Re: (Score:3, Interesting)

          by elnyka (803306)

          I am not so sure that having properties in C# is a great idea, because their very purpose is to hide that code invocation happens.

          Nope. The very purpose is to simplify code usage. I don't gain anything by saying o.setName("name") when I can semantically get the same by saying o.name = "name". It was one of the greatest things that came out of Delphi, and there is a reason why it is the default way to access bean properties in EL/JSTL (firmly a Java technology) as well as in Groovy.

          Unless that verbosity gets me something (clarity, better semantics) it is just syntactic salt with no associated benefit and certainly with an associated

        • Re: (Score:3, Interesting)

          by RAMMS+EIN (578166)

          I think that maintainability of code is helped most by writing the code in a way that closely follows the high-level model of the program. Neither C# nor Java are very good for that, because both require you to add a lot of boilerplate code and neither offers elegant metaprogramming. In other words, understanding the code is going to be hard because of the sheer amount of noise in it.

          Sure, offering more powerful constructs such as macros would offer more ways to make the program a horrible mess, and some of

      • Re: (Score:3, Interesting)

        by buddyglass (925859)

        While all that is undoubtedly true, I question the extent to which its responsible for Java's loss in market share. Honestly, how many Java developers do you imagine even know what a "Hindley-Milner type inference" even is? Answer: not many.

        I'd point to some other misc. reasons:

        • Full force of Microsoft marketing behind .NET and friends.
        • It's reasonable to expect many users to have .NET already installed on their machines, whereas the same can't be said for a JRE. So if I'm distributing a small desktop ap
        • Re: (Score:3, Informative)

          by binarylarry (1338699)

          The JVM has outperformed .NET by a large margin since .NET was created. It's somewhat of a myth, probably perpetrated by Microsoft.

          Java's WORA selling point has worked extremely well overall, stop spreading uninformed FUD.

      • by Joseph Vigneau (514) on Friday December 18, 2009 @11:17AM (#30487470)

        Although Java-the-language has stagnated a bit (I don't know if JDK 7 will ever be complete, due to all the feature cramming), but there's been a lot of activity during the past few years on other languages that run on Java-the-platform. Groovy and Rhino (Javascript) have been available for the JVM for quite a while. JRuby is actually faster than "native" Ruby for a lot of real-world applications. The Lisp-like Clojure language has a lot of fans. IMO, Scala is the most interesting out of all of these, with a very sophisticated type system, as well as functional features that the cool OCaml and Haskell kids seem to love.

        All of these alternate languages can use the wealth of libraries available for Java, generally on all platforms on which the JVM runs. For example, I know of Scala apps that can run on Andriod, which is close enough to Sun's VM.

        • by shutdown -p now (807394) on Friday December 18, 2009 @01:39PM (#30489694) Journal

          Although Java-the-language has stagnated a bit (I don't know if JDK 7 will ever be complete, due to all the feature cramming), but there's been a lot of activity during the past few years on other languages that run on Java-the-platform. Groovy and Rhino (Javascript) have been available for the JVM for quite a while. JRuby is actually faster than "native" Ruby for a lot of real-world applications. The Lisp-like Clojure language has a lot of fans. IMO, Scala is the most interesting out of all of these, with a very sophisticated type system, as well as functional features that the cool OCaml and Haskell kids seem to love.

          All those third-party JVM-hosted languages have two big problems hampering their adoption.

          The first one is lack of proper IDE support. And the problem with this target is that it shifts constantly - ten years ago we had much less than we have today. Think about how many automated Java refactorings a typical Java IDE offers today. Then there are things like code pattern search in IDEA. And so on... the challenge of making a new language is making all the tooling for it as well, and it inevitably competes with feature-rich and mature solutions that already exist for Java.

          The second problem, which is probably even bigger, is the lack of a big corporate backer. With Java, there's Sun and Google. With C#, there's Microsoft. With C++, there are way too many to list - Intel, IBM, Apple, Sun, Google, Microsoft all have major stakes in it, and consequently work on language design together in the ISO committee. But something like Scala? What's the guarantee that it will be around tomorrow?

          Which is a real pity, to be honest. Scala is an awesome language, probably the perfect in its (pragmatical hybrid OO/FP) niche. If e.g. Google were to seriously back it, it would really help its adoption. Unfortunately, it doesn't look like it's happening.

          In contrast, the adoption drive behind F# (yes, there are fairly large companies out there using F# in production code) is largely because of Microsoft backing it, officially supporting it as part of VS, and so on - which is why I suspect it will keep growing.

    • by MemoryDragon (544441) on Friday December 18, 2009 @09:44AM (#30486302)

      Actually the field where java shines is the enterprise part and there it is really well located and very popular, banks corporations etc.. all use java they simply love its stability and portability (have in mind many of them run big irons, and java scales up and up on those machines)

      if .net has managed one thing then to kill java from the desktop, but Sun is equally to blame there as well with Swing having been way to slow until java 4!
      Other than that .Net made major inroads in Windows dev shops and generally windows environments where it was to be expected if it was better than VB which it definitely was!

    • Besides that not sure in which world you live on the webapps side either, while flash has its place flex has hardly taken over the webapp space, in the last years I have encountered exactly one flex app in the wilds!
      Heck it is even hard to get an ajax app in somewhere, but ajax is way more common!

    • by Hurricane78 (562437) <deleted@s l a s h dot.org> on Friday December 18, 2009 @10:31AM (#30486912)

      Yet another comment by someone who thinks Java is “applets in my browser”.

      Java is THE dominant language for mobile phone development (96% of all phones support it, the other 4% allow it with a little precompiler), and “enterprise” server development (where is is the fastest mainstream non-C language, except for [maybe] OCaml/Haskell).

      Java is not only going strong, with no decline in sight. It is dominant in many sectors.

    • by Ralish (775196) <{moc.liamg} {ta} {hsilar}> on Friday December 18, 2009 @11:40AM (#30487846)

      I'm of the opinion that part of the reason for Java's slower than many anticipated adoption is just how badly it integrated into the native GUI environment of the host. For a very long time, and still persisting into the present, Java apps often looked downright awful on many systems. You can frequently tell something's a Java app purely by how ugly and out of place it looks compared to the native apps. Sun has made progress in addressing this, but it may be too little too late. I think the language as a whole is pretty good, and somewhat unfairly maligned, but the importance of the apps looking at least reasonable seems to have been underrated by the Java developers.

      On the other hand, .NET is pretty much guaranteed to look at least reasonable on Windows. Of course, the fact it was targeted at Windows clearly goes a long way to simplifying this. I doubt Microsoft was thinking "We need to design this so it looks great and integrates on Windows, Linux, OS X, and everything else". But, that being said, for many developers it looking good on Windows is all that matters, in that it may be the only platform they're intending to develop for or support, so why go to all the extra effort in Java to make it look presentable when .NET makes it so much easier? There's of course many other pros/cons to each language, but I doubt the proliferation of ugly-as-sin Java apps is particularly good for its image, even if it is a very facile way of judging a language.

      Don't underestimate the importance of presentation!

    • Re:Java too complex (Score:4, Informative)

      by WinterSolstice (223271) on Friday December 18, 2009 @11:57AM (#30488082)

      You may be right here. I have, on many occasions, had to program reasonable size DB apps in both.

      Java.makes.me.want.to.claw.my.eyes.out() .NET may only be truly on windows, but it's actually not so bad to code in. I wrote a DB reporting and maint. app in C# in roughly 2 weeks, the previous version of which in Java took almost 2 months.

      Major things, IME that made the difference?
      Crazy easy remote DB access (sure, neither are exactly rocket science, but .net was quicker and more flexible)
      Easy installs - this had me from the start. I wasn't writing a web app, but a desktop app. The C# one was a breeze, the Java one a major headache
      Attractive frontends - this will probably start yet another flamewar, but many of the java frontends are HIDEOUS
      Performance when doing large dataset manipulations - for example, determining which server had the least free space, or which one had the most obsolete users. These are fairly trivial sorting tasks, but the java version took probably twice as long and more memory (in my implementation, which may well have sucked to be frank).
      Support for dumping data into Excel and Word - this was a killer feature. I was able to generate SOX and sizing reports on the fly with C#. Java? No such luck. I never did get it working quickly and properly.

  • .Not (Score:5, Informative)

    by should_be_linear (779431) on Friday December 18, 2009 @09:18AM (#30486006)
    Joking aside, Java is multiplatform in practice and .Net is only in theory.
    • Re:.Not (Score:4, Informative)

      by ByOhTek (1181381) on Friday December 18, 2009 @09:26AM (#30486094) Journal

      Actually, I'd argue Java is also only in theory.

      I've had to re-write too much stuff because a java built in function relied on native libraries, which did not act the same (regular expression handling in 1.4 and earlier, is a good example - go betweeen HPUX, Linux and Windows, and there can be serious issues). A lot of the UI stuff doesn't work well between versions either.

      It's gotten better, but on a similar note, anything I've used from .NET in VS 2003 and earlier, and quite a bit of later stuff, works just fine on Windows, Linux and FreeBSD.

      Each has their flaws in cross platform use - .NET's issues tend to arise when using newer APIs, and Java tend to have small gotchas, which in most cases are rare, scattered throughout the code.

      • Re:.Not (Score:5, Insightful)

        by MemoryDragon (544441) on Friday December 18, 2009 @09:35AM (#30486182)

        I had once to port a system of half a million locs of java code, between windows, linux and RS6000, I had to change one line of code for the RS6000 due to a bug in IBMs VM, and that was on Java 4...

        • Re: (Score:3, Informative)

          by minginqunt (225413)

          Then you are fortunate. The JVM is a good abstraction, but it is a leaky one. The point is that you can't just *assume* it will work on any platform that runs a JVM, which was the original (I would claim largely irrelevant) point behind WORA.

      • Re:.Not (Score:4, Interesting)

        by minginqunt (225413) on Friday December 18, 2009 @09:41AM (#30486258) Homepage Journal

        The interesting thing was that Sun used WORA as a surrogate argument to accept the validity of virtual machines. It's hard to imagine now, but there was a time when VMs were treated with scepticism or outright hostility by most programmers.

        These days it's hard to imagine creating a programming language that wouldn't adopt a VM of some kind.

        Neither the CLR or the JVM truly enable WORA, but it doesn't matter. We have learned that VMs have a value to a programming language *far* beyond that rather limited concern.

      • Re: (Score:3, Insightful)

        by FlyingBishop (1293238)

        Except the difference is that .Net derives most of its appeal from its tight integration with Windows. You try and port it and the OS simply doesn't have the supporting utilities you've built it to work with.

        Java on the other hand is self-contained. So while you do have to do porting, Java code, in practice, doesn't make as many assumptions about the environment it's running in.

        • by ByOhTek (1181381)

          Ahh, but the mono team developed drop-in replacements for many of the call, making it work in a lot of usual cases.

          As i said, it isn't perfect, but it's not really bad either.

      • Re:.Not (Score:4, Insightful)

        by oldhack (1037484) on Friday December 18, 2009 @10:01AM (#30486534)
        You're comparing odd bugs in Java implementations to .NET's inherent (and intended) tight coupling with Windows platform. Qualitatively different.
      • Re:.Not (Score:5, Insightful)

        by Sycraft-fu (314770) on Friday December 18, 2009 @10:22AM (#30486780)

        The joke I've heard about Java is "Write once, debug everywhere." I've certainly encountered trouble with it in terms of doing system support. Sometimes you find Java software that needs a specific version of the JVM to run. Newer won't do it, only that one works. This isn't because it is a custom version, it is because the JVM they used when writing it did things one way, and that changed and broke it later and they haven't wanted to update. Now you can argue that they should rewrite their code to support the new stuff, but you can also argue they shouldn't have to.

        This isn't to say Java is useless cross platform, but I do get tired of hearing the crap of "Oh just write it in Java, it'll run everywhere!" No, actually, it very well may not.

    • Re: (Score:3, Insightful)

      by cabjf (710106)
      I got the feeling Microsoft looked at Java and said, "Gee, people really like things that are multi-something, instead of multi-platform, let's do multi-language." Thus the CLI was born, but everyone just uses C# with .NET anyhow.
      • Re: (Score:3, Informative)

        by Mr2001 (90979)

        The CLI is, of course, both multi-platform and multi-language. So is the JVM, even though it was designed around the Java language.

    • Re: (Score:2, Interesting)

      by Cyberax (705495)

      So what?

      I'm on the verge of abandoning Java for my projects. Currently, there's just almost no business reason to use it. Microsoft tools (+ReSharper) are now as nice as tools for Java, ASP.NET is as good as any Java web framework, and WPF totally kills SWING on the client.

      Oh, and Microsoft _really_ supports multi-language programming. MSVS 2010 has full official support for F# (Ocaml clone) and extensions for dynamic languages in the CLI. And even plain C# is _much_ nicer than Java (LINQ, anonymous types,

      • Re:.Not (Score:5, Insightful)

        by jedidiah (1196) on Friday December 18, 2009 @10:49AM (#30487082) Homepage

        > I'm on the verge of abandoning Java for my projects. Currently, there's just almost no business reason to use it.

        Yes. Nevermind the target server platforms. Those don't matter at all...

        Like I said: .NET is a Windows centric solution meant to keep the Windows users fixated on Windows and not distracted by anyone else.

        • Re: (Score:3, Funny)

          by Cyberax (705495)

          Microsoft Windows Server is a viable server platform.

          So this excuse doesn't work anymore.

    • Well, .NET runs on Windows and on Windows CE (more or less, .NET compact is a subset of .NET and sometimes behaves differently).

    • by l0b0 (803611)

      Java isn't platform independent; it is a platform.

      Bjarne Stroustrup [att.com]

  • Depends on the goals (Score:4, Interesting)

    by IBBoard (1128019) on Friday December 18, 2009 @09:19AM (#30486016) Homepage

    It depends what the goals were.

    If they wanted to completely depose Java then no, Java is still there.

    If they wanted to introduce a Windows-centric alternative to re-invigorate desktop development and replace the horrors of C++ and VB with something with more modern and useful layers of abstraction and code checking that were already in Java (typed delegates, generic types, garbage collection, etc) then it seems to have done all right.

    If they wanted to tear the OSS world in two with arguments over whether it .Net "teh evilz" or not then that'd be a definite yes, even thought more and more patent covenants are coming in to cover Mono (despite the fact that patent covenants shouldn't even be necessary if the legal system was sensible enough not to allow the patenting of software).

  • by wiredog (43288) on Friday December 18, 2009 @09:22AM (#30486048) Journal

    Is that so much of it wraps, and hides the complexity of, COM. I haven't had to deal with COM programming in 5 years now.

  • No Java or C# please (Score:4, Interesting)

    by newhoggy (672061) on Friday December 18, 2009 @09:23AM (#30486058)

    I was initially excited by .net when it was first released and have preferred it over Java, which as a language seemed to have stagnate. Now, I am finding C# quite a disappointment with Microsoft not investing the time and energy to ensure the features they add to the language are polished:

    * Adding extension methods without also adding extension properties
    * Refusing to implementing covariant return types
    * Adding type inference, but disallowing it for class method return types

    As so forth. Microsoft simply doesn't have the discipline to finish any feature addition to the language before moving to the next.

    That doesn't mean I prefer Java either. I only use Java and C# at work out of necessity.

    My language of choice is now Scala.

  • Consider this. (Score:5, Insightful)

    by v(*_*)vvvv (233078) on Friday December 18, 2009 @09:23AM (#30486062)

    Microsoft has a monopoly. Maybe less so than before on the "desktop" category, but to state the obvious their monopoly on "Windows" is 100%. So naturally, they have every advantage when creating products for their own platform, and they'll do everything legally possible to shove dev products down developers throats.

    So I say whether they call it .Net or .Piss, it does not matter much. The success of ASP is a bi-product of their desktop advantage. If ASP.NET were sold by ASPsoft, then no one would buy it.

    Business 101: How do you sell a product regardless of its quality?

    Microsoft is great at this, as every other major US corporation is and should be.

    BTW I am not saying anything about their quality. I am just saying it doesn't really matter much, because their software is sold by weight.

  • .NET is not limited to C#, although that is probably the most usual. Any language can be used so long as it is made to conform to the .NET CLR (Computer Language Runtime (?)) standard. In addition to the usual MS suspects, there are Third Party implementations of other languages that fit within that framework. This gives .NET development a flexibility that encourages development from experts in many domains dominated by other languages. Has it delivered? If it continues to exist, yes. Is it the best? Depe
  • by thetoadwarrior (1268702) on Friday December 18, 2009 @09:30AM (#30486130) Homepage
    People like .Net because MS offers tools to allow point & click programming. This means more people can do it and companies can lower wages.

    That is one big reason not to support it. We don't need more shitty software that people don't understand how they've created it.
    • by Liquidrage (640463) on Friday December 18, 2009 @09:47AM (#30486340)
      No. People like .NET because of the very clean implementation of modern OOP principles. The drop & drag coding typically aims at mundane tasks. And the heavy OOP nature of .NET left behind a lot of the "developers" you're referring to.
    • Re: (Score:3, Insightful)

      by minginqunt (225413)

      How do you feel about the time and resources Microsoft has poured into developing Visual F#, Linq, Parallel Extensions, the DLR, IronPython/IronRuby, not to mention the funding of Microsoft Research, many of whose fellows such as Simon Peyton-Jones (maintainer of the Glasgow Haskell Compiler) are at the very bleeding edge of programming language research?

      Are these the actions of a company that wants to stultify programmers' minds?

      Microsoft, for all its failings, understands its developers. Always has.

    • by homer_s (799572)
      People like .Net because MS offers tools to allow point & click programming. This means more people can do it and companies can lower wages.

      In the same vein, computers and quickbooks allow more people to do accounting and lowers wages. Before this, a company needed an experienced accountant and a couple of assistants. Now all they need is a part time person to do the same work.
      We should stop supporting computers.


      (just in case it escapes you, I'm being facetious)
    • by Mr2001 (90979) on Friday December 18, 2009 @10:13AM (#30486676) Homepage Journal

      You realize the "point and click" stuff is for laying out dialog boxes, right?

      Writing boilerplate code to lay out controls and handle window messages wasn't some noble art that's been lost. It was low level tedium that distracted from real programming. I remember opening Petzold's Windows programming book and being horrified that the code for "Hello World" spanned several pages.

      I don't know about your wages, but I get paid a fair amount for my time to write C#, and that time is a lot more productive and enjoyable thanks to such things as IDEs and component libraries.

  • But it has always seemed to me that shipping a commercial closed source product based on .Net is a huge challenge to ensure that it remains closed source. What do people do? Do they simply rely on one of the many obsfucation products out there?

    At least in the good old days you could guarantee that disassembling your binary didn't give someone your C code without a bucket load more work

  • So far it seems Microsoft has been sincere about not planning to litigate against projects implementing .NET open source. I'd call that a success any day, given how the Microsoft of yesteryear would have thought about these things.

    I'm very much pro-choice in terms of both choice of language/framework and in terms of proprietary vs. open source. Interoperability given a mix of these things is always good. With .NET you can choose different languages for different parts of your project, and properly written t

  • Yes (Score:2, Interesting)

    by bit trollent (824666)

    If web application development was still as horrible as it was with asp.net 1.1, I would have given up years ago. With .NET 2.0, it finally became usable. When they introduced AJAX update panels, it became far better than anything else in the market.

    I've been using asp.net 3.5 lately, and I have to say that I am very happy with this development environment. Every other data access layer feel like a complete waste of time compared to LINQ to SQL. I love the way it helps me produce insanely good work very qui

  • Almost (Score:3, Interesting)

    by esarjeant (100503) on Friday December 18, 2009 @09:34AM (#30486176) Homepage

    Speaking strictly from a Windows development perspective, I think .NET has improved the experience somewhat compared to other kludgy frameworks (MFC / ATL). Assuming you don't plan on any cross platform deployments, you can implement your application within .NET using all of the capabilities of the operating system in an object oriented fashion. It's quick - it's easy - and C# is close enough to C/C++ that anyone with a programming background can pick it up.

    Where Microsoft missed the mark is on the promise that their own applications would migrate to .NET. For example, Microsoft Office would get re-written as a .NET application. Ironically, I think it's because of the lack of cross platform capability that .NET was unable to meet this need. Microsoft has a number of key software products that need to run on both Mac and Windows. While native C/C++ can be easily ported, without a compatible CLR moving to Mac isn't that easy.

    Had they been able to meet the portability objective (which they never promised), I think .NET could have been much more prevalent. For now, it will continue to be a second-best development environment for Windows computers (with C/C++ being the primary).

  • Almost (Score:2, Insightful)

    by Balau (1286776)
    I think .NET is a good compromise (meaning that it is not the best but it is often good enough) on:
    - learning curve (easy by design)
    - functionalities (reflection, anonymous methods, attributes...)
    - portability to different "Windows" (Mobile, Server...) and to other OS' (Mono)
    - execution speed

    I also agree that if Microsoft had distributed more software written in .NET (up to a complete OS) maybe the framework would have become more mature and more adopted.
  • by rodrix79 (1542781) on Friday December 18, 2009 @09:37AM (#30486210)
    I think the register is oversimplifying here. PHP, Ruby on Rails, Python, Scala... Sure Java is a complicated beast and it has become more and more difficult to sell to new customers, but .NET is not the only one eating Java's pie. Now, I wonder: how much .NET customers have found out they overpaid for a .NET application when they could have done as good with an X language alternative?
  • .NET or .NOT? (Score:5, Interesting)

    by CxDoo (918501) on Friday December 18, 2009 @09:45AM (#30486318)

    The answer is, as always, it depends.

    If you expected cure for cancer, it failed miserably.
    However, if you were involved with any of the likes of MFC, ATL, Visual Basic 6 and bellow, DAO, Interop & COM (to name just a few), it is to be regarded as the second coming of Christ.

  • Goods and Bads (Score:4, Interesting)

    by dcray2000 (969850) on Friday December 18, 2009 @09:46AM (#30486320)
    We use both heavily in our enterprise. I tend to lean toward Java because of the wide spread use across platforms. But I agree that the underlying framework of Java is ridiculously complex. We spend a huge amount of time dealing with the JRE rather than writing and supporting actual code.

    On the other hand, .net, visual studio, MSSQL, AD, and IIS are a seriously tight integrated platform. I've seen even our most junior devs author amazing sites using the pure Microsoft tools.

    Overall, I'd say I'm on the fence. I wish Sun would remove head from ass and get the JRE to a better versioning system that allows old apps to keep running along with new apps, similar to the .net framework methodology. If they could pull that off Java would really start to storm our environments.
  • by CritterNYC (190163) on Friday December 18, 2009 @10:13AM (#30486680) Homepage

    I thought the article may be overstating .NET's popularity, so let's take a quick look at listings on monster.com. Here are the results of a US-wide search for each of the terms (at 9am on 2009-12-18):

    C#: 2,920
    (Just) .NET: 3,632
    ASP.NET: 1,714
    Java: 5,000+

    If we narrow it to posts in the last 7 days:

    C#: 971
    (Just) .NET: 1,095
    ASP.NET: 524
    Java: 1,608

    Or if I select my location, New York City, over the last 60 days:

    C#: 223
    (Just) .NET: 239
    ASP.NET: 91
    Java: 591

    As expected, there is a lot more demand for Java developers than C#, ASP.NET or even .NET framework itself.

    (Note: I added the prefix (Just) to the .NET line as otherwise SourceForge won't let it be separated onto a new line)

    • Re: (Score:3, Insightful)

      by Anonymous Coward

      A few things:

      First, ASP.NET isn't a programming language, it's a library. A lot of people write websites in C# using ASP.NET libraries.

      Secondly, you have to add the numbers up.

      So, using your values, we get:

      US-Wide search results:
      dotNET: 8266
      Java: 5000

      Last 7 days:
      dotNET: 2590
      Java: 1608

      NYC, last 60 days:
      dotNET: 553
      Java: 591

      In other words, your conclusion is disingenuous. Job postings asking for ".NET experience" typically mean C# even though they don't explicitly say that. They very rarely mean VB.NET or any

      • You're duplicating results in your calculations because most .NET job listings include 2 and often 3 of those terms.

        For US-wise listings:
        C#: 2,920
        (Just) .NET: 3,632
        ASP.NET: 1,714
        Java: 5,000+

        You'll find that:
        C# + .NET: 1,905
        C# + ASP.NET: 1,183 .NET + ASP.NET: 1,120
        C# + .NET + ASP.NET: 859

        So we get:
        C# + .NET (no ASP.NET): 1,046
        C# + ASP.NET (no .NET): 324 .NET + ASP.NET (no C#): 261

        So, your total is actually more like:
        Your total: 8266
        Subtract out the 2x the 859 listings that you counted 3 times: 6548
        Subtract o

  • by segedunum (883035) on Friday December 18, 2009 @11:39AM (#30487834)
    1. They pissed all over Visual Basic, which has been used in a lot of fairly critical business applications since the mid-nineties to create applications quickly. Say what you like about it, but an experienced developer could develop very quickly and well with it and it is very widely used. With VB.Net they created an unnecessary and new object oriented language, the need for which was already being fulfilled by C#. I cannot see the point in it as it is merely another .Net language that differs via syntax only.

    2. Again, VB related, for the first time you couldn't take your VB code, compile it in a new version of Visual Studio and get all the benefits. Expecting people to throw away millions of lines of code and start fresh for no benefit whatsoever is an epic fail and Microsoft diverged totally from their past views on this.

    3. VB related again, but there is still no RAD environment for .Net. Many developers simply don't need the complexity of an object oriented environment foisted on them. They should have implemented VB with .Net as they have with IronPython and at least made it API compatible so you could recompile, or learned from Ruby with or without Rails. Java might be complex but .Net is still complex compared to what else is on offer.

    4. As such, a great deal of applications, mostly VB, that could went web based and weren't re-written in .Net. At least with web applications you only need a very simple client and don't have to deal with that deployment shit.

    5. There is still a ton of stuff written with COM, and interacting with it is still a huge PITA when it comes to deployment issues. They should have focused on simplifying this as much as possible. The .Net -> COM and COM -> .Net interaction seems to have been bolted on as an afterthought like they were being forced into it.

    6. There are still a lot of applications where developers are not comfortable running it in a VM.

    7. One area where .Net is even worse than Java is the moving goalposts. Over the years people have asked whether they should being using WinForms, Avalon and then WPF. No one seems to know. When Windows 9 or 10 comes out then why should I migrate to a yet another new UI or other technology that will not benefit existing users in any way, thereby not making me any money, because Microsoft now won't make new components like WPF available for existing platforms? At least if you develop for XP any applications on there will work on Vista or 7. They might not look as pretty, but making things pretty for a limited userbase doesn't make any money. Just take a look at the Mac.

    Microsoft has lost a great deal of what made their development platforms attractive because they think they are losing money by doing it and there are too many divisions like MSDN wanting a piece of the action.

Arithmetic is being able to count up to twenty without taking off your shoes. -- Mickey Mouse

Working...