One Runtime To Bind Them All 479
Sowbug writes "Here's some interesting Saturday night reading: a critical examination of many of the advertised benefits of .NET's CLR (Common Language Runtime) and the other technologies (MSIL, CLS, CTS) that make it possible. It's written from the perspective of a Java advocate, Osvaldo Pinali Doederlein. "
Unbiased Articles? (Score:4, Insightful)
apply the razor please (Score:2, Insightful)
If the only thing the authors have in common is your readership, they might be right and you might be wrong.
Re:Well, m$ has to do something. (Score:3, Insightful)
Uh, have you ever heard of the "little concept" called J2EE? It's the app server/services technology that powers a big chunk of the large-scale e-commerce backend. I work with this stuff every day, and it has a lot more than "neat little benefits". Have you ever heard of IBM's Websphere? How about BEA's Weblogic? J2EE is currently the ONLY credible enterprise-level app server standard around.
Get your head out of your ass. Little Windows applications at your computer super-store aren't what this stuff is about. It's the server side where the big money, and the truly large-scale systems, are. And on the server, Java rules.
Re:Well, m$ has to do something. (Score:4, Insightful)
While Sun can do anything it wants with Java, it is just as much a standard as
Now, what makes you think that Microsoft won't do exactly what it wants with
And of course all those fancy development tools (Visual
Re:What I don't get.... (Score:3, Insightful)
This is a simple one. I write perl, you write C#. You write a routine in C#, and a front-end in C#. I don't like your front-end so I rewrite mine in perl, and it all works.
However, I have a biggol' feeling that this will wind up as Java's platform independance. Half-Working.
.NET is there so that they can lump everything into it, say they Innovated it at the
So far, NET involves a way to log into Hotmail, a planned Java rewrite, and..., and
Re:Unbiased Articles? (Score:4, Insightful)
Don't know what the subject should be (Score:2, Insightful)
Is he kidding here? As long as you are using any mainstream CPU, imperative languages are favored. All those CPU's are based on von Neumann model. Any program written in functional or logical languages will be penalized when run on such CPU's. So, at this moment there isn't a CPU architecture that will treat all programming paradigms equally, and neither a CLR/VM.
MS is at least trying to build a platform that will intergrate different languages. This is intention of CLR.
SUN is not trying to do this and JVM wasn't invented for this purpose. Sure JVM can be extended to support other languages, so can my plastic cup holder.
How could it be unbiased? (Score:3, Insightful)
Personally I think that those strongly familiar with Java are probably the most qualified to write on the subject of
Really, the only unbiased source in this debate is an uninformed source, and that's really of no help. Take what the author has said, check his facts, and judge his opinions on your own. In the end, you'll probably find that, as it has always been, certain languages and architectures are well suited to certain tasks. You aren't going to write device drivers in C# and you probably aren't going to write a cross platform GUI application in assembler.
Closed standard? Open Standard? I pick door #2 (Score:5, Insightful)
This point has been made before, but it bears repeating. C# [www.ecma.ch] and the CLI (Common Language Infrastructure) [www.ecma.ch] are ECMA [www.ecma.ch] standards! As such Microsoft no longer truly controls them. There is nothing to keep Microsoft from 'embracing and extending' these standards if they do not like the direction they are going. Just as they can with any open standard. Just as you can with any open standard.
MS tried the embrace and extend strategy with Java, remember? And they ran into a huge roadblock. Namely Java is not an open standard. Despite what Sun says in the press releases the standard is not open in the same sense. Sun controls it and Sun can shut down any attempt to create a non-conforming version.
From some points of view this is a good thing. But, although I appreciate any argument that starts with 'We need to avoid incompatible versions.' I also know that Sun has not proven any better than Microsoft as a steward when it comes to keeping the commons clean and competitive. To put it simply; I just don't trust them. And I think there is an equally persuasive argument that competing products evolve faster while products without competition tend towards stagnation. This eco-system analogy appeals to me.
From this point of view let us return to 'embrace and extend'. In a closed standard a single organization controls all progress for that standard, with limited participation from the outside. In an open standard the process is, at least titually, open to outside input and you are more likely to see third-party enhancements absorbed into the standard itself. Furthermore no corporation is going to sue you if you create your own implementation of the standard. Even if it is tweaked to work best on a competing platform. (Can we all say 'Mono'?)
So, the way I look at it, C# and the CLI will drive Sun to improve Java. Third-party implementors will drive the C# and CLI specifications faster than MS would alone. In the end we get better technology. I like better technology. So I win either way.
Besides, I like the design of the CLI a lot. And C# looks like an arguably better language than Java.
Finally, many arguments in the 'One Runtime' article seem a bit weak to me. For example, "... Design-by-Contract, a fundamental strength of Eiffel that .NET does not support." Since when does 'Design By Contract' have to be baked into the underlying runtime to make it work? What is keeping you from implementing any kind of runtime you want on top of the CLS?
Jack William Bell, who likes the idea of coding with mix-n-match programming languages.
I like this quote... (Score:3, Insightful)
Sounds like Sun selling Java. Proprietary openness, and strongly biased systems presented as platform-neutral.
Re:Unbiased Articles? (Score:5, Insightful)
But to the horde of developers that will be migrating from Visual Studio 6.0 to Visual Studio.NET. I've met quite a few VB developers who are unwilling to give up their syntax yet would love to take advantage of
It is a very valuable marketing point, and it allows for a very easy transition/upgrade for many developers out there already targetting Windows.
Re:Well, m$ has to do something. (Score:2, Insightful)
Wait, say that again, "third party implementations", meaning what exactly? Modifications to the original "standard" or building off of the already existing base? I don't think that I've seen a GPL'd java or a red-hat java. While I've seen plenty of vm's and additional components I don't think I've seen any truly third party implementations. If what you said was true then Microsoft would have had right to continue to fudge their version of java into anything they wanted to.
On to standards: Standards come in two forms A) Standard by popularity B) Standard by decree. While Java is a standard by popularity (similar to how IE is the standard browser), Sun refuses to give up any control whatsoever of the product in order for it to make a very important step into an actual documented and decreed standard. This would mean giving some measurable control up to a standards board such as ECMA, IETF, etc. What makes you think that Sun won't do exactly what it wants with Java?
Java folks getting itchy (Score:1, Insightful)
job fun != nerf toys (Score:2, Insightful)
I think Python/Jython is the only language that allows you to do things like this. I doubt it's true for all the other languages which are compilable to the JVM.
-Laxitive
Comment removed (Score:5, Insightful)
Re:Very nice article. (Score:4, Insightful)
Re:What I don't get.... (Score:1, Insightful)
VB.NET might be bastardized, but it solves the huge real-world problem of Fear Of Curly Braces And Semicolons.
Yes, it's completely stupid, but apparently BASIC syntax is easier to grasp for some people than C-like syntax.
In fact, the biggest marketing fukup that Sun made was not shipping a supported VB.NET-like language for the JVM before Microsoft finished theirs. Unlike esoteric functional languages, the JVM implementation wouldn't have hurt ObjectBASIC one bit. Sun just missed the boat on the selling to the largest group of corporate programmers - VB users.
(And before anyone goes gonzo on how unelite VB is -- my Indian Java monkey friend informs me that the contractor rates are currently higher for VB6 than they are for Java in the Bay Area....)
Yawn . . . (Score:4, Insightful)
1990 - Visual Basic revolutionized programming by interpreting to P-code and requiring a run-time.
1991 - Java was going to rock our worlds and promised "write once, run anywhere" using an intermediate byte code that looks a lot like P-code.
2002 - Microsoft promises one runtime to which many languages will compile in the megarevolutionary (and some say Orwellian) dot net architecture.
Like it was said in Ecclesiastes [gospelcom.net], there is nothing new under the sun.
And behind #2 is... Java! (Score:5, Insightful)
Of course, I'm talking about the Java language. Where else do you get something where the language and VM are controlled by a standards body composed of many companies across many industries, that have to approve all changes made (Sun only controls licencing of the Java trademark)? How about a standard where real everyday people like you and I can propose changes and make comments on proposed standards?
Wait, you were thinking you might get
Lastly, what's stopping you from writing everything on top of a raw turning machine? After all, everything you want to do is technically supported...
Check out calling conventions from Eiffel# to C# and then perhaps you'll rethink the usability of cross-language prgramming.
.
LET'S GET IT STRAIGHT PEOPLE (Score:2, Insightful)
Anyone who thinks so has already been screwed over by MS's PR machine.
Think about it: do we talk about C# or
I admire C#/CLR immensely. I would love to start using it. It's great tech. Beautiful.
But I'm scared as hell precisely because it's not standards based.
True, PART of the C#/CLI specs are standardized and were submitted to ECMA. But not all of them.
This is EXTREMELY important to point out. That's the problem. MS gets you thinking it's standardized, gets you developing in it, and then pulls one over: "Oh, you can't implement X on that system because we've got patent #384722348239847 on that."
What the hell do we do then? When we're all using C# and the CLR and then MS points out that something or other is proprietary technology that can't be used on OS X, Y or Z? It's a sticky situation that NO ONE has figured out yet.
Don't get me wrong: C#/CLR is an impressive feat. But please don't start claiming we should use it because it's not proprietary. That's exactly what MS wants everyone to think. When people talk about "embrace and extend" what do you think they mean?
True, Java is proprietary. But the Java process is much more open than C# at this point, and probably ever. And Sun isn't a convicted illegal monopoly (a point that some people gloss over as being irrelevant, but is all too relevant).
So far, I just don't see C#/CLR being talked about as anything independent of MS in the way Java has. When I see texts that treat C#/CLR without making reference to
I agree with you that potentially, third parties could drive C# into directions much better than MS could dream up. Mono is a good move in this direction. So far, though, Mono is the best example, and all Mono has been doing--and more importantly, talking--is chasing MS's tail.
So far, C#/CLR is just not (a) that much different from Java, and (b) not OS independent.
All great languages are OS independent, and C# just isn't yet.
C#/CLR is not open. That's the problem. It's been submitted to a standards body, but isn't standardized. Please, get it straight. This kind of screwing around with the standardization process to make something ostensibly appear standardized, all the while maintaining proprietary control for all intents and purposes is exactly how MS pulls this crap off.
C# is worse than proprietary in this regard. If it were blatantly proprietary, fine. If it were blatantly open, fine. But this in-between crap is a no-man's land that benefits no one.
Re:Well, m$ has to do something. (Score:2, Insightful)
This has been a great thread with some excellent points on both sides. As much as I'd like to see .NET manifest fully capable cross-platform applications, I'm quite certain it isn't going to happen.
Microsoft doesn't make money by selling individual products. They make money by leveraging products off one another to dominate markets. Sometimes they do it fairly and legally, sometimes not.
Whatever the case, Microsoft has worked hard to reach the position they are in now, and I'm quite certain (as should be everyone else) they are not going to throw it away by offering full featured cross-platform capability. If they were to do so, it would completely nullify their relevance on both the server and the desktop.
Microsoft is not that stupid.
To have access to all the bells and whistles of .NET, you'll have to run it on Microsoft platforms exclusively, again, both on the server and on the desktop. If you don't, I suspect you'll be stuck with something that looks and functions a heck of a lot like Java does now.
This is a stroke of genius on the part of Microsoft. Let us examine four hypothetical corporations:
It's a vicious little circle called Microsoft, and it's very easy to get sucked in. Open Source and Free Software will never die. It is simply the nature of the beast. However, I do like how the increase in it's popularity in all arenas has improved its quantity and its quality. And I am loathe to go back to the bad-old days of poor hardware support and tediously long development cycles. The question we have to ask ourselves is,
"By supporting .NET with projects like Mono, are we shooting ourselves in the foot?"
I don't know the answer quite yet, but I can't help the feeling that we are being given enough rope to tie our own noose, nor shake the image of Bill Gates saying to us,
"C'mon kids, try it, the first one is free!"
New VB = language neutrality?? (Score:2, Insightful)
The old VB is, for all intents and purposes, GONE. In its place is a language that has almost a completely different syntax and environment, but is called VB.
And why was this done? Because the "old" VB wasn't supportable by the OOP-ness of the CLR (which is what this article points out)
In effect, it would be FAR better for the old-VB'ers to learn C# than VB. Because they're going to be basically learning a new language anyway.
Even C++ programmers are left out in the dust because you essentially have to use proprietary C++ keyword extensions to access
(oh and C is NOT a
But I fail to see how all of this shows that this = language neutrality and therefore this = a very easy transition/upgrade for many developers out there?
And I'm ultimately more concerned about how this impacts my ability to make reusable C++ objects across multiple platforms... I know alot of people on slashdot these days seem to think there's nothing but windows out there (odd because slashdotters are accused of being Linux biased...)... and that's not the case...
Re:How could it be unbiased? (Score:2, Insightful)
this might be true for other VM's.
they are never interpreted.
Re:should have been a comparison chart (Score:2, Insightful)
Actually, you're wrong. Sun doesn't support other languages on the JVM because it wasn't designed to support other languages. It was merely meant to support Java. But the flip side is that they don't pretend to support other languages. No matter what Microsoft tells you, the CLR was meant to run C#; IF they had wanted to support (for example) scheme in it, it would look much differently. Now there are, I suppose, scheme implementations for .NET, but based on what I'm reading so far, they lack core scheme features.
Basically, scheme and haskell AREN'T available for the CLR; the intersection of C# and haskell, or scheme, are available, with haskell or scheme style syntax, but it isn't the same as real scheme. There's more to a language than syntax; that's the whole point of scheme and lisp. But the marketing literature for the CLR defines another language by its syntax. A clustermessup like this, with the marketing power of Microsoft behind it, trying to make it the new binary programming standard, scares me.
It is not about VM (Score:2, Insightful)
At the same time Java is obviously a success at server-side. When you write an "enterprise application" it is (in my experience) not supposed to run everywhere. What is even more important there are not so many differences between, say, Solaris and Windows NT/2k for a typical web/database transaction processing system.
What really counts here is not a particular VM feature or its absence. It is all about APIs, services, and application servers implementing them.
Java is a language, which is kept quite simple. There is no standard C-like preprocessor, type system is straightforward, no generic types, etc. There are no selling points here except for this simplicity.
Java is strong because of the widely adopted J2EE platform along with all these 3- and 4-letter acronyms (JDBC, EJB, JMS, JSP, JTA, etc.) and because there is a number of mature J2EE-compliant application servers around.
This is were the main battle will take place probably.
-- Eugene
Re:New VB = language neutrality?? (Score:2, Insightful)
As for VB. The differences ARE substantial. Yeah, VB programmers are used to abuse whenever they move up to the next version of VB. ('Cause their code often has to be modified to accomodate the minor language changes from each version...) But the entire paradigm of VB is different with VB.NET. VB.NET is a TRUE object oriented language. VB is NOT. VB had objects, but the objects weren't inheritable, and the methods weren't overridable. My argument isn't that old VB'ers can't do new VB. My argument is that, for the price of learning the new paradigm, the VB programmers can spend a little more effort and learn C# and take advantage of more features than in VB plus have a lead in to doing C++ which will enhance their career skillsets...
Oh, but that would break the
Re:Parrot? (Score:2, Insightful)
unfortunately, for Miguel-ites Dotnet is the one true way and by definition it cannot be modified or (gasp!) improved. Luckily, it has already addressed all Open Source / Linux application development requirements and so further debate on this subject is pointless, as you can see from the number of replies to the above posts.