Channels ▼
RSS

.NET

C# and .NET's Sudden Ubiquity


The headlines read like the imaginative claims of an April Fool's story or a satirical sortie from the Onion: Microsoft open-sources full .NET stack; Microsoft ports .NET to Linux and Mac OS; Microsoft boosts free tools versions to compete evenly with its paid editions. And yet…it's all true.

Today, Microsoft announced sweeping changes in its tools division that make the advances of earlier this year look like minor events. Of the announcements, in my view, the most important by far is the commitment to put .NET on all major platforms. Microsoft itself will handle delivering .NET on Linux and Mac OS. It will depend on tighter cooperation with Xamarin to address the mobile sector.

Of these platforms, Linux is clearly the most important. Today, Microsoft earns much of its (record) profits from enterprise software packages (SQL Server, SharePoint, Exchange, etc.). By running .NET on Linux, it now has the ability to run those apps on a significant majority of server platforms. Except for Solaris sites, all enterprises will be able to run the applications without having to add in the cost of Microsoft Server licenses.

But perhaps more important than the pure server benefit is the cloud aspect. VMs on the cloud, especially the public cloud, are principally Linux-based. Windows VMs are available, too, but at consistently higher pricing. With this move, .NET apps can now run anywhere on the cloud — or said another way, between servers and the cloud, the apps can run anywhere IT is operating.

The port to Mac OS is certainly less needed, as Macs already run Windows quite well (via Parallels or other virtualization technology). I expect that the move is designed to broaden the desktop coverage of .NET and to attract and work with the growing number of developers who prefer to work on MacBooks. (Go to any developer conference, hackathon, or open-source gathering, and the majority of laptops you'll see are Macs…and I don't mean a mere plurality, but rather an overwhelming majority.)

The final piece of the puzzle, .NET on mobile devices, is being filled in by Xamarin, which sells a usable, if incomplete, porting solution. In its announcement today, Microsoft promised closer cooperation with the Xamarin team. This bodes well, although it remains a mystery why Microsoft has not yet bought up the company. I am hard-pressed to think of a more obvious acquisition for any tech company.

I should add that for development of mobile apps that don't need to be native, Visual Studio 2013 already has HTML5 tools. The next update, due imminently, will add more tooling for Apache Cordova as well as an Android emulator.

The big winners of all this goodness are C# developers. In theory, .NET portability favors all .NET languages equally, but it's no secret that C# is the first among equals. (It and F# are, in fact, the only languages that Xamarin supports currently.) Microsoft has been an excellent steward of the language, evolving it intelligently and remarkably cleanly. Among developers who use it regularly, it is uniformly well liked, which distinguishes it from most of the other major development languages today, where an appreciation that borders on ambivalence is the more common experience.

The big loser is certainly Java. Java's stock in trade has been its longstanding ability to run without modification or recompilation on all major platforms. In this valuable trait, it has had no major competition in the enterprise. If Microsoft's port of .NET provides a multi-platform experience that is as smooth and seamless as Java, then the JVM will have some very serious competition.

Moreover, if that comes to pass, .NET has a key advantage over Java in its support for clients. Despite the significant improvement JavaFX delivers over Swing, Java is no one's first choice for writing desktop UIs, whereas .NET is standard for business applications.

For years, C# has been an attractive language for developers, but blocked in wider adoption by its inability to run on more than Windows. With today's announcement, a whole new world opens up: Nearly all desktops, servers, and cloud instances are within its reach. This is a huge step forward for C# and .NET and represents a remarkable advance in Microsoft's remaking of itself to embrace the future.

— Andrew Binstock
Editor in Chief
alb@drdobbs.com
Twitter: platypusguy
Google+


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Video