Forgot your password?
typodupeerror
Microsoft

One Runtime To Bind Them All 479

Posted by Hemos
from the looking-at-CLR dept.
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. "
This discussion has been archived. No new comments can be posted.

One Runtime To Bind Them All

Comments Filter:
  • Unbiased Articles? (Score:4, Insightful)

    by Scrag (137843) on Saturday February 09, 2002 @06:42PM (#2980389)
    I have seen several articles on .net in the last week. All of them have been from Java advocates or MS haters. Could we please get some unbiased articles on .net? It is going to be a very important technology in the future, whether you like it or not. It doesn't help anyone to only look at one side of the picture.
  • by Erris (531066) on Saturday February 09, 2002 @07:13PM (#2980465) Homepage Journal
    I have seen several articles on .net in the last week. All of them have been from Java advocates or MS haters.

    If the only thing the authors have in common is your readership, they might be right and you might be wrong.

  • by abigor (540274) on Saturday February 09, 2002 @07:25PM (#2980488)
    "Java is a neat little concept - that has some neat little benefits. But it has caught on for large-scale applications."

    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.
  • by the eric conspiracy (20178) on Saturday February 09, 2002 @07:37PM (#2980514)
    Java itself is not any kind of 'true' general standard, sun can do whatever they want to with it.

    While Sun can do anything it wants with Java, it is just as much a standard as .NET, complete with specifications and third party implementations.

    Now, what makes you think that Microsoft won't do exactly what it wants with .NET? I mean we already have interoperability problems between SOAP implementations. What is going to stop Microsoft from issuing .NET+ or .NET 2002 or whatever? Complete with extensions to the .NET standard (perhaps some even documented) that mean the code that is written for .NET on Windows doesn't run well or at all on .NET for other platforms?

    And of course all those fancy development tools (Visual .NET) will require and make full use of these extensions.

  • by HamNRye (20218) on Saturday February 09, 2002 @07:46PM (#2980534) Homepage
    Why use different languages??

    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 .NET inception date, and look like there is cohesive plan.

    So far, NET involves a way to log into Hotmail, a planned Java rewrite, and..., and ..., um..., and...

  • by RedWizzard (192002) on Saturday February 09, 2002 @07:48PM (#2980538)
    Then it goes on to say that surely the JVM can be extended if this proves to be a selling point for .NET (which is probably true, but it kind of makes you wonder why sun haven't already done it).
    Probably because language neutrality is not really that big an advantage anyway. Java is a good enough language so that if you really need to use something else chances are you don't want the JVM anyway. The most common case where you might want to target something else at the JVM is scripting languages which appear to already be quite well supported.
  • by Anonymous Coward on Saturday February 09, 2002 @07:57PM (#2980564)
    Quote from the article:
    There are, actually, many successful "common language runtimes", with names like Pentium, SPARC and others. Mainstream CPUs are equally fitted to very different languages as they only do the most fundamental, low-level operations, so they cannot be biased towards particular languages. There aren¦t many different ways to perform a conditional branch. However, there are radically different ways to support methods and functions, or most constructs found in high-level languages. The consequence is that every language needs different compilers and runtimes to implement their features, and different libraries to support their vision of software development.


    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.
  • by sterno (16320) on Saturday February 09, 2002 @08:05PM (#2980587) Homepage
    Anybody who is qualified to write about the plusses and minusses of .Net is automatically biased. A microsoft rep or VB programmer will likely right about how wonderful it is. A C programmer will say how poor the performance of VM's are and how limited they are.

    Personally I think that those strongly familiar with Java are probably the most qualified to write on the subject of .Net. The CLR is very clearly a similar concept to the Java Virtual Machine, and thus an awareness of the benefits and weaknesses of that model provide useful insights into the capabilities of Microsoft's product.

    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.
  • by Jack William Bell (84469) on Saturday February 09, 2002 @08:06PM (#2980591) Homepage Journal

    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.

  • by sheldon (2322) on Saturday February 09, 2002 @08:22PM (#2980624)
    "...but unfortunately still bound to Microsoft's usual way of doing (and marketing) things: proprietary technology presented as the apex of openness, and a strongly biased system presented as language-neutral"

    Sounds like Sun selling Java. Proprietary openness, and strongly biased systems presented as platform-neutral. :-)
  • by sheldon (2322) on Saturday February 09, 2002 @08:25PM (#2980633)
    Language neutrality is actually quite a substantial advantage. Perhaps not to you, or Java developers...

    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 .Net.

    It is a very valuable marketing point, and it allows for a very easy transition/upgrade for many developers out there already targetting Windows.

  • by nhavar (115351) on Saturday February 09, 2002 @08:37PM (#2980655) Homepage

    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?

  • by Anonymous Coward on Saturday February 09, 2002 @08:47PM (#2980684)
    Java folks have gotten quite prickly lately over .Net. Hard to blame them - Sun is telling open source programmers to go screw themselves, and Microsoft is delivering a technically superior alternative (while SUNW heads into the dumpster). Since 1995 this is the first time that Java has been on the defensive. Its amusing.
  • by Laxitive (10360) on Saturday February 09, 2002 @08:49PM (#2980686) Journal
    Incidentally, yes. Jython allows you to natively manipulate (instantiate, send messages to, etc.) Java objects. You can even subclass Java classes from within Jython.

    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
  • Re:Correct (Score:5, Insightful)

    by danheskett (178529) <{danheskett} {at} {gmail.com}> on Saturday February 09, 2002 @09:22PM (#2980789)
    It wasnt a typo. It has caught on for large scale applications.

    For the rest of software - the stuff people buy and pay money for at retail stores, from vertical market software vendors, from various web-sites, and the miscellanous software people use on their desktops, Java has failed.

    .NET is aiming for it all - but evidence by the relase of VS.NET - which is the replacement for all MS developers - VB, C#, ASP, VFP, etc. MS owns the desktop, and .NET is an attempt to keep the desktop and displace Java.

    But make no mistake - Java failed Sun in the area of the desktop. They wanted most if not all software to be developed for Java. They wanted to see applications for business (desktop apps, mind you), custom software, etc all developed in Java. They failed at it. Most software written for the desktop is not Java based.

    And if three things happen - MS sticks to the 1.0 format, Mono finishes within a reasonable period of time, and VS.NET catches on- then most developed apps will run on multiple platforms without modification.

  • by wadetemp (217315) on Saturday February 09, 2002 @09:30PM (#2980813)
    The second paragraph from the article you posted states that "mainstream CPUs are equally fitted to very different languages as they only do the most fundamental, low-level operations, so they cannot be biased towards particular languages." If you agree with that statement, and think it's a crux in the arguement, I'm not sure how you can say you don't agree with the inclusion of "unsafe" modes in the .NET framework. They're part of what makes the framework flexible enough to even come close to supporting "non skinned" languages, and in a speedy method at that.
  • by Anonymous Coward on Saturday February 09, 2002 @10:54PM (#2981000)
    "VB.NET is a mutant bastard stepchild of VB"

    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)

    by Pituritus Ani (247728) on Saturday February 09, 2002 @10:56PM (#2981003) Homepage
    1977 - UCSD Pascal P-Code was going to unify computing under one language.

    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.
  • by SuperKendall (25149) on Saturday February 09, 2002 @11:03PM (#2981020)
    Looks like you picked the right door! Not only do you win a platform supported by a whole industry, but the only truly open [jcp.org] standard around! Now THAT bears repeating.

    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 .NET? Odd, I thought they didn't have the full standard submitted to the standards body. And I'm not clear on how I can comment on progressing ECMA standards.

    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.

    .
  • by Anonymous Coward on Saturday February 09, 2002 @11:53PM (#2981124)
    C# open standards? That's bullshit.

    Anyone who thinks so has already been screwed over by MS's PR machine.

    Think about it: do we talk about C# or .NET? And which has been standardized? Our use of language is very revealing.

    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 .NET or Windows, or making as much reference to Mono, Linux, and OS X, I'll be satisfied.

    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.
  • by ejungle (398309) on Sunday February 10, 2002 @01:39AM (#2981327)

    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:

    • Microsoft Server, Microsoft Desktop: Lucky them, full .NET capabilities!
    • Microsoft Server, Non-Microsoft Desktop: (Yeah, I think it'd be funny to see an organization like this too, but humor me. =) Too bad for these guys, they can't make full use of their .NET servers since their clients don't support everything.
    • Non-Microsoft Server, Microsoft Desktop: Too bad you can't make use of all the features on the client side because your server doesn't support them!
    • Non-Microsoft Server, Non-Microsoft Desktop: Although you don't have access to all the new fangled .NET features, you can do pretty much everything Java does. Then there's the advantage of being able to use a bunch of different languages, Java included!
    Is everyone starting to see the broader picture yet? .NET is a Java-killer for the purposes of increasing Microsoft's market share in the OS arena (If that's even possible). From which, they will be able to leverage even more products and services.

    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!"

  • by the_skywise (189793) on Sunday February 10, 2002 @03:11AM (#2981481)
    I don't understand your point.

    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 .NET functionality. (not code to the .NET API, you must use .NET syntax) In some cases, basic C++ operations (like casting) cannot be used if your app will be .NET capable, and you must code explicit workarounds to case using the .NET way (see last month's MSDN journal...)

    (oh and C is NOT a .NET language... also from the MSDN)

    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...
  • by mestar (121800) on Sunday February 10, 2002 @09:30AM (#2981879)
    A C programmer will say how poor the performance of VM's are and how limited they are.

    this might be true for other VM's. .NET classes are compiled to native code at installation time, or at the moment of first use (and saved as compiled).

    they are never interpreted.
  • by Phil-14 (1277) on Sunday February 10, 2002 @11:15AM (#2982115)
    "CLR lacks continuations" ... so does JVM

    "CLR requires static inheritence" ... so does JVM
    "CLR lacks multiple dispatch..." etc
    I certainly think that the CLR could stand the criticism and have its hype deflated, but I'm not finding a lot to recommend the JVM... Sun doesn't even acknowledge, much less support, other languages on the JVM. [...] I also note that there are languages very not like C# available for .NET, like haskell and scheme.


    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)

    by eud (556719) on Sunday February 10, 2002 @12:55PM (#2982501) Homepage
    I would say it is obvious that "write once, execute everywhere" concept failed miserably at least at the client side. It is simply impossible to write a non-trivial and useful application for several platforms because it must interoperate with different platform-specific mechanisms. Do all the Java-supported platforms have Windows-type tray?

    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

  • by the_skywise (189793) on Sunday February 10, 2002 @01:15PM (#2982563)
    So what *IS* my flawed premise?

    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 .NET argument of language neutrality... because everyone wants to use different languages...
  • Re:Parrot? (Score:2, Insightful)

    by alext (29323) on Sunday February 10, 2002 @07:27PM (#2984086)
    Well, we [slashdot.org] have [slashdot.org] had [slashdot.org] quite [slashdot.org] a lot [slashdot.org] to [slashdot.org] say [slashdot.org] about [slashdot.org] this [slashdot.org] but [slashdot.org]
    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.

The world is moving so fast these days that the man who says it can't be done is generally interrupted by someone doing it. -- E. Hubbard

Working...