Slashdot Mirror


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

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."

99 of 558 comments (clear)

  1. I think they made a small mistake. by Burnhard · · Score: 5, Insightful

    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.

    1. Re:I think they made a small mistake. by lseltzer · · Score: 2, Insightful

      This is excellent point. Recall that the resistance to VB.NET in the VB community was immense, as it introduced significant changes. With time (and the certainty that things were changing whether they liked it or not) VB programmers seem to have moved on.

    2. Re:I think they made a small mistake. by Gnaget · · Score: 4, Funny

      I hardly think we should include all the high school students using VB.NET in the count.

    3. Re:I think they made a small mistake. by Saint+Gerbil · · Score: 2, Informative

      From the same source as the article it adds 7-8% which is down from a few years ago with a high of 10%

      http://www.itjobswatch.co.uk/jobs/uk/vb.net.do

    4. Re:I think they made a small mistake. by ozmanjusri · · Score: 2, Informative
      It's not about religious language wars. It's just that VB is an oddball subset of C#.

      There's not really much point to it unless you're transitioning from an existing Basic, and even then, if you're that badly locked into the Microsoft ecosystem, you'd be better just learning C# anyway.

      --
      "I've got more toys than Teruhisa Kitahara."
    5. Re:I think they made a small mistake. by Vancorps · · Score: 2, Informative

      VB.net is also used in web development, same with C#

  2. "mentioned" by Anonymous Coward · · Score: 4, Funny
    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"

    1. Re:"mentioned" by Anonymous Coward · · Score: 4, Funny

      Awwwe, look at the poor starving troll. Will someone feed it?

    2. Re:"mentioned" by pjh3000 · · Score: 5, Funny

      You're just sore because you made the wrong decision to learn Delphi.

    3. Re:"mentioned" by JustOK · · Score: 3, Funny

      Don't worry, it's going to get all tangled up in the .NET

      --
      rewriting history since 2109
    4. Re:"mentioned" by dragonxtc · · Score: 5, Informative

      Ironically did you know the guy that designed Delphi also designed C#?

  3. Java too complex by HNS-I · · Score: 3, Insightful

    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.

    1. Re:Java too complex by thetoadwarrior · · Score: 3, Informative

      That's the idea behind JavaFX.

    2. Re:Java too complex by minginqunt · · Score: 5, Insightful

      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.

    3. Re:Java too complex by Burnhard · · Score: 2, Insightful

      If I had points, I'd mod you up. Great post.

    4. Re:Java too complex by spottedkangaroo · · Score: 4, Funny

      Indeed. He has the knowledge of a real insider, but keeps up on other languages too. If I had points I'd mod you up for saying he should be modded up.

      --
      Imagine if you weren't allowed to use roads because a bus company complained about your driving 3 times. --skunkpussy
    5. Re:Java too complex by Anpheus · · Score: 5, Insightful

      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.

    6. Re:Java too complex by MemoryDragon · · Score: 4, Insightful

      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!

    7. Re:Java too complex by IBBoard · · Score: 3, Insightful

      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).

    8. Re:Java too complex by LordAndrewSama · · Score: 3, Insightful

      Too little, too late.

    9. Re:Java too complex by CxDoo · · Score: 5, Funny

      Gee, I have mod points but could not help but notice your modesty - why exclude yourself?

      If someone has mod points, please mod us all up!

      --
      "Blah blah blah." - [citation needed]
    10. Re:Java too complex by motorhead · · Score: 3, Funny

      Somebody modded a comment of mine up and now my karma is neutral. It was bad for years and a source of pride for me. Feh!

      --
      Employee Of the Month - Cyberdyne Systems Corporation - September 1997
    11. Re:Java too complex by gbjbaanb · · Score: 3, Insightful

      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 are today, an ecosystem built around Windows.

      It was no big surprise that C# became popular, all those Windows devs suddenly thought they needed to learn it or be shut out of the Windows job market, and so they all demanded C# skills, and so managers started to find that they could only recruit C# devs. It helped that the language was such that you could only poke fun at it in relatively minor ways (unlike, say VB that never caught on in such a massive way amongst 'professional' developers)

      Java, I'd say has lost the war, even if there are a few more battles to be fought and C++ seems to be hanging on in there. However, I think I see a glimmer of hope (for the not-more-blinking-MS-stuff view) in scripting languages. MS hasn't targeted that yet, IronPython is still a 'toy' to MS. Maybe soon it'll start to battle cross-platform scripting languages too.

    12. Re:Java too complex by minginqunt · · Score: 2, Interesting

      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 remarkable.

    13. Re:Java too complex by MemoryDragon · · Score: 3, Insightful

      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?

    14. Re:Java too complex by Hurricane78 · · Score: 5, Insightful

      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.

      --
      Any sufficiently advanced intelligence is indistinguishable from stupidity.
    15. Re:Java too complex by popeyethesailor · · Score: 4, Interesting

      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.

    16. Re:Java too complex by MemoryDragon · · Score: 4, Interesting

      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.

    17. Re:Java too complex by buddyglass · · Score: 2, Interesting

      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 application and I'm only targeting Windows, choosing .NET gives me the best chance of not obligating my customers to download an extra run-time environment.
      • Native look and feel for GUI applications on Windows.
      • Better performance. Can't verify this since I haven't done much with C# et. al., but it's always been my understanding that it outperforms Java, generally speaking.
      • ASP.NET is the obvious choice for a web scripting language if you're using IIS. Java is not the obvious choice of scripting language if you're using non-IIS.
      • The set of technologies surrounding .NET is much narrower than what you see with Java. That is to say if you want to learn .NET you can stick to one IDE, one OS, one application server, etc. With Java you have Tomcat, Jetty, JBoss, Websphere, Glassfish, etc. Then you've got NetBeans, Eclipse, IntelliJ, etc. Then maybe you have to pick an ORM framework. Or a Web Services framework Axis, Xfire or JAX-WS RI? The .NET environment removes all those decisions. So, as a student, you can say to yourself, "IF I learn X and Y and Z, then I'll have covered everything I need to know."
      • One of Java's big selling points, "Write once, run anywhere," never really worked in practice.
    18. Re:Java too complex by rabbit994 · · Score: 5, Informative

      Powershell was never designed to be used by day to day admins in general administration tasks. GUI for many things allows you to look up data or make one off changes much quicker. Powershell is designed to be used by admins to script common tasks they do daily. I have a Powershell script that will parse a comma delimited text file and add every line in there as Active Directory user with Exchange Mailbox. When we get 30 new employees at work, I modify some parameters on Powershell script, take list from HR and bam, in 15 minutes, I've added 30 new users with Exchange mailboxes. That's purpose of Powershell.

    19. Re:Java too complex by binarylarry · · Score: 2, Informative

      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.

      --
      Mod me down, my New Earth Global Warmingist friends!
    20. Re:Java too complex by binarylarry · · Score: 2, Insightful

      Android uses Java and tools from the Java ecosystem heavily. And it's really starting to become popular.

      Looks like old Stevarino's gonna be eating crow as Android surpasses the iPhone as the smartphone to get eh?

      --
      Mod me down, my New Earth Global Warmingist friends!
    21. Re:Java too complex by Ralish · · Score: 3, Insightful

      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!

    22. Re:Java too complex by WinterSolstice · · Score: 3, Informative

      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.

      --
      An operating system should be like a light switch... simple, effective, easy to use, and designed for everyone.
    23. Re:Java too complex by bberens · · Score: 2, Interesting

      I hear you on the poor java coding. I work in a shop that's 25% Java, 75% C/C++ (mostly C). You can pick a random class out of our Java code and immediately tell whether it was written by a C programmer or a Java programmer. All public variables, Hungarian notation, no thought for encapsulation or any OOD whatsoever. I'm not even though to get into the 10k line classes, or the 1500 line methods which is bad practice no matter what language. But those things aren't specific to my shop. From what I've seen it's everywhere. There's no escaping it.

      --
      Check out my lame java blog at www.javachopshop.com
    24. Re:Java too complex by adonoman · · Score: 4, Informative

      Have you actually used powershell? They've predefined common aliases for most of the command (ls, cd, del - just type get-alias (or gal) to get the full list). All the parameters can be used both positionally, or as named parameters where you only need to provide enough of the name that it's unambiguous (usually one or two characters is enough). On top of all that, there is tab-completion for object members and such. The purpose of the long, descriptive names is for writing scripts. I can use the abbreviated aliases and shorthands when I'm at the command line, and yet still write scripts that are legible, without having to look up whether -r means recurse or revision in a given context when I'm debugging a script a year later.

    25. Re:Java too complex by buddyglass · · Score: 2, Informative

      I guess I should have been more specific on the performance thing. Mostly I was referring to two things: GUI performance, since Swing has traditionally been pretty turgid, and the ability to easily link with native libraries, which I have always assumed C# handles more elegantly than Java+JNI. As for general purpose performance, the jury's still out on that:

      C# beats Java (most of the time): http://reverseblade.blogspot.com/2009/02/c-versus-c-versus-java-performance.html

      C# beats Java: http://www.bentuser.com/article.aspx?ID=323&AspxAutoDetectCookieSupport=1

      Java beats C#: http://blogs.sun.com/dagastine/entry/sun_java_is_faster_than1

      When it comes to WORA, again it depends on what you're doing. Recently I had to write an app to do serial port communication on Windows. Unless I missed something, that's only achievable in Java land by using a native library via JNI, meaning my code won't run elsewhere. Another example is when I used to work at IBM about seven years ago. We frequently had UI or I18N issues with our Java code that only cropped up on certain platforms (e.g. AIX) but not others (Windows).

      That said, the non-graphical server code I write using Java runs pretty much everywhere. So for that class of application WORA really works.

    26. Re:Java too complex by JasterBobaMereel · · Score: 3, Insightful

      To program on windows nowadays you program in a .NET language

      So it is not taking over from Java, it's taking over from Windows non-.NET languages

      Java is alive and well and still running on platforms .NET could never dream of ....

      --
      Puteulanus fenestra mortis
    27. Re:Java too complex by shutdown+-p+now · · Score: 3, Informative

      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.

    28. Re:Java too complex by TheRaven64 · · Score: 2, Informative

      I think you transposed some digits. Java's object model is based on Smalltalk, which was first released in 1976. The syntax comes from C, which was first created in 1972. A number of language features (the type system, interfaces, and addition of primitives as well as Smalltalk-style objects) come from Objective-C, which was created in 1986. The generics come from category theory, and apparently someone thought that was a good idea.

      --
      I am TheRaven on Soylent News
    29. Re:Java too complex by Tetsujin · · Score: 2, Funny

      Gee, I have mod points but could not help but notice your modesty - why exclude yourself?

      If someone has mod points, please mod us all up!

      I have some mod points!!

      --
      Bow-ties are cool.
  4. .Not by should_be_linear · · Score: 5, Informative

    Joking aside, Java is multiplatform in practice and .Net is only in theory.

    --
    839*929
    1. Re:.Not by ByOhTek · · Score: 4, Informative

      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.

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    2. Re:.Not by MemoryDragon · · Score: 4, Insightful

      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...

    3. Re:.Not by cabjf · · Score: 2, Insightful

      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.

    4. Re:.Not by minginqunt · · Score: 3, Interesting

      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.

    5. Re:.Not by Cyberax · · Score: 2, Interesting

      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, type inference, real generics, closures, etc.).

      It wouldn't be as bad if Java was improving. But right now it's stagnating fast.

      Oh, of course there's Scala. But it exists mostly to prove that JVM is not really for Java, but it's also suitable for horrible hacks required to run other languages. And in any case, there are no good IDEs for Scala development.

    6. Re:.Not by minginqunt · · Score: 2, Informative

      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.

    7. Re:.Not by FlyingBishop · · Score: 3, Insightful

      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.

    8. Re:.Not by Mr2001 · · Score: 2, Informative

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

      --
      Visual IRC: Fast. Powerful. Free.
    9. Re:.Not by oldhack · · Score: 4, Insightful

      You're comparing odd bugs in Java implementations to .NET's inherent (and intended) tight coupling with Windows platform. Qualitatively different.

      --
      Fuck systemd. Fuck Redhat. Fuck Soylent, too. Wait, scratch the last one.
    10. Re:.Not by @madeus · · Score: 2, Informative

      I don't agree with that, I really think it's very good in practice. I write C# software for both .Net and Mono on my Mac, with Windows and Linux my primary target platforms. It's really highly portable, and with very low resource impact requirements to boot (far, far lower than Java out of the box IME).

      You can use C# w/ Mono to create games games for X-Box 360, the Wii and even the iPhone (see Unity3D), as well as Windows. The Apache module mod_mono makes it a snip to deploy, and it's just drag and drop to deploy the same websites or web services under IIS, nothing platform dependant about it.

      Certainly, Windows and Linux are the environments which enjoy the best support for desktop applications (on Mac OS X you have to use an ObjC bridge, because of the proprietary UI), but in practice it's not any more abstraction than is need to create a decent UI in Java (arguably less, though it's probably fair to say that pretty simple cross platform UI's are easier to implement in Java, anything remotely sophisticated requires pretty much the same effort in either).

      It's worth nothing that porting FROM something like Mono or DotGNU to .NET is far easier than the other way round, as the Microsoft tools tend to embrace Microsoft's own extensions which are not covered by the C#language specification, of which all the commonly used methods seem to implemented fully by the Mono team, but P/Invoke calls to native Windows DLL's obviously cause issues when porting - and that's almost always where the gripes come from.

      If you start out with Mono then you won't have that problem. The Mono team have actually done a better job than MS in providing a wide range of libraries for platform abstraction and to implement common functions, and if you start out with Mono, there is no reason not to just bundle the Mono libraries you use with your app, regardless of platform it's run on.

    11. Re:.Not by Sycraft-fu · · Score: 4, Insightful

      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.

    12. Re:.Not by FatSean · · Score: 2, Informative

      I develop J2EE applications on a Windows machine as I prefer the snappier UI to X. My code runs, with no modifications, on Windows (duh), AIX, Linux and Linux running on zSeries platform. We have never needed to call platform-specific functions for our work as these are business applications. There is something really cool about using the development tool to push the same EAR to applications servers on several different platforms all from within the dev tool. Now the dev tool itself is a resource hog but my boss doesn't mind spending a few hundred dollars to max out memory and ensure we have speedy processors in our dev machines.

      I used VB.NET in a few classes I took last year for my Masters degree. It is a nice environment to work in, even the 'free' student-grade version. It may even be better than the eclipse-based environment I use at work. My only complaint was that we had to use VB as I dislike BASIC syntax.

      --
      Blar.
    13. Re:.Not by jedidiah · · Score: 4, Insightful

      > 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.

      --
      A Pirate and a Puritan look the same on a balance sheet.
    14. Re:.Not by Cyberax · · Score: 2, Funny

      Microsoft Windows Server is a viable server platform.

      So this excuse doesn't work anymore.

    15. Re:.Not by @madeus · · Score: 2, Informative

      Compare with C# where your typical app, whether a GUI app or a server app, can't be ported to work with Mono without reworking loads of things. Or what about the other way? Can you take things built with the Mono toolset on Unix and run it with the Microsoft VM on Windows

      Hey that's not my experience at all!

      I write apps in a mixture .NET/Mono on my Mac and deploy them on Windows (desktop software) and Linux (typically server side). I do use Visual Studio in VMWare for applications that are exclusively for Windows, but that's just because VS is so good it's expedient in the short term.

      I have had zero cross platform porting issues (of course Mac OS X GUI aside, as with Java).

      It's just drag and drop the DLL or source between Windows, Linux and Mac. It works between Apache/mod_mono or Windows Server with IIS/.NET and with desktop applications (or self contained server software). Due to unrelated network issues I've switched server platforms at the last minute (in one day) from Mono my Mac (where I'd built everything) to a FreeBSD box, to a Solaris Box to a Windows IIS box with .NET and the software itself was fine, without any prior testing on the alternative platforms with no recompiling.

      Even the more complicated multithreading stuff and network stuff works just fine. The only problems are the ones I create, like if I know I need to hook into Windows specific platform libraries - but that's exactly the same as the situation with Java (you know it's quicker to implement, but screws portability and sometimes you just have to make a judgement call based on your situtation). Of course if you use something like one of the (many) Mono libraries for abstraction / convenience you can bundle the ones you use with your app, even if it's to be deployed on .Net.

  5. Depends on the goals by IBBoard · · Score: 3, Interesting

    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).

  6. The really big win with .Net by wiredog · · Score: 3, Informative

    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.

  7. No Java or C# please by newhoggy · · Score: 4, Interesting

    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.

    1. Re:No Java or C# please by Anonymous Coward · · Score: 2, Informative

      Adding extension properties is a feature that would be rife with problems. The first extension prop that you add then increases processor time significantly - you have to allocate memory associated with each object, keep hash tables or some such to manage that allocation. Making the decision to implement extension methods before extension properties was a good one.

      Adding type inference for class method return types is not a good idea. This means that you have to infer return types for the same method across assemblies, some of which may be compiled, some of which may not, i.e. method x in source code module A returns int, method x in assembly B returns float, therefore the inferred return type returns float. You may not even be linking to an assembly that would, in the end, participate in the process of inferring return types. Overloading by return type is super-problematic.

      > Microsoft simply doesn't have the discipline to finish any feature addition to the language before moving to the next

      Actually, to the contrary, Microsoft has the foresight to see what's next, and the discipline to tackle managable chunks in each release cycle.

  8. Consider this. by v(*_*)vvvv · · Score: 4, Insightful

    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.

  9. .NET is not limited to C# by Katchu · · Score: 2, Insightful

    .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? Depends on your prejudices. Few have the ability to make a truly objective assessment. Objective.

    --
    Keep Doing Good.
  10. Point & Click programming by thetoadwarrior · · Score: 3, Insightful

    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.

    1. Re:Point & Click programming by Liquidrage · · Score: 4, Insightful

      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.

    2. Re:Point & Click programming by minginqunt · · Score: 2, Insightful

      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.

    3. Re:Point & Click programming by Mr2001 · · Score: 5, Informative

      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.

      --
      Visual IRC: Fast. Powerful. Free.
  11. Yes by bit+trollent · · Score: 2, Interesting

    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 quickly.

    I can't even begin to express my gratitude for the programming language that has paid my bills for the last 3 years.

  12. Almost by esarjeant · · Score: 2, Interesting

    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).

    --

    Eric Sarjeant
    eric[@]sarjeant.com

  13. Almost by Balau · · Score: 2, Insightful

    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.

    --
    Working to work less.
  14. It is not a Java vs .NET world by rodrix79 · · Score: 4, Interesting

    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?

  15. .NET or .NOT? by CxDoo · · Score: 5, Interesting

    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.

    --
    "Blah blah blah." - [citation needed]
  16. Goods and Bads by dcray2000 · · Score: 4, Interesting

    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.

  17. Re:Asp.Net is NOT a 'popular' business framework. by bit+trollent · · Score: 5, Insightful

    Where I live, on Dice.com there are 74 open ASP.NET, and 17 open PHP jobs.

    You are totally talking out of your ass. I really hope you understand the irony of starting with, "please dont bullcrap if you are not in industry".

    I may not be in the dumb, arrogant PHP developer industry, but I can assure you that I am in the industry. There is a good chance that if you haven't used a website that I helped develop, you have at least used one that my company has. Where I work, we use ASP.NET (Primarily .NET) and Java, but not PHP.

    But hey, don't let that discourage you the next time you want to post an uninformed and totally inaccurate rant about PHP and how you are in the industry but nobody else is...

  18. Re:Asp.Net is NOT a 'popular' business framework. by blowdart · · Score: 5, Interesting
    the projects you will see in contract websites like elance, rentacoder and the like will be predominantly php+mysql

    Well of course you will. The projects on those sites are looking for cheap implementation and damn any sort of quality or maintainability. The register didn't look at those sorts of sites, they looked at recruiting sites instead, the ones businesses use. Using the slime pool that is the "Write me a twitter clone for $100" sites to say LAMP is the most popular in businesses is laughable.

  19. Current Monster Numbers: Java vs .NET by CritterNYC · · Score: 4, Informative

    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)

    1. Re:Current Monster Numbers: Java vs .NET by Anonymous Coward · · Score: 3, Insightful

      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 of the other languages supported by the .NET VM. Same goes for ASP.NET (which, as I said above, is just a library).

      While it does appear that Java is currently slightly higher in demand in NYC than .NET, that doesn't jive with the rest of the US overall.

  20. Re:Java Is Victorious by CaymanIslandCarpedie · · Score: 2, Informative

    Dear Sir, I've done exactly as you suggested and search for those exact term on Monster and Dice. Moster (on a nation wide search in the US) returned 4 hits for "Java/J2EE/JEE" and 323 hits for ".NET/C#". On Dice.com "Java/J2EE/JEE" returned 6 hits while ".NET/C#" returned 644 hits. Is there some other search criteria I should try to see the advantage JAVA has?

    --
    "reality has a well-known liberal bias" - Steven Colbert
  21. Re:Silverlight by dzfoo · · Score: 3, Funny

    Strange that you mentioned 10 years, because as the article claims, .Net was announced in 2001, and introduced in 2002. So even if you started using it the day it came out, the framework is still only 7 years old.
          http://en.wikipedia.org/wiki/.NET_Framework#Versions

    Do you by chance have one of those jobs posted circa 2004 asking for "10 years experience in .NET"?

            -dZ.

    --
    Carol vs. Ghost
    ...Can you save Christmas?
  22. MS really does care about making devs happy by Sycraft-fu · · Score: 5, Interesting

    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.

    1. Re:MS really does care about making devs happy by gestalt_n_pepper · · Score: 2, 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++.

      --
      Please do not read this sig. Thank you.
    2. Re:MS really does care about making devs happy by Acer500 · · Score: 2, Interesting

      Hardly. They care about making companies happy sure; when "development" requires little skill, more people will line up for the job, pay will be less.

      And, isn't that the point? Haven't we always said that programmers would automate themselves out of a job? I embrace that... I wouldn't want to be stuck programming in Assembler or C the rest of my life... I rather like other aspects a lot more... then again I'm not a hardcore programmer, I'm one of the business programmer types the GP mentioned.

      --
      There are three kinds of lies: lies, damned lies, and statistics.
    3. Re:MS really does care about making devs happy by Mongoose+Disciple · · Score: 2, Insightful

      You're missing a few things:

      1) It's impossible to make all development easy, but you can make some parts/kinds of it easier.

      That is to say, just because a language like VB.Net makes throwing together a passable UI fast/easy doesn't automatically mean that all VB.Net tasks are easy or that someone who's qualified to slap a DataSet on a web page is qualified to do something more complicated.

      2) They're really not competing with free (as in beer) in the sense that you seem to be saying that they are.

      I can get something like OpenOffice as a free (as in costing no money) word processor to use at my business; I can't get someone for free to write an app that solves the specific needs of my business processes. I'm going to end up paying a team of developers for that, and whether they're using Java or PHP or C#, the cost to me is still pretty similar.

    4. Re:MS really does care about making devs happy by MrSteveSD · · Score: 2, Interesting

      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 real way forward. I suspect similar stories have occurred in small software houses all over the world.

      This is a real danger when using a proprietary language. If they stop making it, you're screwed.

  23. Ease of writing doesn't convince me by Mutatis+Mutandis · · Score: 4, Insightful

    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.

    1. Re:Ease of writing doesn't convince me by plague3106 · · Score: 2, Insightful

      Ugh...

      I don't think I've ever seen goto in a C# program.

      The richer syntax means I can get my work done faster, without wasting time with boilerplate nonsense.

      Your quipe about properties is particually stupid; the property setter and getter are compiled into methods anyway, its just syntatic sugar that means I can type less, but more reable code.

      In math, do you write set_X( newValue), or do you write X = newValue? C# allows you to have myObj.X = newValue instead of myObj.set_X( newValue ).

      It makes it clearer whats going on; changing state instead of performing an action.

    2. Re:Ease of writing doesn't convince me by The+Flymaster · · Score: 2, Insightful

      I agree that you don't write stuff like that if you're not an idiot. But sometimes you maintain code written by people who DO write code like that. And properties obscure that it's not just an assignment, it's a method call.

      If you have a 4000 line file called program.cs, written 5 years ago by someone who was rightfully fired 3 years ago, it's a pain in the ass to check if something is a property or an actual member, and what that property may or may not do when assigned to.

      By not implementing properties, and instead using getters and setters, you make it more obvious. It's a flag that says "Check this! It might be insane!"

    3. Re:Ease of writing doesn't convince me by elnyka · · Score: 2, Insightful

      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 Java developer my conclusion is that the language is stagnant. Many of the ideas we originally thought were useful and that would conduct to better programming had turned out not to be such good ideas at all. In fact, they turned out to be bad ideas, syntactic/semantic "leaky abstractions" with an associated negative cost that no one would have expected back then between 1995-2000 when we were going OOOH JAVA:

      1. Replacing multiple (class) interface inheritance - how do you modify an interface down the road (even good software is subject to changes) after it's been inherited by a bazillion entities w/o breaking code compatibility
      2. .

      3. Checked exceptions - they aren't that bad of an idea except that Java never provided a mechanism for preventing them cross-cutting all over the place.
      4. String "+" operator - in the hands of sucky Java programmers (who are a dime a dozen) is the bane of garbage collectors. It is funny in a sad way that immutable strings were thought to help in memory management,but no one gave a shit of a thought about the poor implementation of the String "+" operator.
      5. Not having a non-synchronized string builder until Java 1.5, and refusing to deprecate Vector and HashMap = brainfart.
      6. Still having a debate about having support for lambdas and closures on Java 7 == a bigger brainfart.
      7. Not having an explicit namespace mechanism (which forces you to use classes as namespaces) == another brainfart.
      8. Each and every one of the brainfarts above were thought to be good ideas, but practice has proved them to be, well, brainfarts, very expensive brainfarts. If it weren't because the JVM is rock-solid and multiplatform, we would be dead in the water. The value of JEE stopped being the language a while ago, and the language innovations that were supposed to help implement software of a better quality turned to actually increase the cost of software development.

        I have nothing but praise to Gosling and all the bright people that brought Java to us. But you can't stay perpetually in awe as if it were 1995. We gotta recognize what's good and what's broken and learn from past experience. Acknowledging that Java, the language, is stagnant, that's an step forward.

    4. Re:Ease of writing doesn't convince me by elnyka · · Score: 2, Interesting

      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 cost. When you start working with a whole bunch of goddam POJOs, you'd wish you'd have properties. I used to be in that camp that worshiped verbosity for the sake of it. Fortunately, first hand work experience in its associated cost helped me grew out of it.

      I don't gain anything in knowing whether o.name = "name" executes code or not. I want that name to be "set". Whether that "set" operation carries additional semantics beyond assignment (.ie. synchronization, reference count or what not), I don't need to know. I don't want to know. Just as I would not want to know the "hidden" internals of calling a method in an object.

      In fact, YOU WANT TO HIDE THE CODE INVOCATION. In programming, you simplify out of a context the things that you don't need to know. If you have two constructs that, by design-by-contract, carry the same semantics, you opt for the less verbose one. Always.

      And I positively dislike the opt-out from declaring which exceptions a method throws. Exception handling is simply too important.

      Prove to me that "good" exception handling absolutely requires checked exceptions, and then you might have an argument. In my experience, the worst exception handling mechanisms I've seen have been implemented with checked exceptions. No other language introduces them.

      Now think about this. The folks implementing Groovy, Scala, C# as well as those that support and extend the C++ standard, these are all people experienced in programming language theory (not counting their industrial experience). And, by what they know, and by their industrial experience, they opt not to implement checked exceptions. Moreover, there are a lot of systems implemented in Java and otherwise that have excellent exception handling without checked exceptions. What should that tell you? Checked exceptions sounded good on paper, but it turned out not to be the case.

      Exception handling (or design by contract for that matter) does not require checked exceptions. Sorry. Checked exceptions introduce code entanglement at various levels, and Java does not provide a way to abstract them out. The only way to really use checked exceptions in a controlled manner would be if Java provided a mechanism to declare exceptions as checked within a scope (say a package or an architectural layer) or by concentrating them within template patterns (which is basically what I have to do in a project I'm working on.)

    5. Re:Ease of writing doesn't convince me by RAMMS+EIN · · Score: 2, Interesting

      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 the extra annotations that are in Java and C# code actually give some clue as to what is happening, so the knife cuts both ways. But I think bad programmers are going to write bad code in any language simply because they don't have the right mindset, whereas good programmers are going to write better code in a language that doesn't restrict them as much as C# and Java do.

      --
      Please correct me if I got my facts wrong.
  24. Well according to Dice.com... by trboyden · · Score: 2, Informative

    Well according to Dice.com... "Java" has about 3,203 job opportunities... and "C#" and "VB" combined have about 1,066 job opportunities... I would say Java isn't anywhere close to dying anytime soon and is still very popular with businesses willing to hire. As an aside, Flex has about 268 job opportunities which is roughly equal to 25% of the number of Microsoft based development jobs. With the turn from traditional desktop application programming to web-based applications, I'm left to wonder whether Microsoft will catch up with the demand of Java developers before Flex grows to overtake the demand for Microsoft developers?

  25. Alternate JVM languages will carry the JVM. by Joseph+Vigneau · · Score: 3, Insightful

    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.

    1. Re:Alternate JVM languages will carry the JVM. by shutdown+-p+now · · Score: 3, Interesting

      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.

  26. Re:Asp.Net is NOT a 'popular' business framework. by Anonymous Coward · · Score: 2, Insightful

    Others have correctly pointed out that rentacoder is not "the industry", nor does it represent enterprise-level development. Having said that, they take refuge in the popularity of ASP .NET vs PHP, with many declarations about the superiority of MS in the enterprise. The argument of one vs. the other is sadly lacking in specificity on either side -- perhaps because EITHER can be used to achieve the same result. Upside potential and risk are pretty much the same.

    Among the benefits of LAMP are vastly simplified licensing. When you use LAMP, the BSA never calls. And you don't get pesky little offers from MS partners to do "SAM" audits. Even if you have no license problem, who needs the BS? System uptime is another benefit. I have worked long enough with both to see a big difference.

    To me, the benefit of ASP .NET is the commoditization of developers. I think it is easier to treat people interchangeably in a world where the architectural choices are narrow. Some enterprises live in perpetual "risk management" mode, one of the chief risks being sudden departure of key employees. If there is one place where the MS platform shines, this is it. The next geek can be inserted almost as readily a replacing a USB mouse.

    Garbage code is abundant on both platforms. In the world of LAMP, there is the lower echelon of rentacoder where people try to cobble together systems for pocket change. The amazing part is not that it works well, but that it works at all. In the enterprise world, I have seen dreadful apps that are forced upon a captive population of corporate employees. For reasons that have nothing to do with technology, the management strategies that highlight the advantages of ASP often include the side effect of rigid time and cost constraints. When the money runs out, development stops. Some (but not all) of these enterprises would be far better off with an army of LAMP rentacoders.

    It takes real money to develop systems. If you have lots of it, a reasonably competent project mgr. can spend his/her way to success. But if you don't, the cost of ASP (including entire Windows environment) is money that could be redirected to man hours of developer time.

    The real enemy of LAMP and ASP is not Java, it is Flash. Foolish people are easily swayed by cute graphics -- even when eye candy is not helping. I am surprised the PHB in Dilbert has not converted the entire software development team to Flash. I'll check again this Sunday.

  27. Statistics by volkram · · Score: 2, Informative

    http://www.langpop.com/ begs to differ.

  28. No, They Made Huge Mistakes by segedunum · · Score: 2, Interesting

    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.

  29. You're Counting Some 2 and 3 Times by CritterNYC · · Score: 2, Informative

    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 out 1x the 3 double listings referenced above that you counted twice: 4917

    So even if you add them all together, you get 4,917. Which is still less than the 5,000+ Java listings... and we don't know how many over 5,000 that number is.

    If we're comparing platforms, it's Java vs .NET, which is 5000+ vs 3,623. If we're comparing languages, it's C# vs Java, which is 5,000+ to 2,920.

    Any way you slice it, Java is more popular.

  30. Re:no, you are talking out of your ass. by beuges · · Score: 3, Informative

    A common trend I've noticed amongst the vast (99%) majority of PHP developers is that they are almost guaranteed to be
    a) completely devoted to PHP
    b) incredibly arrogant
    c) mediocre developers at best

  31. Classic ASP by Halotron1 · · Score: 2, Interesting

    If Microsoft really cared about devs, then the next version of IIS would allow Classic ASP and ASP.NET to share session state.
    Nothing like releasing ASP.NET and obsoleting millions of lines of code.

    Unlike VB6 to VB.NET there is no migration path from Classic ASP to ASP.NET other than a complete rewrite.