This post originated from an RSS feed registered with .NET Buzz
by Scott Hanselman.
Original Post: .NET and Mono: The Libraries, the Framework and the Very Big Fish
Feed Title: Scott Hanselman's ComputerZen.com
Feed URL: http://radio-weblogs.com/0106747/rss.xml
Feed Description: Scott Hanselman's ComputerZen.com is a .NET/WebServices/XML Weblog. I offer details of obscurities (internals of ASP.NET, WebServices, XML, etc) and best practices from real world scenarios.
The point? If you care about cross platform .NET, there are
details you need to pay attention to, and you really shouldn't do dumb things like
use the registry. As for "the cost of not being able to do native system programming
in pure Java" we already know that pure
.NET is a myth, too. [The
80/20 Solution]
With due respect, I'm not getting a few of Jeff's views:
The Java API writers have always been very careful not to
introduce an API which does not make sense on all platforms. This
makes Java extremely portable at the cost of not being able to do native system programming
in pure Java. [Jeff
Dillon]
Which sounds just like the Least
Common Denominator point I've made before. However, while the Java API writers
may try to support the LCD, the Java Application Server vendors explicitly
promote vendor lock-in by introducing APIS that are App Server specific. As
Jeff wisely points out, there is a cost. I say it's too high for most.
Microsoft is very open about their goals - Vendor lock-in is a good thing. Exploit
the platform. Jeff says:
With .NET, Microsoft went ahead and wrote all kinds of APIs
for accessing the registry, accessing COM objects, changing NTFS file permissions,
and other very windows specific tasks. In my mind, this immediately eliminates .NET
or Mono from ever being a purely system independent platform. [Jeff
Dillon]
No, it really just eliminates the possibility of using a COM API on another platform.
This will lead to the rise of ".NET Code - Pure Enough for Mono"
, and that suits me just fine.
If Microsoft were to truly virtualize the machine, they would
have marginalized their investment in the Windows platform.[Me]
I'm not trying to promote bad feelings. I worked at Nike getting Java over RMI
on Solarious to talk to DB2 on a Mainframe - I love all religions, remember:
Scott's Rule of Programming 0x303b: Don't Player-Hate,
Integrate.
I'm just trying to remind folks that, by definition, write once, run anywhere,
means writing to Least Common Denominator APIS (or introducing "if (!IsMacIE)"
code - You may have seen that before on a Write Once technology called HTML/ECMAScript?)
The only difference is that Mono has seen fit to raise the level of the Least Common
Denominator API to a reasonable level. That, combined with common sense like
there's no Registry on Linux means that apps like dasBlog
can happily be ported to Mono.