The goal of this paper is to provide a business overview of Microsoft’s .NET initiative, how it ties together a variety of products into a corporate strategy, how it was used to respond to competitors, what strategies Microsoft used to drive .NET forward, and what problems occurred during its delivery.
The focus of this paper is primarily on business issues and strategy. It is intended to provide an analysis on the motivations, methods, and means that drive .NET. The component technologies and products of .NET will be mentioned here but not covered in detail. Most product releases are incremental in nature. .NET was not so much a product as a broad vision that included a variety of incremental products in conjunction with multiple technology initiatives. Its sweeping scope makes it truly unique among business strategies in the high tech marketplace where most strategies are geared towards single product lines and are seasonal in nature. The widespread nature of .NET and its substantial impact on the IT industry makes it an interesting topic to study.
This analysis will first cover the different aspects that make up the whole of .NET: the products, the technology, and the branding. Next it will cover the reasons why Microsoft released .NET as well as its value proposition to customers and adopters. This analysis will also cover the various strategies for rolling out .NET, and some problems encountered during the roll out.
An Overview of .NET
.NET is an example of a revolutionary strategy and a major innovation. .NET is a vision, not a product. It is a brand, and a platform, and a strategy that Microsoft leverages against its competitors in a variety of product areas.
Replacing an Older Generation
.NET is a framework that replaces a variety of different Microsoft technologies introduced in the 90’s: Windows DNA, COM, ASP, ActiveX, ADO and others. Tens of thousands of applications are evidence that these technologies were successfully adopted by the developer community. Even with all these technologies to build on, .NET will fundamentally change the way that software for Windows is designed, coded, and deployed.
Web Services at its Heart
The fundamental new technology at the core of .NET is web services. As the name suggests, web services are new functions to create internet-aware applications. Web services are business and consumer software applications, delivered across the internet that let users access and share data across devices, databases, and organizations. The introduction of Microsoft web services is an acknowledgement that the future of applications has moved from desktop GUI applications to web-centric browser based applications run across the internet, on .NET enabled servers. The introduction of web services is also an acknowledgement that rival technologies such as Java have to be dealt with.
Strong Branding
.NET is a brand used to pull together otherwise distinct technologies:
* The Common Language Runtime (CLR) – a set of programming languages and a common development framework that allows all .NET development tools to access all other .NET building blocks
* ASP.NET – development libraries for the Microsoft web server
* ADO.NET – development libraries for the next generation of database management
* Windows Forms – development libraries for sophisticated GUI’s over the web
* Enterprise Services – development libraries for business-critical high performance transaction services
* The .NET Compact Framework – Scaled down development libraries geared for use on mobile phones, PDA’s, set-top boxes and other small internet-capable devices
* My Services – A set of web services intended to provide an easy means of accessing frequently web data. This was later cancelled after much controversy over privacy issues.
A Tools Strategy
The Common Language Runtime (CLR) was a major advance from the previous Microsoft development environment and was also a move to counter the threat from Sun’s “write once, run anywhere” Java development environment. The introduction of Java meant that the Java code written on a PC could also run on Linux, Novell, Macintosh, Sun workstations, and even IBM mainframes. Java threatened to destroy Microsoft’s competitive barriers. Java started as a client-oriented application language but evolved to support web services and eventually provided a rich set of tools to create web-centric applications. Since its introduction Java has also gained great market share in back office operations, further cutting into Microsoft’s profits.
Countering Rival Technologies
CLR adopted most of Java’s features and virtually eliminated Java’s competitive advantages. Specifically, CLR moved to a “managed code” paradigm, where applications run within a safe virtual area. It also adopted Java’s superior memory management garbage collection techniques, increasing reliability of applications. CLR provided a common and open semantic foundation for more than a dozen different programming languages, each able to access the core .NET operations. It was Microsoft’s intention that its tools still be favored but developers but that developer would be free to use alternative programming languages to write .NET applications.
CLR also introduced C#, a programming language with close similarities to the Java programming language. C# is the successor to Microsoft’s legally challenged J++ Java development environment and has quickly gained popularity.
Motivations for .NET
.NET provides profound benefits to Microsoft. .NET provides Microsoft with its next generation of products, services, and subscriptions. It brings together a variety of products under a single brand and thus reinforces the perception of interoperability. Most importantly it addresses challenges by competitive technologies.
Neutralizing Java
Microsoft has used the introduction of the CLR and C# to address and neutralize the challenge of Java and the sector of back office enterprise services that Java enabled. When Java was adopted to perform back-end server functions in the form of J2EE it was a powerful, scalable, and inexpensive means of providing web services. J2EE was a powerful enabling technology for many of Microsoft’s key competitors such as Sun, Oracle, Novell, IBM, and Linux to name just a few. Providing a better alternative to J2EE was of great strategic importance to Microsoft. To leave the back-end server market vulnerable to J2EE was to leave the door open to a classically disruptive technology that could continue to grow and displace its products. Microsoft had to respond.
Dominating All Web Services
.NET was also very important as a means of keeping customers on various Windows platforms, whether on the Windows desktop, Windows Server, or Windows Compact Edition (CE) platforms. Linux was threatening to emerge as a cheap desktop alternative. Linux and Solaris were both alternative server platforms taking business away from Windows Server products, Linux at the low end, and Solaris at high end. Palm dominated the PDA platform, and Symbian and Java competed with WinCE for the remaining PDA market. Microsoft needed a significant value proposition to prevent the erosion of all segments of its valuable Windows platform. If its various Windows market shares were compromised, Microsoft would also loose market share for its Office, applications, and services profit centers. .Net was a means of protecting Windows.
The Key Value Proposition
.NET made all the respective .NET technologies available on all versions of Windows using any of the CLR tools. Web services running on Windows Server could now be available on Windows XP as well as PDAs running WinCE. .NET was the means of providing a barrier to exit and further locking customers into Windows.
Better Security
.NET significantly improved the value proposition to customers. The proliferation of internet viruses, worms, and security exploits showed the need for better overall security. The managed code framework of .NET provided a means of writing more secure applications free from the exploits found in the previous generation of Microsoft products.
“DLL Hell” Solved
.NET also solved the problem of “DLL hell”. This is the problem created when an application installs a DLL library with the same name as a previous DLL library but with different functions. Over time it is almost guaranteed that an application, Microsoft or 3rd party, will overwrite an existing DLL in use by some application. This inevitably leads to crashes, instability, and general chaos. .NET applications are written to prevent this nightmare scenario and will be of great benefit and peace of mind to future Windows users. This feature alone was a major selling point.
Next-Generation Development Tools
A benefit not inherent in .NET but certainly related is Microsoft’s creation of a set of powerful, next-generation .NET development tools. Microsoft has long been the leader in developing powerful, usable, and consistent integrated development environments (IDEs) for Visual Basic, Visual C++, and Visual J++. Microsoft declared that its .NET tools would “Streamline the programmable surface area of Windows, and enrich the user experience.”
It is widely acknowledged that Microsoft’s tools are superior to its competitors’ offerings in both learning curve and productivity. Microsoft made a prolonged and concerted effort to extend its IDE’s so developers could have access to core .NET features. Microsoft also opened access to the CLR so that 3rd party developers could create their own .NET development tools. In this way .NET benefited greatly from a wide variety of next-generation of development tools. By opening its interface Microsoft was able to deflect criticism from the growing open source movement about the proprietary nature of .NET.
A Single Internet ID System
One .NET feature which was to benefit end customers across the internet was Passport. Passport was a web service that would allow users to have the same user ID and password across the entire internet for services like web mail, purchases on eBay and Amazon, and home banking. Managing multiple internet passwords is a problem that Passport was designed to solve. This service became mired in controversy and was later cancelled. Its failure will be covered in more detail later in this paper.
Strategies for Introducing an Innovation
Introducing such a radical and all-encompassing platform strategy required a phenomenal effort by Microsoft. With a few exceptions the company has done an excellent job of educating customers and managing the transition from the old technologies and product to .NET.
A Big Introduction
.NET was initiated in 2000 with great pomp and circumstance. Any actual products were still years away but the announcement started the important process of educating customers. It was also effective at instilling fear, uncertainty, and doubt in its competitors’ camps. Microsoft was effective at articulating its strategy.
Free Education
Once the first set of Beta tools were available Microsoft began promoting them heavily. The company held numerous free seminars across the country to evangelize the new platform and tools. It offered effective incentives such as free training, free software, free tools, free t-shirts and other giveaways. It did this relentlessly for several years.
Microsoft held numerous online promotions to keep developers’ attention. It used the Beta program to gain feedback from its intended customers and to shape and optimize its products. When the Visual Basic .NET development tool was in Beta, its features were substantially changed based on feedback from users.
Many Alliances
Microsoft worked diligently to create alliances with online developer forums, and local user groups. The Microsoft .NET support area lists many dozens of support forums and news groups for developers to find community support. There are also several monthly .NET magazines publishing informative articles and news.
Strong Branding
Microsoft used branding as a means of pulling together disparate product lines and creating consistency. It re-branded parts of its pre – .NET product line even though these products have little in the way of .NET features. This branding has helped create the impression of special interoperability of the various .NET components.
Use of Standards
The company successfully leveraged multi-vendor standards such as XML, SOAP, WSDL to avoid the appearance of being too proprietary. This is somewhat ironic since the core of .NET is truly 100% proprietary and offers no substitutes once you adopt it. Although .NET makes liberal use of standards, it is essentially a lock-in mechanism for Microsoft products.
Free Runtimes
The company distributes the .NET runtime free to users running older versions of Windows. In this way .NET will support legacy operating systems. It also provides free, time-limited trial versions of virtually all of its .NET products. .NET will run side by side with the legacy products it replaces, reducing the migration risk. This means that companies and users can make a gradual migration and reduce the cost and risk of adopting .NET technologies
Clear Migration Strategy
Microsoft has provided a very clear migration strategy for developers. There has never been any question about the direction and detail of the migration path. Microsoft provides literally dozens of white papers discussing various migration options. This has greatly decreased any uncertainty and has greatly aided in corporations’ ability to do the necessary large scale planning for adoption and migration.
Some Failures and Criticisms of .NET
Security and Privacy Concerns Sink Passport
Passport was intended as a subscription web service Microsoft would sell to other companies. The services were intended to provide three key features. A single sign-on anywhere on the Internet, a secure and private electronic wallet function for internet purchases, and a secure and censored Kids’ passport service. According to an FTC commission investigating security and privacy concerns regarding Passport, Microsoft made false claims that:
- Passport made reasonable and appropriate means to insure security and confidentiality to protect personal information and credit card information of Wallet users.
- Purchases made using Wallet were more secure than purchases used without Wallet.
- Passport did not collect personal information other than that disclosed on its privacy statement.
- The Kids’ Passport provided parental control over what content web sites could collect on their children.
(http://www.ftc.gov/opa/2002/08/microsoft.htm)
Microsoft was found guilty and settled these charges with the FTC. The negative press leading up to these charges was a major cause for Passport’s demise. In addition, numerous security breaches in the Passport web services gave a bad impression to potential corporate users. Passport was demoted in status to an internal product and later killed.
Confusing Name Changes
.NET has become a powerful brand with the full force of Microsoft marketing behind it. The first version of the enterprise server operating system known as Whistler was originally scheduled to ship in 2002 and was to be known as Window Server 2002. After a year of development and development delays, the product was provisionally renamed Windows .NET Server 2003 to emphasize the .NET branding. Additional development delays and changing internal schedules pushed a lot of the .NET managed code features out of that server release into the next release of Longhorn currently scheduled for 2006. The .NET brand was dropped from the product name and it was released as Windows Server 2003. While this server release has received widespread praise for the .NET 1.1 features it does have, its loss of the .NET branding created a lot of uncertainty among potential .NET adopters who were watching and waiting for the new .NET features.
Paul Randle, Microsoft’s server product manager said, “The aim of the name change is to clarify the messaging around the product. We felt that .NET was potentially confusing to customers because we were using it almost as a version name , whereas the .NET is an entity in its own right” This name flip-flopping provided fodder for Microsoft’s rivals, eager to point out problems in .NET.
Problems Overhauling Visual Basic
Visual Basic was the single most popular development tool for the previous generation of Microsoft developers. The transition to its successor, Visual Basic .NET was not without some problems. The architects of Visual Basic changed many aspects of the language including even the fundamental semantics that had been constant since the language was first released 12 years ago. When Microsoft released an early Beta version of Visual Basic .NET, it changed how developers used the boolean operators for True and False. The outcries from the development community caused this new method to be withdrawn in the next Beta release. It is still the case, however, that virtually every Visual Basic program needs to be rewritten to run under Visual Basic .NET.
Version Confusion
An issue that development companies complain about today is which version of .NET they should support in their software. There are now three different versions of .NET each with a different set of features: 1.0, 1.1, and 2.0. Version 1.0 is the most widely deployed, being accessible on Windows 2000 and up. Version 1.1 has more features, comes included with Windows XP and Server 2003 but is not as widely deployed. Version 2.0 will be released from Beta in the next few months. Some companies have taken the more cautious strategy of writing their .NET code to support only the features provided in .NET 1.0. This cautious adoption provides maximum compatibility but could slow the adoption of subsequent versions of .NET.
Summary
Seldom does one see a corporate vision with the breadth and depth of Microsoft .NET. It had to be large enough to encompass the entire operating systems division as well as both the enterprise and tools divisions. It had to be tactile enough to counter the disruptive technologies of Java and Linux and strategic enough to counter the enterprise offerings of Microsoft’s fierce competitors. Microsoft put its well-practiced marketing methods to good use with its usual promotional activities and did so in a grand scale and a well-orchestrated manner.
Microsoft has shown that its strengths are not in introducing innovative technologies or revolutionary products. Its strengths lie in its ability to pick and choose technologies and products from the marketplace, to integrate them into its own product lineup and to execute brilliant market strategies against its competitors. Microsoft has shown yet again how it can formulate a strategy across a large part of its product lineup and successfully achieve that strategy.
Timeline of .NET
June, 2000 – Microsoft announces its .NET vision of future computing
July, 2000 – VB.NET Beta is released
November, 2000 – Visual Studio Beta 1 is released
March, 2001 – Hailstorm is announced and showcases partners
March, 2001 – eBay announces its intent to use .NET and Passport
September, 2001 – Passport is expanded to allow internet single sign on
January, 2002 – .NET 1.0 is released to public, Visual Studio .NET development tools
April, 2002 – Hailstorm (aka .NET My Services) is cancelled
August, 2002 – Microsoft settles with FTC regarding poor security and privacy for Passport
January, 2003 – Windows .NET is renamed as Windows Server 2003
April, 2003 – .NET 1.1, Visual Studio 2003, Windows Server 2003 (aka Windows .NET) is released
August, 2004 – Microsoft demotes Passport to be an internal product only
Summer, 2005 – .NET 2.0, Visual Studio 2005 to be released
2006 – Anticipated Longhorn server release
References
Busby, Norton, Personal Interview, November 23, 2004, Tampa, FL
Chappell, David, “Understanding .NET”, Addison-Wesley, 2002
Chappell, David, Personal Email, 11/22/2004
Chappell, David, “NET & Beyond: One more time: What exactly is .NET?”, 8/1/2003, http://www.adtmag.com/article.asp?id=8003 , adtmag.com
Estes, Byron Taylor and Oriel Maxime, “J2EE vs .NET: The choice depends on your needs”, Computerworld, August 19, 2003,
http://www.computerworld.com/developmenttopics/ development/story/0,10801,84155,00.html
Farrell, Nick , “Microsoft gives up Passport world domination wheeze”, October 27, 2004, www.theinquirer.NET/?article=19227
Hunter, Chad, Personal Email, 12/7/2004
Markoff, John, “TECHNOLOGY; Microsoft Has Quietly Shelved Its Internet ‘Persona’ Service”, New York Times, April 11, 2002, http://query.nytimes.com/gst/ abstract.html?res=FB0915FD34590C728DDDAD0894DA404482
Mohr, Jakki, “Marketing of High Technology Products and Innovations”, 2nd Edition, Pearson Prentice Hall, 2004
Pressman, Aaron and Keith Perine, “Legal storm brewing over Microsoft’s HailStorm”, The Industry Standard, March 20, 2001, http://www.infoworld.com/articles /hn/xml/01/03/20/010320hnmicsun.html?0320alert
Wong, Wylie, “Microsoft reveals plans for Web-based software services”, June 22, 2000, http://news.com.com/2100-1001-242273.html?legacy=cnet
Microsoft Settles FTC Charges Alleging False Security and Privacy Promises, August 8, 2002, http://www.ftc.gov/opa/2002/08/microsoft.htm
About the Author
Andrew Hudson is a graduate student at the University of Tampa’s Technology and Innovation Management Master’s program (MS TIM). He has a degree in computer science from Rochester Institute of Technology and is currently an IT consultant in Tampa, FL. [email protected].
Special thanks to David Chappell and Chad Hunter for providing their insights. Thanks to Dr. Glen Taylor for the New Products class that inspired this article
Copyright © Andrew Hudson, 2004, All Rights Reserved
If you would like to see your thoughts or experiences with technology published, please consider writing an article for OSNews.
Where did this text came from?
Microsoft website?
How can .net be so secure if anyone can just decompile the .net binaries and just expose my code?
“It is widely acknowledged that Microsoft’s tools are superior to its competitors’ offerings in both learning curve and productivity. Microsoft made a prolonged and concerted effort to extend its IDE’s so developers could have access to core .NET features ”
mmm I expeted a neutral article about the .Net framework but after reading it. I am certainly that you are a Microsoft fanboy :s, common its just like a Microsoft Ad!
Java is proprietary yet those who claim they are free software supporters support it. CLI is a standard.
Name one (1) IDE that is better than Visual Studio.
edlin RULEZ…
Name one (1) IDE that is better than Visual Studio.
IntelliJ IDEA
Eclipse
Delphi 2005
There’s three!
“Name one (1) IDE that is better than Visual Studio”
IntelliJ (for Java though) )
Name one (1) IDE that is better than Visual Studio.
Yeah, Visual studio, and .NET in general, are the things that MS has certainly done very well. VS is Better than Java IDEs, C# is better than Java etc. also because they were intentionally meant to improve those Java-based tecnologies (i.e. best Java and C++ features together -> C#). Why would Mono & dotgnu people try to implement or copy the same ideas to their products so much if it wasn’t good?
That’s right. Maybe they implemented Mono and DotGNU so they could use and create webservices.
Don’t Net is Secure? Yeah right! Last I tried you can p/invoke win32 api calls from it ergo its no safer than the existing win32 API. Do you honestly expect virus writers not to p/invoke to hack your system?
MS IDEs are not bad but they are certainly not the best though most bloated perhaps. Delphi 2005 for one is far easier to use and every bit more productive.
A word about managed code and especially “Dont Net” in particular – they are extremely inefficient and abysmally slow in execution compared to unmanaged. If you think Office is slow and bloated now wait for the Dont Net version – it will be at least 3x slower!
Another myth I would like to dispell is that managed code is claimed to be a more productive environment than unmanaged ones – thats total cobblers as anyone who has used Delphi knows you get the fastest and most productive environment without all the runtimes, frameworks etc.
“Name one (1) IDE that is better than Visual Studio”
Eclipse, but mainly because I am a Java developer. I have experimented somewhat with c# but in my opinion it is just a cheap ripoff of Java. I don’t know about coding in c(++) with visual studio.
But the point remains the author only mentions positive facts and how great Microsoft products are. I don’t want to look like a total Microsoft hater orso but its just the same tha what I would read in a cheap microsoft ad!
“Java is proprietary yet those who claim they are free software supporters support it. CLI is a standard.”
You miss the point. CLI was a token standardization to fool people, while Microsoft goes on and creates a gigantic non-standard API system to make that CLI useful. Does Microsoft provide conformance testing for the .NET _platform_?
Java is actually quite non-proprietary. Sun controls the brand, the conformance tests, and provides the reference implementation, but anyone is completely free to implement Java and license the brand. This is light-years ahead of .NET, where lots of companies like BEA and IBM are independent vendors for J2EE and actually compete against Sun for market share. The source code to a large part of J2SE is also available, which is quite nice for troubleshooting.
Can I put my term papers on OSNews too?
I think you are too quick to brand the author. The article was pretty critical of MS for the most part, clearly pointing out the lock-in strategy that .NET is built on. If anything, it leaned to the anti-MS side. At worst, it is merely neutral.
Is Microsoft going to succeed in making .Net a hit and at the same time keeping it under control? I think so… To a large extent.
Part History, part marketing material, and part honesty…
“Although .NET makes liberal use of standards, it is essentially a lock-in mechanism for Microsoft products.”
Its not the rah rah MS rulez article that some of you seem to think it is. Read the whole thing.
I say either be impartial, write for it, or write against it. This seems a little too much of all of the above.
“The introduction of Microsoft web services is an acknowledgement that the future of applications has moved from desktop GUI applications to web-centric browser based applications run across the internet, on .NET enabled servers.” – no way.
How about all this stuff with Smart Client? May be web services are for opposite goals? Smart cliens can communicate with a server using web services and render of a client.
Here is what Bertrand Meyer said about .net:
http://archive.eiffel.com/doc/manuals/technology/bmarticles/sd/dotn…
And since unlike most of the oss trolls around here he actually knows what he is talking about, i’ll go with his opinion.
Truth is, that politics aside .net is quite good.
>But the point remains the author only mentions positive facts and how great Microsoft products are.
As the author of this article I would like to say that I have been critical of various Microsoft products and technologies and I am by no means anyone’s fanboy. I cut my teeth on BSD UNIX, I have earned a paycheck developing in Java as well as writing Microsoft applications. I have developed on both proprietary and open source platforms.
As the first paragraph points out, this article is about the business strategy of .NET, not about its particular technologies or even their implementations. If you keep reading into the middle of the article, I think what you have to give Microsoft credit for is adopting their competitors’ strengths and using their competitors’ weaknesses. This is the brilliance of .NET, it’s the business strategy, not the technology. It’s not whether .NET runs slowly or whether non-managed code can circumvent security measures. It’s about getting and keeping .NET in large and medium sized businesses.
This is what the Open Source community should learn. Microsoft is a reactive institution and has a brutal defense of thier product lines. And they have billions of dollars to spend on their strategies.
“How can .net be so secure if anyone can just decompile the .net binaries and just expose my code?”
http://msdn.microsoft.com/library/en-us/dotfuscator/dotf3e5x.asp
.NET is only free if your time costs nothing…
(sorry, someone had to say it)
Haven’t some predictions of Linux come up with a number like 28 *billions* of dollars by 2008… (Googles)…
Oops, it seems to be more. 36 billions. See:
http://www.webwarrior.net/modules.php?op=modload&name=News&file=art…
So who is going to win this battle of numbers and advertisements.
I’ve got some coins on Linux. 🙂
A word about managed code and especially “Dont Net” in particular – they are extremely inefficient and abysmally slow in execution compared to unmanaged. If you think Office is slow and bloated now wait for the Dont Net version – it will be at least 3x slower!
Uninformed lie, plan and simple. Both C# and Java programs are close to C/C++ speeds on most general apps. Memory usage is another story.
Another myth I would like to dispell is that managed code is claimed to be a more productive environment than unmanaged ones – thats total cobblers as anyone who has used Delphi knows you get the fastest and most productive environment without all the runtimes, frameworks etc.
I’ve never used Delphi, but you’re telling me that it’s productive because it doesn’t have a framework?
Eclipse, but mainly because I am a Java developer. I have experimented somewhat with c# but in my opinion it is just a cheap ripoff of Java.
Another bitter java developer who can’t stand that C# and the CLR are a little bit better than Java and the JVM and really can’t challenge that on technical arguments, so is called “a cheap ripoff”. Weakness.
You miss the point. CLI was a token standardization to fool people, while Microsoft goes on and creates a gigantic non-standard API system to make that CLI useful. Does Microsoft provide conformance testing for the .NET _platform_?
Oh yeah…Gates and company were gleefully rubbing their hands together while concocting their Dr. Evil plan to fool people by releasing ecma 334 and 335. Any more insightful comments from you?
And since unlike most of the oss trolls around here he actually knows what he is talking about, i’ll go with his opinion.
Truth is, that politics aside .net is quite good.
Yeah, it’s quite good…nothing revolutionary, but a step up from Java and the JVM. Of course the Microsoft haters don’t even challenge .NET on the technical merits, so will scream lock-in and other assorted kook conspiracy theories about world domination.
I guess they hate Mono too, because it’s Microsoft technology
Actually almost ANY sentence!
>…future of applications has moved from desktop GUI >applications to web-centric browser based applications run
>across the internet, on .NET enabled servers.
All the future applications??? 😉
>CLR adopted most of Java’s features and virtually eliminated
>Java’s competitive advantages.
Apples to bananas – should be readed VM, not Java…
>It also adopted Java’s superior memory management garbage
>collection techniques…
Parallel GC please? Still several years behind…
>J2EE was a powerful enabling technology…
Where are the all those IBM, BEA, Sun, Oracle, SAP, Resin, JBoss, Jonas… now? It’s funny to here about J2EE in the past anyway…
>Microsoft has long been the leader in developing powerful,
>usable, and consistent integrated development environments >(IDEs) for Visual Basic, Visual C++, and Visual J++
The best!!! Microsoft Visual Basic is the best of all Visual Basic in the world! 🙂
>It is widely acknowledged that Microsoft’s tools are
>superior to its competitors
Well even it has been posted before here… Just NOT!
I’m still waiting the Microsoft fix a 2 years old bug in Visual C# ASP – when you are trying to make html 4.0 compatible page with css styles it just rip it all after reopening a project! The solution proposed by Microsoft – don’t do it! Do you get it? You can’t do your ASP.NET html 4.0 compatible!
>One .NET feature which was to benefit end customers across
>the internet was Passport
That’s true – WAS.
>Passport was a web service that would allow users to have
>the same user ID and password across the entire internet >for services like web mail, purchases on eBay and Amazon.
Not the best example. As far as I know eBay uses Java. Not sure about Amazon (but not Windows anyway).
I’m tired, sorry…
NET has a long long way ahead and not a fact that tomorrow Microsoft “invent” a new, better cool technology (i.e. longears) and AGAIN abandon it’s customers. Amen.
Now that the author replied here I figured that it might actually be worth to read the article and I was not disappointed. How anybody can accuse the author of being a Microsoft fanboy is beyond me.
It really is a good overview over Microsofts strenght, if you want to call them that way and bussiness practices.
“Microsoft has shown that its strengths are not in introducing innovative technologies or revolutionary products. Its strengths lie in its ability to pick and choose technologies and products from the marketplace, to integrate them into its own product lineup and to execute brilliant market strategies against its competitors. Microsoft has shown yet again how it can formulate a strategy across a large part of its product lineup and successfully achieve that strategy.”
Unfortunately nobody picked up on what this article was really about yet and we were instead treated to the old boring MS vs. M$ flamewars.
>Unfortunately nobody picked up on what this article was really about yet and we were instead treated to the old boring MS vs. M$ flamewars.
Amen to that, Brother!
Let me point out some of the key failures of .NET:
It´s not even platform independent from a MS OS point of view. Certain parts (specifically, the EnterpriseServices Namespace and others) really heavily on OS resouces (COM+, for this case). That means your .NET application might not even run on Windows 2000 to the full extent. JAVA has proven that a lot of the services offered by EnterpriseServices can be implemented platform independent.
And I don´t want to even think about .NET 2.0, or whatever will come AFTER Longhorn has shipped. I fully expect that the then new “.NET” will be incompatible with Windows XP or Windows 2003. On the same track, there are parts of .NET which might not be continued in furture versions. Talk about vendor-lock-in?
C# is some nice cross between Java and C++. But why, for god´s sake, would anyone introduce the concept of “unsafe” code into an otherwise nice and secure language?
Oh yeah, web services. Just who is using them? And bravo, brilliant inter-op…
I think the artice itself is quite all right, it represents large parts of MS business strategy.
And for my part, I was quite impressed when trying COM+ via C#. Probably by far the (easiest) way to do, even without VS. But even though I think .NET is the way to go for windows programmers (and a lot of smaller freeware apps are going .NET), I prefer Java. Even though it´s less appealing for desktop programming (although SWT is looking well in that area), it offers me plenty of choices: Lot´s of different IDEs (and programming concepts), lot´s of different APIs for allmost everything (XML e.g.), and it´s a lot less “dirty”.
And criticize where you (MS) have failed with .Net and what’s the next big step to improve it. I’m mostly interested in the later. What is, is. What will be is what is interesting.
For example, what are the expectations for Longhorn once it’s stablished, from the .Net point of view.
C# is some nice cross between Java and C++. But why, for god´s sake, would anyone introduce the concept of “unsafe” code into an otherwise nice and secure language?
Is it any less unsafe than JNI? Of course C# has a superior system of calling native code.
I liked very much of this article. It is not M$ propaganda but presents what M$ made to lock people to windows platform.
Unfortunatelly there are some M$ fanboys like Miguel Icaza who thins .Net is good for linux and free software.
Free software community should made another alternative, cloning Java and completing the features to be comparable (but not compatible) with M$ .Net.
The unsafe code blocks are one of the best things about C#. Take webcames with java. Generally you can only access them via pointers. If you want some functionality that deals with webcams, you have two choices: 1). hope Sun has provided some API support for it, 2). forget about it. If you want to do anything low level, this is a problem that shows up again and again. Unsafe code blocks are the solution to this problem.
Another very useful property of them: If you’re very concerned about efficiency, you can just drop down and take care of object deletion yourself rather than wait for the garbage collector to do it for you.
Finally, it’s not like anyone is forcing you to use unsafe code blocks. VS encourages you not use them and you have to set a compiler flag to use them at all.
In other words, it’s formalized vaporware. 🙂
CLI is an acronym for “Command Line Interface.” What you are meaning to refer to is “CLR” or “Common Language Runtime.”
Free software community should made another alternative, cloning Java and completing the features to be comparable (but not compatible) with M$ .Net.
And when are we supposed to start using your hypothetical framework that competes with Java and .NET. 20-30 years from now? Think before you type.
What I’d like to see is an overview of the .NET platform in general. Something that isn’t tied to MS technologies or keeps referring back to it. .NET is supposed to be platform-agnostic (or an independent platform in itself that can interoperate with others).
I’d like to see what .NET has to offer for software companies that have no intention of developing on MS platforms in particular.
I’d like to see what .NET has to offer for software companies that have no intention of developing on MS platforms in particular.
First I’d like to see a company that “has no intention of developing on MS platforms in particular”. Sounds like development platforms is the least of their worries.
Check out mono http://www.mono-project.com. Most of the framework is there. Windows Forms is getting a managed rewrite since they screwed up and chose a Wine-based implementation before. Most of the Microsoft namespaces won’t be there, but you don’t really need them. ASP.NET is there I think. Not sure about ADO.NET.
Is it any less unsafe than JNI? Of course C# has a superior system of calling native code.
Of course JNI is safe… it doesn’t work Actually I’m not kidding too much there. Anything other than “Hello World” using JNI can be a bit of a nightmare, especially as far as memory management goes. You have to make sure that every variable used in the native code has a Java object referencing it, else it’s liable to get garbage collected and bring the house down. I’ve found that this particular issue is an awful pain to debug.
I’ve only used Mono’s implementation of native code interface (not played with .Net itself), and i have to say it’s much nicer. I believe that this alone will cause Mono/.Net to be a more popular option than Java on the desktop.
I still prefer to write my server side Java…. but that’s another story…
“CLI is an acronym for “Command Line Interface.” What you are meaning to refer to is “CLR” or “Common Language Runtime.”
CLI = Common Language Infrastructure
http://en.wikipedia.org/wiki/Common_Language_Infrastructure
Well, I think the author did a great job. The article is well writen, with bibliography to support its statements. If we agree or disagree with the author’s opinions, that’s our business, not his. We all deserve, on the other hand, to state our ideas. And for this, I will say: I don’t hate MS, neither admire its ways. But the idea of .Net is good. Its downside is, as the author said, the lock in with MS technology, but come on, even some guys in the open source community are trying to copy the concept (and even the whole framework), which I think is not a good idea. Open source people talk a lot about freedom of choice, and try to go against all MS represents, yet they try to create this “mono” thing. Well, maybe I’m an ignorant, but, aren’t this people capable of creating something completely new, fully functional and original? I think they can, but instead they go the easy way… risking themselves to be a victim of MS and its IP war…
“Java is actually quite non-proprietary. Sun controls the brand, the conformance tests, and provides the reference implementation, but anyone is completely free to implement Java and license the brand. This is light-years ahead of .NET, where lots of companies like BEA and IBM are independent vendors for J2EE and actually compete against Sun for market share. The source code to a large part of J2SE is also available, which is quite nice for troubleshooting. ”
Yea sure… just ask the FreeBSD folks…
Uninformed lie, plan and simple. Both C# and Java programs are close to C/C++ speeds on most general apps. Memory usage is another story.
Not true. Managed code is only fast like that when you dont mix unmanaged with managed code (marshalling penalty) AND you dont create many objects (when you pass an object by reference it has to lookup up the pointer address from a list ergo the more objects you have the bigger that list and therefore the more expensive referencing an object becomes). Thats why java/Dont Net can be fast on the server but they are very slow in Gui apps which are heavily OO based.
I’ve never used Delphi, but you’re telling me that it’s productive because it doesn’t have a framework?
No it has a VCL component library but it is statically and smart linked into the executable so there are no runtime distributables like the .Net framework. The static linking adds only a small amount to the size (typically less than 500kb to an executable).
Delphi 2005 has twin compilers for win32 and .Net so you can write the same code and compile in under both. Its great for comparing the performance difference between the two and dont net is definitely a LOT slower (by at least 3x for a large app).
<<Yea sure… just ask the FreeBSD folks…>>
That was blown out of proportion. Sun doesent plan to discontinue FreeBSD’s Java license, its being renewed.
Not true. Managed code is only fast like that when you dont mix unmanaged with managed code (marshalling penalty) AND you dont create many objects (when you pass an object by reference it has to lookup up the pointer address from a list ergo the more objects you have the bigger that list and therefore the more expensive referencing an object becomes). Thats why java/Dont Net can be fast on the server but they are very slow in Gui apps which are heavily OO based.
In .NET there are user-defined value types which live on the stack. Swing has been notorious for being sluggish in the past. Windows Forms are not slow for me, and SWT isn’t slow.
No it has a VCL component library but it is statically and smart linked into the executable so there are no runtime distributables like the .Net framework. The static linking adds only a small amount to the size (typically less than 500kb to an executable).
I wish MS would put out a linker for .NET, even if it isn’t crossplatform then and the resulting binary is huge.
Delphi 2005 has twin compilers for win32 and .Net so you can write the same code and compile in under both. Its great for comparing the performance difference between the two and dont net is definitely a LOT slower (by at least 3x for a large app).
Where are you coming up with the 3x number? I doubt that figure.
“Java threatened to destroy Microsoft’s competitive barriers.”
Sooo, MSFT repsonded by introducing yet another “competitive barrier”. Problem solved, no?
In .NET there are user-defined value types which live on the stack. Swing has been notorious for being sluggish in the past. Windows Forms are not slow for me, and SWT isn’t slow.
Yes but user-defined value types have to be passed by value (you cant just pass a pointer to them as in unmanaged). That means you have to push all its members onto the stack – thats also slow and inefficient unless the value type is small.
Window.Forms is slowish on all but the most modern of machines when you create a large number of controls.
SWT wasn’t too bad speed wise because it was very primitive. The richer and more object based the API the slower it will be.
Where are you coming up with the 3x number? I doubt that figure.
Again comparing the same code in Delphi 2005 compiled as win32 and .Net produces a significant performance difference in largish apps. The startup time of large .net apps is roughly 30 secs on my machine too which is more than three times slower than office so Im not simply picking a number at randomn.
I don’t think so. Thats like saying sockets are at the heart of c programming. Sure they are important but they are just a library on top of the CLR the same way that sockets are a library on top of the c runtime. People might have fallen for the .net == web services spiel 3 years ago when it was launched – but now ? give me a break.
Your comments regarding the 3x slower performance for .NET is a bit ignorant… Anyone who knows anything about .NET is aware that when a .NET program loads for the FIRST time, the Just In Time (JIT) compiler is invoked to compile its assemblies. There are options and tools that come with the framework SDK to prevent this from happening… but of course you woundn’t know that.
Subsequent loads of the binaries are not compiled.
Why don’t you do a benchmark of processes after loading or subsequent executions.
)Please do yourself a favor and stop talking. You’ve obviously never programmed for the .NET framework. There aren’t pointers, but there are references.
It does not matter whether they are boxed or unboxed they are still slow. (unboxed have to be passed by value, boxed by reference – which is a slow process when you have loads of objects). I have programmed for .Net and it is a lot slower in heavy OO situations.
Your comments regarding the 3x slower performance for .NET is a bit ignorant… Anyone who knows anything about .NET is aware that when a .NET program loads for the FIRST time, the Just In Time (JIT) compiler is invoked to compile its assemblies. There are options and tools that come with the framework SDK to prevent this from happening… but of course you woundn’t know that.
That is irrelevant to me as I dont care what its doing and I dont wanna wait ages for an app to start! Show me a .net GUI app that can load fast for the first time and then I will shut up. Oh by the way the ahead of time compiler cannot compile everything so there will always be a need for a JIT so it will always be slow loading first time – QED – I rest my case – .Net is *SLOW*
1. KDevelop is a better IDE than VS.NET
2. this whole article is a flamebait, and lots of people will bite it, just like me.
3. Please, ELQ, don’t do this.
“First I’d like to see a company that “has no intention of developing on MS platforms in particular”. Sounds like development platforms is the least of their worries.”
The software world is larger than the desktop and small server space.
The company I work for specializes in global networking and large application solutions for airlines (we provide services for over 400 smaller airlines worldwide, and we maintain one of the largest communications networks on the planet), and most of our application infrastructure is living on either Unisys mainframes or on various Unix platforms.
Windows is simply not a viable option for certain kinds of software deployment.
“MS come with innovations!!!”
Humor me. List two innovations from Microsoft.
“MS create billions of jobs!!! Your job too!”
My job has little to do with Microsoft. The compiler we use, the operating system and development tools that we use, the general application environment that our software runs on, and the hardware platform living underneath it all is completely unrelated to Microsoft’s offerings.
The same was true of my last contract job (even though that client was using a completely different language, environment, and hardware platform than we use in my current position), and it has been true of all of the programming positions I’ve held since 1988 (this is my fifth).
Microsoft influences many things, but not everything.
This discussion here is really a shame. First the author gets called a MS fanboy and the article a flaimbait. The only reason for this kind of behavior seems to be that the people commenting seem to lack even the most basic text comprehension skills.
On top of that we get to witness yet an other M$ suX0rs / MS ru10rs discussion with such gems as:
.net is slow
no it isn’t
it is
it isn’t
…
And still nobody (me included I admit) had anything usefull, interesting, insightful to say about the actual article.
I really think that serves as a reminder that you shouldn’t post anything that goes beyond “Let me describe the installation of this new distribution in detail”, or maybe “That’s why I like WinXP” on a site like OSNews. It simply isn’t fair to the author otherwise.
No really. It seems this guy has been completely blinded by Microsoft’s FUD.
He makes many many comparisons to Java. Why? Surely if the benefits of .NET were that great he could advocate the product without needing to compare and contrast with the language and approach that MS clearly gained “inspiration” from.
.NET is not the future of computer as this article seems to make out. An Java GUI application will run on Window, Linux, OS X, etc without any code modifications; A .NET application on the other hand won’t. If has already been proven with Paint.NET
No offence but how old is this guy? Does he have any experience of working within a commericial environment using a multitude of vendors’ tools and solutions. I doubt it.
.NET is ideal for a software solution that replies purely on Microsoft products. Not even Microsoft uses a 100% pure Microsoft solution (Xbox 2 development is undertaken by Apple Macs).
While companies are using .NET more I doubt we will ever see a large transition to Server 2003 when Linux is cheaper, faster and more secure. Typically Linux servers will then be running Java for their enterprise solution.
He is mentioning Java a lot because Java was one of the main reason for MS’ .net strategy in the first place.
And as the author clearly states, they took a whole lot from Java.
It’s right there on the first page for Christ sake:
” A Tools Strategy
The Common Language Runtime (CLR) was a major advance from the previous Microsoft development environment and was also a move to counter the threat from Sun’s “write once, run anywhere” Java development environment. The introduction of Java meant that the Java code written on a PC could also run on Linux, Novell, Macintosh, Sun workstations, and even IBM mainframes. Java threatened to destroy Microsoft’s competitive barriers. Java started as a client-oriented application language but evolved to support web services and eventually provided a rich set of tools to create web-centric applications. Since its introduction Java has also gained great market share in back office operations, further cutting into Microsoft’s profits.
Countering Rival Technologies
CLR adopted most of Java’s features and virtually eliminated Java’s competitive advantages. Specifically, CLR moved to a “managed code” paradigm, where applications run within a safe virtual area. It also adopted Java’s superior memory management garbage collection techniques, increasing reliability of applications.”
So what exactly is your problem?
Further the author doesn’t make the point that .net is the future of computing, he makes the point that MS is selling it as the future of computing, but these subtle differences seem to be hard to grasp for some people here.
No offense but how old are you?
Read the article, try to understand it and you will see that all you’ve written is completly unjustified and of base.
I don’t think the article is accurate for many important issues. The author says Microsoft buys products in the marketplace, yet there is no such product and he doesn’t talk about any in his article. The last paragraph and some others seem to be a Microsoft basher’s last effort to put a spin on the facts.
Couple of important things:
.net is not something copied from java. That’s a clever marketing done by the Sun corporation.
.net is much better than java, and c# is a true standard.
the word “proprietary” is used meaninglessly so many times. If you are expecting a free service from companies you are living in a different planet or maybe you are a communist. Every individual has the right to innovate and profit from their innovations.
Microsoft is an innovative company. It is more innovative than any other company in its industry. It is not good at marketing though.
To the author:
Thankd for the article (and to all the previous commentors).
MS has a strategic plan and put it to work. You proved it.
But somewhere in the process, MS consciously made lies (as FTC proved) and bold (unfullfiled) promises.
I would like you analize the importance of this lies and promises in the marketing process.
Are the lies necessary or are simply errors? Was the plan based in unfullfillment of promises?
Maybe the success is based in some critical doubtful ethical procedures. I do not judge, I just do not want to follow maquiavelian procedures.
Thanks in advance
Yes but user-defined value types have to be passed by value (you cant just pass a pointer to them as in unmanaged). That means you have to push all its members onto the stack – thats also slow and inefficient unless the value type is small.
That’s the whole point of user-defined value types. They are supposed to be small and used for such things as a large array of them where it can be inefficient for the garbage collector to collect a million such objects in a language like Java.
Window.Forms is slowish on all but the most modern of machines when you create a large number of controls.
SWT wasn’t too bad speed wise because it was very primitive. The richer and more object based the API the slower it will be.
Slowness is in the eye of the beholder I guess, but I’ve run SWF apps on very weak machines and they have, for the most part, run acceptable. Remember, it’s not like Swing where it gets a handle to a brush and paints everything itself (at least that’s how it used to be, not sure about now).
SWT is only half the story. JFaces is the other half.
Again comparing the same code in Delphi 2005 compiled as win32 and .Net produces a significant performance difference in largish apps. The startup time of large .net apps is roughly 30 secs on my machine too which is more than three times slower than office so Im not simply picking a number at randomn.
You’re comparing apples and oranges. Startup time vs. execution time. .NET just like Java is JIT’d and has longer startup times, but .NET assemblies can also have machine code cached to reduce that JIT time. You need to be more specific about what is exactly 3x slower. Once the app is loaded it’s typically not 3x slower.
I don’t think many people here actually have the ability to make an informed decision on the matter.
Ask a Technical Architect on either side of the argument which platform is most cost effective and delivers the product on time and in budget and you’ll get the answer. There is only one conclusion.
>.net is not something copied from java. That’s a clever marketing done by the Sun corporation.
do you know java and c#? obviously not. “inspired” would be the polite term….
>.net is much better than java, and c# is a true standard.
are you on crack? the industry standard for enterprise webapps is j2ee. java is under a non-royalty liscence agreement. .net IS under ECMA, but ECMA allows ownership to stay in the hands of the people who submit it. to say that parts of the cli beyond under ECMA makes .net more of a standard the java is pretty silly, no matter what way you are using the word standard. and better how? last time i checked the .net api doesnt hold a candle to the java api. maybe its matured a bit, but i doubt it.
>the word “proprietary” is used meaninglessly so many times. If you are expecting a free service from companies you are living in a different planet or maybe you are a communist. Every individual has the right to innovate and profit from their innovations.
propriatary is over used, but it is not meaningless. its only meaningless on tech sites populated by thirteen year olds who use it as a synonym for bad.
>Microsoft is an innovative company. It is more innovative than any other company in its industry.
ROFL! this line was actually why i took the time to respond, totally cracked me up. as was asked earlier, how exactly does ms innovate? ms is not a big idea company. ms likes to wait for other people to come up with good ideas, and then do their own implementations. sometimes they are good, usually they are mediocre, often they are terrible. microsofts actual “innovation” tends to be along the lines of stuff like activex, which is a big part of the reason that windows users have such a huge problem with spyware/malware.
>It is not good at marketing though.
and this is the statement that explains everything. microsoft is a MUCH better marketing company then a technology company.
hehe, not sure if your a troll or not, if you are, good job, i enjoyed responding.
I read a lot of articles about .net and Longhorn the last few years and about what I read I couldn’t find anything that is completely new, doesn’t existing on the Linux platform or is being worked on also.
People who buy Windows product dig there own hole and this hole becomes deeper and deeper everytime the buy one of there new products.
Goverments, companies, people should try to become independent. So use open standards and opensource software.
A well written article from a historical and marketing standpoint – two thumbs up.
I am afraid that many of the posters here have never used .NET or are Java (or C++ or Delphi or etc..) programmers who tested .NET a little bit, but never got really involved in a mid-huge project.
–Disclaimer: Please notice I’ve said ´many of the´ not *all*–
As a Senior .NET developer involved in a huge medicine application developed in C# (and some VB.NET stuff written by ´legacy VB6 programmers´) and relying in both ASP.NET and Windows Forms (heavily), I consider myself capable of speaking about .NET in general; I know not only C# but .NET (always under Windows Environments, I have little or no experience with Mono, DotGNU, etc.). I have read books, tested, learned, inspected and dissected many of the .NET Framework classes in an attempt to understand the way it works. True is that I lack Java knowledge (I was in C++’s realm before .NET).
I can’t comment on .NET’s performance without facts, I can’t compare VStudio Vs. Eclipse (or any other ide because there are none), since the other alternative is either use your editor of choice and command line utilities or SharpDevelop which, as good as it looks, it’s still not as powerful as VStudio -tho it’s faster sometimes-.
I do not LOVE Microsoft. In fact I have a Powerbook as a personal computer. But I work with microsoft products, and I learned to admire the good things, and criticize the bad things. .NET has both. I won’t go into detail here, but I can assure you that there are a *lot* of things inside .NET that are crap but on the other hand, there are loads of good things that will make your life easier (sometimes for a penalty). Is it slow? You can’t tell, maybe it’s not the FASTEST thing on earth; surely will not travel to mars in the next rocket; possibly will not run in your Sun server. But one thing I am positively sure about, it will slowly attract VB 6.0 developers, push them to the OOP world and in the end it will reign as much as VB did (and does). Is it the right tool to replace Java? Nah! who said that. It’s just another tool, and every Microsoft tool gets what it deservs.
I’m tired, excuse my poor grammar…
Be happy! .NET is not too bad