I had a comment on the J# serialization post that I took as , "J# is insufficient to entice J2xE developers."
J# isn't really about enticing developers "away from" a different platform. [ by my view, that is a pretty narrow way of looking at the world of developers anyway, as if there was only a binary choice. Who doubts that the universe of choices in development just keeps exploding? We are in the big bang of choices. ]
The way I look at it, J# is just one of a stable of languages supported on .NET. You can use C# or VB, but if you know COBOL, there's a CLR compiler for COBOL. Fortran, Lisp, whatever. Now it is true that Smalltalk.NET is not quite the same as Smalltalk. Most "languages" are really platforms or at least meta-platforms. Look at Java: as a developer who writes code, you think of Java as a language, but it really combines a language syntax with a virtual machine environment (incl a memory model) and a standard class library. C++ works the same way - it is not possible to conceive of C++ without the standard libraries. likewise Vb. So if you graft .NET onto an exiting lang/metaplatform, you inexorably change the nature of the language. It's adulterated. Martha, is that a Good or Bad Thing? Depends on your perspective. If you're a purist, it's a Bad Thing. If you are a pragmatist, maybe it's a Good Thing. Regardless, the point is that it is possible to use languages you already know on a .NET runtime, with the .NET libraries.
But what I really wanted to say this: The multi-lang philosophy is very consistent with, and just another side of, strong interop capabilities. Here's why: both interop and multi-language enable people to get more done with what they already have - whether the thing they have is a programming skill or familiarity with language syntax, or an operational system that is running with known behavior and performance. The .NET approach is to enable maximum use of those things. [Speaking of language syntax, VB still baffles me.] That's the core philosophy behind .NET that drives these features.
Interop isn't an absolute virtue, like dark chocolate or speyside single malt whisky. Interop is good for a practical reason. Multi-lang support on a runtime is good for the same reason: Boring old ROI. You get more stuff done.
What catalyzed this thought was a couple of items I saw this morning on the multi-language support in .NET: