I was reading through the latest issue of Redmond Developer News. I most like this magazine as I can get a quick view of Microsoft development from a industry perspective, although sometimes I disagree with a few points here and there.

In this issue, they have a variety of articles. I'll point out a few at the bottom of this post. The cover story (Decoding Bill) takes a look at Bill Gates, and attempts to identify Mr. Gates as a developer, technologist, and/or businessman. It has some interesting opinions from competitors back in the early days.

Another interesting article that caught my attention was .NET and Java Grow Organically. It's subtitled "Mixed .NET and Java application deployment platforms promote new interoperability initiatives". Why did it catch my eye?

.NET Winning, 59 to 49

First, was the opening paragraph of the article. "When Forrester Research Inc. surveyed platform software decision makers in large North American and European enterprises recently, the IT industry analyst firm found that 59 percent of those surveyed use .NET and 48 percent use Java or Java EE." 

Wow! I've been waiting to see "recent" information from the enterprise that .NET was doing well. Maybe I missed an internal email on this, but this is good news as I like to validate what I'm seeing. This enterprise research was done by Jeffrey Hammond, but the specific study is not mentioned. But, I'm looking for it.

The other point here is that in large enterprise companies, there is a mix of technologies. That matches what I'm seeing as well, and shows that Microsoft is playing well at interoperability and standards. Unfortunately, there are examples where these camps don't play well with each other internally, and that's a shame. My typical suggestion is to focus on the business using the tools that make sense for you, and forget the religion. When another tool or platform make better sense, then take a look - and be professional, not burning bridges, and not making conclusions personal. That's for another post though.

Skins Challenge

The author, John K. Waters, brings up other interesting points in the piece. However, one paragraph I found irritating, and is the reason for this post.

Putting together and maintaining the right mix of coder skills has become a common enterprise challenge, Hammond says. "In some cases I see these heterogeneous shops pushing their .NET developers toward C# as opposed to VB.NET because it's the most like Java, and the hope is that it will make it easier for them to transfer skills. In practice, though, it's not so much the languages that create a learning curve as the frameworks."

Well said, Mr. Waters and Mr. Hammond. Although languages and IDE's are important, they are just a way to talk to the underlying frameworks - and this is where the real power is. In my opinion, there is no more single powerful framework than .NET. Yes, Visual Studio provides an excellent story of productivity on top of .NET. Yes, VB.NET is nicely done, as well as C#. But the power is in the framework.

.NET is not designed to run everywhere?

The very next paragraph is what caught my attention.

Another issue that Redmonk analyst Michael Cote points out is that the .NET Framework is designed for the Windows environment, while Java is designed to run everywhere. "Java is largely an open source-driven world, and .NET is largely not," he says.

OK, please raise the BS flag. (Maybe this is strong, maybe it's either the ignorance flag, or other flags that I omit from this list.)

.NET was designed to be portable, as portable as Java. This is the type of FUD that I see in the evening news, while Republicans say this, and Democrats say that. Hog wash! .NET is portable. If you need examples, consider this list: Mono, Rotor, Silverlight, and now Silverlight Mobile. Even Forrester talked about this long ago.

To understand this, one has to look at the CLR and CLI terms. Remember that Microsoft submitted the spec's for the internal guts of .NET to ECMA about five years ago (ECMA-335 and ISO/IEC 23271). This spec details the CLI, which is a portable specification. Microsoft implemented that for Windows, and made extensions on top, and this effort produces the CLR. Why does this keep having to be explained to the media? (Sounds like something I say when watching the evening news.)

The Wikipedia page may say it best: The CLI is a specification, not an implementation, and is often confused with the Common Language Runtime (CLR), which contains aspects outside the scope of the CLI specification. In the same Wikipedia page, it mentions several other frameworks that use the CLI on other platforms. So, .NET is portable!

OK, I'm moving on now...

Other articles I found interesting:

Gates Bids Developers Farewell - Redmond's chairman uses Tech-Ed keynote to talk up 'Oslo,' 'Velocity,' Silverlight and other dev tools.

Architects Craft Their Future - International Association for Software Architects aims to establish a support network for architects nationwide.

Tool Optimizes New Windows Mobile - Microsoft releases Mobile Device Manager 2008 with improved support for Windows Mobile devices and third-party tools.