none
.NET and other technologies. Need benefits to justify .NET use.

    Question

  • I will soon work on a large project and basically we are now in a position to propose the technology to be used. In my country Java is the most popular platform for pretty much any development and the reason for this is because there are tons of developers, who know Java and use it as primary technology.

    For me personally .NET is a better choise because it is generally easier to develop / faster / better integration across all MS technologies / more agile, especially with 3.5. How do you justify the choice though to non so technical people? I am sure a lot encountered this situation, how did you convince MS technology is better?


    Thanks in advance.




    Kusok
    Friday, September 05, 2008 11:29 AM

Answers

  • I regularly have had these conversations over the years, here are some of the key points that I believe are effective.

    1. .NET is a single platform whereas today with the divisiveness that exists in parts of the opensource community, you don't end up with a single flavour of Java solution stack that you compare against. As a former Java architect from IBM said to me, you end up with arguments at times over which data layer equivalent of ADO.NET you are going to use, and the arguments become religious rather than productivity focused.

    2. Microsoft technology is backwards compatible pretty much back to the beginning of time, whereas the Java elements of any solution are a mix of currently active projects, retiring or retired projects, temporary upstarts (exciting but going to disappear).

    Now regarding #1 and #2 it does not mean that Java is a big mess and .NET is clean. What it does mean is that it isn't really an apples to apples comparison in a lot of regards because you have to carefully choose the elements that you are going to include as part of your "Java" bucket of parts.

    3. Microsoft's Visual Studio is the most highly rated and mature development environment and makes developers more productive than any other environment. Eclipse and everything else is great, and if you have a problem hopefully you subscribed to the right forum or company or whatever to get the support you need. I rarely run into anyone that argues Visual Studio is not as productive as some other environment.

    4. The Microsoft Enterprise Library provides a free, single source of best practice code that can be used as is or customized for your particular needs. You'll notice in the marketplace as soon as something is incorporated into the Enterprise Library, the alternatives tend to fade away. The primary reason I believe is because of the focus on a single standard, a single approach whenever possible. This makes future maintenance much easier.

    5. Microsoft provides accelerators for development of key types of solutions, like the Smart Client Factory or Web Services Factory, etc.

    The thing to try and avoid is the religious argument because it doesn't lead anywhere. Objectively is there an equivalent for everything in the Java world in the .NET world? Yes. The reverse? Pretty much.

    Having been a Java architect myself years ago, and then having been at Microsoft, and now still being on the Microsoft side of the technological fence, I find that productivity wise .NET developers are more productive. Granted they have to have a base level of experience to see the benefit, i.e. don't take a Java developer, send them to a C# course, and expect them to be more productive than they were as a Java developer for the first couple of months.

    Hopefully these are some helpful points,

    Driss.
    • Proposed as answer by Driss Zouak Friday, September 05, 2008 7:45 PM
    • Marked as answer by Zhi-Xin Ye Tuesday, September 09, 2008 11:36 AM
    Friday, September 05, 2008 7:44 PM
  • It's pretty simple: either your customer or your boss will make an economic decision.  Whatever is cheaper wins.  You'll have to park your passion, it won't be considered.  Make a realistic project budget that compares the two options.  That might not be an automatic win, it will be a lot easier to hire Java talent and easier is always cheaper.  Once you're done, you'll be at peace when you see the boss/customer make the logical decision.  Or have a major selling point to convert them to your point of view, depending on how it turns out. Make sure you're objective, it won't work otherwise.
    Hans Passant.
    • Marked as answer by Zhi-Xin Ye Tuesday, September 09, 2008 11:36 AM
    Saturday, September 06, 2008 1:58 AM
  • There are pro's and contra's using .Net.

    On the plus side.

    1. It is extremely easy to program in .Net, so you will be very productive. Almost no matter what you want to do, you can be sure that there is already a class for it, so it is just a matter of finding it. This is by far the biggest advantage. You will simply reach the marked faster. Your boss will love it.
    2. There is an excellent forum support in case you have any problems.
    3. You are not bound to cryptical languages like Java and C ;-) but can use VB and even Fortran 95 (Intel compiler) or a combination. This enables a better overview and with that less errors and higher reliability.
    4. The automatic garbage collection.
    5. Visual Studio is a very good IDE except for the lack of a "Save Project As" feature.
    6. It is free.
    7. No diversity between different distributions as you often see in the open source world.
    8. It is the future on Microsoft/Intel platforms (PC).

     

    On the minus side.

    1. The intermediate language (IL) and the just in time compilation (JIT) has certainly not made the programs faster - both regarding execution time and load time - just look at Vista! However, to some extent this also apply to Java and any other language with a virtual machine.
    2. .Net code is very easy to reverse engineer, so you need to obfuscate the code for most professional applications. Unfortunately, an efficient obfuscation is not a part of Visual Studio, so One-Click publishing etc. don't do the job.
    3. .Net is not always backwards compatible! A good example is the serial port, which is useless in version 3.5. This is already beginning to create a version hell and Microsoft don't seem to do much about it. Although I have reported the bugs long time ago, we cannot expect any bug fix before SP2 (not SP1) or later. For professional applications, it may be better to build your own classes than using build-in classes, which suddenly don't work any longer. Regarding the serial port, you can solve the problems by compiling to .Net 2.0, but this may force the customers to install more versions of .Net, which they don't want.
    4. The lack of a "Save Project As" feature in Visual Studio makes it rather clumsy to test new versions and make workable projects build on previous projects (you cannot just copy a project). Visual Studio must be the only IDE in the world without this valuable feature.
    5. You cannot make native code in .Net like drivers etc.
    6. As far as I know, .Net is only supported on Microsoft/Intel platforms so the basic idea of the IL has not yet been a success. On the other hand, Java is supported on most platforms.

     

    In the beginning I was very positive regarding .Net and I still use it, but I must admit that the points on the minus side has cooled my enthusiasm considerably!

    Everything should be made as simple as possible, but not simpler.
    • Edited by Carsten Kanstrup Saturday, September 06, 2008 3:18 PM WYSI NOT WYG in the new forum!
    • Marked as answer by Zhi-Xin Ye Tuesday, September 09, 2008 11:36 AM
    Saturday, September 06, 2008 3:17 PM

All replies

  • Will you be integrating with MS technology in that project? That would probably be the greatest benefit under your circumstances.
    Friday, September 05, 2008 3:41 PM
  • One good argument could be the amount of support for MS development that exists.  Just look at the forum!
    David Morton - http://blog.davemorton.net/
    Friday, September 05, 2008 4:43 PM
  • I think you can also say it's faster, simpler, more productive to develop in .NET than in Java. You know it takes more time in coding and debugging when developing in Java.
    Friday, September 05, 2008 4:45 PM
  • I regularly have had these conversations over the years, here are some of the key points that I believe are effective.

    1. .NET is a single platform whereas today with the divisiveness that exists in parts of the opensource community, you don't end up with a single flavour of Java solution stack that you compare against. As a former Java architect from IBM said to me, you end up with arguments at times over which data layer equivalent of ADO.NET you are going to use, and the arguments become religious rather than productivity focused.

    2. Microsoft technology is backwards compatible pretty much back to the beginning of time, whereas the Java elements of any solution are a mix of currently active projects, retiring or retired projects, temporary upstarts (exciting but going to disappear).

    Now regarding #1 and #2 it does not mean that Java is a big mess and .NET is clean. What it does mean is that it isn't really an apples to apples comparison in a lot of regards because you have to carefully choose the elements that you are going to include as part of your "Java" bucket of parts.

    3. Microsoft's Visual Studio is the most highly rated and mature development environment and makes developers more productive than any other environment. Eclipse and everything else is great, and if you have a problem hopefully you subscribed to the right forum or company or whatever to get the support you need. I rarely run into anyone that argues Visual Studio is not as productive as some other environment.

    4. The Microsoft Enterprise Library provides a free, single source of best practice code that can be used as is or customized for your particular needs. You'll notice in the marketplace as soon as something is incorporated into the Enterprise Library, the alternatives tend to fade away. The primary reason I believe is because of the focus on a single standard, a single approach whenever possible. This makes future maintenance much easier.

    5. Microsoft provides accelerators for development of key types of solutions, like the Smart Client Factory or Web Services Factory, etc.

    The thing to try and avoid is the religious argument because it doesn't lead anywhere. Objectively is there an equivalent for everything in the Java world in the .NET world? Yes. The reverse? Pretty much.

    Having been a Java architect myself years ago, and then having been at Microsoft, and now still being on the Microsoft side of the technological fence, I find that productivity wise .NET developers are more productive. Granted they have to have a base level of experience to see the benefit, i.e. don't take a Java developer, send them to a C# course, and expect them to be more productive than they were as a Java developer for the first couple of months.

    Hopefully these are some helpful points,

    Driss.
    • Proposed as answer by Driss Zouak Friday, September 05, 2008 7:45 PM
    • Marked as answer by Zhi-Xin Ye Tuesday, September 09, 2008 11:36 AM
    Friday, September 05, 2008 7:44 PM
  • It's pretty simple: either your customer or your boss will make an economic decision.  Whatever is cheaper wins.  You'll have to park your passion, it won't be considered.  Make a realistic project budget that compares the two options.  That might not be an automatic win, it will be a lot easier to hire Java talent and easier is always cheaper.  Once you're done, you'll be at peace when you see the boss/customer make the logical decision.  Or have a major selling point to convert them to your point of view, depending on how it turns out. Make sure you're objective, it won't work otherwise.
    Hans Passant.
    • Marked as answer by Zhi-Xin Ye Tuesday, September 09, 2008 11:36 AM
    Saturday, September 06, 2008 1:58 AM
  • There are pro's and contra's using .Net.

    On the plus side.

    1. It is extremely easy to program in .Net, so you will be very productive. Almost no matter what you want to do, you can be sure that there is already a class for it, so it is just a matter of finding it. This is by far the biggest advantage. You will simply reach the marked faster. Your boss will love it.
    2. There is an excellent forum support in case you have any problems.
    3. You are not bound to cryptical languages like Java and C ;-) but can use VB and even Fortran 95 (Intel compiler) or a combination. This enables a better overview and with that less errors and higher reliability.
    4. The automatic garbage collection.
    5. Visual Studio is a very good IDE except for the lack of a "Save Project As" feature.
    6. It is free.
    7. No diversity between different distributions as you often see in the open source world.
    8. It is the future on Microsoft/Intel platforms (PC).

     

    On the minus side.

    1. The intermediate language (IL) and the just in time compilation (JIT) has certainly not made the programs faster - both regarding execution time and load time - just look at Vista! However, to some extent this also apply to Java and any other language with a virtual machine.
    2. .Net code is very easy to reverse engineer, so you need to obfuscate the code for most professional applications. Unfortunately, an efficient obfuscation is not a part of Visual Studio, so One-Click publishing etc. don't do the job.
    3. .Net is not always backwards compatible! A good example is the serial port, which is useless in version 3.5. This is already beginning to create a version hell and Microsoft don't seem to do much about it. Although I have reported the bugs long time ago, we cannot expect any bug fix before SP2 (not SP1) or later. For professional applications, it may be better to build your own classes than using build-in classes, which suddenly don't work any longer. Regarding the serial port, you can solve the problems by compiling to .Net 2.0, but this may force the customers to install more versions of .Net, which they don't want.
    4. The lack of a "Save Project As" feature in Visual Studio makes it rather clumsy to test new versions and make workable projects build on previous projects (you cannot just copy a project). Visual Studio must be the only IDE in the world without this valuable feature.
    5. You cannot make native code in .Net like drivers etc.
    6. As far as I know, .Net is only supported on Microsoft/Intel platforms so the basic idea of the IL has not yet been a success. On the other hand, Java is supported on most platforms.

     

    In the beginning I was very positive regarding .Net and I still use it, but I must admit that the points on the minus side has cooled my enthusiasm considerably!

    Everything should be made as simple as possible, but not simpler.
    • Edited by Carsten Kanstrup Saturday, September 06, 2008 3:18 PM WYSI NOT WYG in the new forum!
    • Marked as answer by Zhi-Xin Ye Tuesday, September 09, 2008 11:36 AM
    Saturday, September 06, 2008 3:17 PM
  • Regarding the IL point #5 , there's MONO by Novell for running it on Linux and there's a flavour of MONO for the Mac. Not 100% of .NET is supported, there are some substitutions, but a significant amount of .NET Winforms and Web apps work. If you signup as a partner with Novell I believe they also offer a code review service whereby they will analyze and tell you how to modify your code to be MONO compliant.

    Regarding the #4, I'm not sure what you're getting at here. The Visual Studio alternative environments that I've encountered all seem to import Visual Studio projects, and as for build management, version control strategies take care of this need if I'm understanding you correctly.

    #3 there are features that break between generations often, with any platform, and unfortunately Microsoft has obfuscated the reality here. Versions 1.0 and 1.1 are the same generation, versions 2.0 and 3.0 are the second generation, and 3.5 is the third generation.

    Btw, Java is intermediate language as well, right? Therefore between choosing Java or .NET you can't argue against virtual machines. The key difference that I'm aware of with .NET is that the CLR is able to customize the code's IL to machine specific when it prepares the code for its first execution, after that it is pretty much as fast as native.

    Vista's performance has nothing to do with .NET.

    Driss.
    Monday, September 08, 2008 1:29 PM
  • 4) I miss a "Save Project As" feature when I want to make a new project similar to one I have already. Since many files are automatically generated, you cannot just copy a project and rename the copy. The new project does not work. You need to build a new, almost empty (not quite empty) project and then copy and paste all the old files into the new project. It is certainly not very clever. Just imagine if Word did not have a "Save As" feature, but only allowed overwriting the previous file. I should be honest to say that because of the many problems with serial port in .Net 3.5, I have not tried Visual Studio 2008 yet, so there is a possibility that some kind of "Save Project As" feature has been added.

    3) Yes, but that does not change the fact that the customer may have to install a previous version of .Net to make a program work. There is absolutely no reason why a simple, standard class like SerialPort should not work the same way in the next generation. If Microsoft wants to make major changes to a class, which may seriously affect the user programs, they should make a new class and give it another name. It is hopeless to test your programs down to details everytime Microsoft makes a new version, SP or generation. The funny thing about it is that Microsoft thinks that the many problems with SerialPort in 3.5 are coursed by other, unrelated, bug fixes, which went into 2.0 SP1 and SP2 - not by the new generation!

    "Therefore between choosing Java or .NET you can't argue against virtual machines."
    Yes, that is exactly what I wrote. Quote: "However, to some extent this also apply to Java and any other language with a virtual machine."

    Why invent .Net if you don't want to use it yourself? I presume that Vista - at least to some extent - is based on .Net.


    Everything should be made as simple as possible, but not simpler.
    Monday, September 08, 2008 2:30 PM
  • I follow you now on #4, though I've never had the need.

    Regarding #3, preaching to the choir my friend. Breaking changes should break and break hard.

    As for Vista... I put that in the MS Bob, Win 95, Windows ME bucket.
    Monday, September 08, 2008 6:20 PM