As far as I’m concerned, .NET Rocks! (and I’m not talking about Carl Franklin’s radio show.) I’ve programmed on many different platforms and in many different languages and studied many more than that, and as far as I see .NET blows everything else out of the water. Though I’ve never actually used Java or J2EE, from what I’ve read about it I believe .NET easily blows it away too. Programming in .NET is just so incredibly elegant and productive, and the framework of prewritten functionality covers broad needs and is intuitively organized given its necessary complexity and depth of scope.
Still, if you read periodicals like InfoWorld or SdTimes, you get the impression .NET is not really that great a platform and is filled with all kinds of serious holes. When they do praise it, they often seem to do so grudgingly. I believe the reasons for this are one or more of the following:
- I think many journalists by their very nature view themselves as the protectors of David in their fight against Goliath. In the software biz there isn’t a more "Goliath" than Microsoft, so they resist praising even when deserved. And when they do praise its often with an implied "Okay you won this one but I know next time you’ll screw my constituents and when you do I’ll be there to pounce",
- Many other journalists are like academics who are don’t have to solve real world business problems hence cloud their analysis with ideology,
- Still more are part of the ABM crowd, that is: "Anybody but Microsoft." They use their pedestal to preach against "The Evils of MS", but are usually savvy enough that it isn’t always glaringly obvious. They are mentally hardwired such that they are incapable of recognizing when MS does a good job, or finally
- They believe Microsoft has too much power hence no matter what MS does, they believe it irresponsible to praise.
So even though I constantly read how .NET is not that great, my experience tells me different; .NET *is* great, and to heck with all those jaded journalists.
That said a few days ago I picked up the July 12th, 2004 issue of VARBusiness magazine and read Carolyn April’s cover story entitled ".Net Now: How Microsoft’s Technology Is Winning Converts." Admittedly jaded from all the other industry press, I subconsciously looked for the .NET bashing as I read. But I couldn’t find any.
More than that, I read glowing praise. Things like:
Despite an abiding love for the Java programming language, Shiah pulled a developer’s 180 at Ascentn’s inception, abandoning J2EE in favor of Microsoft’s .Net framework and Visual Studio .Net tools. … Shiah says. "With .Net, we have been able to bring the cost of a BPM solution like ours down by five to 10 times that of J2EE. Everyone is looking for productivity and efficiency these days. And Microsoft helps you get it."
Wow! "Five to 10 times more productive than J2EE!" WOW! And there’s more (editing for space, not content):
….Net today is catching on like wildfire. … A … Evans Data study … shows a sharp increase in adoption. From spring 2003 to spring 2004, … 52 % … say they use .Net, up from 46 %. … 68 percent … said they plan to … use .Net by 2005. … In May, Forrester Research … found 56 % … consider .Net … primary … for 2004, compared with 44 % for J2EE. … 65 % … working on public-sector projects said .Net was … primary … vs. 35 % for J2EE, while 64 % of business-services … led with .Net over 36 % who led with J2EE. VARBusiness’ … State of Application Development survey … 53 % of solution providers … [used] … .Net … in the past year, and 66 % … planned to … in the next 12 months. "Frankly, we were surprised to see [.Net] as dominant as it was," says Nick Wilcox, a research analyst at Forrester.
Wow again! When VARBusiness’ survey asked why:
… the No. 1 and No. 2 reasons respondents said they chose .Net as their primary development platform were ease of use and quicker time to market, respectively.
They go on to compare to J2EE:
… a J2EE-based application is just plain harder to develop, test and deploy. And the write-once-run-anywhere message .. is, to some extent, a farcical myth. … each of the leading J2EE app servers, from IBM WebSphere to BEA WebLogic, features … proprietary extensions…
On Scalability and heterogeneous IT environments:
… Microsoft’s servers, …, have grown more scalable, enabling … .Net applications that can stand up in an enterprise arena dominated by the J2EE platform. … .Net’s bedrock foundation of XML and Web services are breaking down the natural integration barriers between Microsoft-based applications and other systems, which makes .Net apps increasingly viable for today’s largely heterogeneous IT environments. …
Normally the .NET naysayers, even high profile analysts got in the game:
…says Judith Hurwitz, president of Hurwitz & Associates IT consulting and analyst firm. "Developers like .Net and find it to be very cohesive and easy to build on. And because of the convergence around standards like Web services, third parties are able to build bridges between J2EE and .Net."
And that wasn’t all. There even more gushing about .NET elsewhere in the article! At the end, they did throw in the requisite counterpoint, but even that was watered down and they made it seem the position of the zealots, not the mainstream (note how the IBM partner talks trash on Microsoft even though IBM is as guilty as MS of the same, or at least they were when I worked for them in the 80’s):
… J2EE stalwarts abound, …. To them, .Net doesn’t make the grade. Others just can’t bring themselves to do business with Microsoft or dislike that applications are so tied to the overall software stack. "With any Microsoft product, you can anticipate some limitations that prevent interoperability with other systems. That’s just the way they do business," says Ed Weiss, director of marketing at ADS Retail, an Upper Marlboro, Md.-based IBM partner that sells Java-based, point-of-sale applications. "Quite frankly, .Net didn’t exist when we chose Java in 1997. It was a new player."
Sounds like his best reason for choosing Java was they chose it before Microsoft had even conceived of .NET! ("I’m sure the fact he’s an IBM partner doesn’t taint his view at all, ya think?") VARBusiness goes on to wrap it up with:
At the end of the day, the two development environments will continue to co-exist, but .Net is sending an enticing siren call to ISVs and app-dev solution providers that’s hard to ignore.
Enough said? Kudos to VARBusiness for painting an accurate picture of .NET!
Mike …
I agree that VS 2003 is nice (on the right hardware) but it still carries sigificant negatives.
I am currently teaching a VB.NET and I started with a discussion of the Pros and Cons of VB.NET Vs VB6 (as the course is aimed at VB6 developers). A recent SQL Server Magazine web article said "Why aren’t VB6 developers swapping" and I discussed with the class the fact that nothing yet has convinced me to attempt porting my VB6 apps to VB.NET.
They agree (with me and the postings in response to the article). It depends on what you are doing. ASP.NET is a HUGE improvement over ASP but it is also a pain in the bum for some jobs. Development for WinCE and PocketPC is nicely integrated.
But for desktop apps I’ll stick with VB6.
Faster development, faster execution, wider range of workstation deployment options, can’t be de-compliled (don’t need an obfuscator), edit and continue. OK, so I don’t do a lot of object-oriented work and I am not doing a lot of web / SOAP (all areas where VB.NET has advantages) but VB.NET / VS 2003 has limitations for my bread-and-butter … Windows apps.
When VB.NET "Catches Up" with VB6 in a few of these areas then … it will be great.
Dale
Dale,
Thanks for the comments. Ironically your comments about VS 2003 carrying significant negatives and your examples were based on a comparison of VB.NET with VB6; that was not the focus of the VAR Business article. Instead VAR Business was comparing .NET with Java/J2EE.
In VAR Business examples, VB6 wasn’t even a contender; VB6 can’t be used for the scale of enterprise apps for which people can use Java/J2EE. Evidently according to VAR Business .NET can also be used for enterprise scale apps, even more effectively than Java/J2EE at least as far as those they interview were concerned.
But I’ll jump back to the issue you raised VB.NET vs. VB6. You stated "I discussed with the class the fact that nothing yet has convinced me to attempt porting my VB6 apps to VB.NET." and "But for desktop apps I’ll stick with VB6." There are two issues there and I’m not sure which one you mean, or if you mean both.
Would I advocate porting a working VB6 desktop app to VB.NET? Only if I needed significant enhancements to it that VB6 could not easily provide. Even then I would recommend rewriting in VB.NET, not porting. The two really are different languages.
The other issue is, "Would someone be better off creating a new desktop app in VB.NET or in VB6?" There are concerns that transcend the development tool such as deployment issues and resources required on the client machine. If my target platform was older machines I would probably agree with VB6 would (sadly) be better. If you needed a quick and dirty app that wasn’t expected to be used for long and didn’t need to interoperate with anything else, and the developer knew VB6 but not VB.NET, then okay, VB6 would be better.
But for almost every other reason, VB.NET is light years better than VB6. I contend that anyone who thinks otherwise is simply ignorant (please read "ignorant" without any negative connotation; I mean they honest don’t know what they don’t know.) People often resist change and downplay any change they don’t yet comprehend. I respectfully submit that was the case with you and those in your training course.
When the father of structured programming Edsger Dijkstra proposed that programs would be more reliable if constructed using structured control statements instead of GoTos, most developers attacked him, told him he was crazy, and tried constantly to discredit his theories. Today only an uneducated man or a fool would say that Dijkstra was anything but correct. I believe the same will be said of VB.NET vs. VB6 ten years from now.
You can "OK, so I don’t do a lot of object-oriented work…"; a friend of mine in the USA has a saying "Besides that Mrs. Lincoln, how was the play?" (For those who don’t know to what this refers see http://americanhistory.about.com/library/weekly/aa040701a.htm).
Object orientation *IS* the main reason why you would move to VB.NET. It makes everything *so* much easier. And the advanced object orientation of VB.NET makes the creation of reusable component much easier. That’s important for 3rd party component providers, be they commercial or open source, but also the every day programmer because they can use the commercial or open source components even if they don’t code using OOP (but why wouldn’t they?!? I can’t imagine coding without OOP; VB.NET’s OOP really set me free compared with the shackles of VB6.) There are a ton of really good freeware and open source not to mention commercial .NET components.
Continuing on, attributes, reflection, and interfaces (much simplified from VB6/COM) also make it much easier to create reusable components. What’s more, the features build into .NET and VB.NET makes it easier to create truly robust applications and components. .NET components are far less likely to contain bugs than ActiveX components written for VB6. And well written .NET apps are far less likely to have robustness issues than VB6 apps.
Plus there are many, many other reasons why VB.NET is better than VB6 for desktop apps, but I have to move on to doing something that pays the bills so I’ll have to leave you with just the few things I already wrote about VB6 and let others chime in about why VB.NET is better for desktop apps than VB6, if they want.
A strong developer on staff here who previously coded in VB6 now codes almost exclusively in VB.NET. He says he is far more productive on VB.NET now that he has gotten past the learning curve than he could ever have been when using VB6. And I hear it over and over again, in the blogsphere and elsewhere. There’s a tidal wave of belief that VB.NET is better than VB6; just look around.
Now don’t get me wrong; VB.NET is harder to learn than VB6 (that’s assuming we know how hard it would be to learn had we never learned VB6 to begin with.) Take a look at my prior posts where I blogged about the difficulty to learn .NET: http://www.mikeschinkel.com/blog/SearchView.aspx?q=vbscript.net Chances are the bad habits formed by using VB6 are masking many people’s ability to easily learn VB.NET. But by many accounts, it appears much of the difficulty is going away: http://www.panopticoncentral.net/archive/2004/08/09/1553.aspx
I strongly contend that just because something is more difficult to learn shouldn’t be reason to discredit its other strengths. IMO VB.NET and C# are the strongest all-round software development tools that have ever been created. Bar none. And that definitely includes comparison to VB6. (By "strongest", I mean to incorporate a lot of things; 3rd party support in books, conferences, websites, etc., the number of users, the general attitude of developers towards the tool, the strength of the vendor, and at lot more in addition to just the tool itself. But if I had to compare just the tools themselves, they still might be #1 in my book.)
Ironically, you mention ASP.NET being better than ASP. That’s one area where I don’t like .NET. I think ASP.NET is over-architected and required compromises in the wrong areas. I wish that I could find the time to do justice in a series of blog posts explaining what it is I don’t like about ASP.NET and how it could be fixed, but I haven’t had the time yet. But given that ASP.NET is Microsoft’s vision of web apps, and I’m a .NET centric-developer, it looks like I’ll be learning to like ASP.NET whether I like it or not. :-)
In summary, I really hope you take a long hard look at VB.NET for desktop work. I expect you will do like I did many years ago after hating Windows and loving DOS. I finally realized that it was just my lack of experience with Windows and my familiarity with DOS that made me think that Windows didn’t make sense. Once I got past the "It isn’t what I’m used to", I was hooked and never looked back. I think that at some point in the future you’ll come to the same conclusion with VB.NET. Let me know when it happens… :-)