Slashdot Mirror


One Runtime To Bind Them All

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

32 of 400 comments (clear)

  1. Unbiased Articles? by Scrag · · Score: 4, Insightful

    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.

    1. Re:Unbiased Articles? by joto · · Score: 5, Interesting
      I believe this article is actually quite unbiased, considering the source it came from. It admits that CLR is probably better than JVM for implementing other languages than C# or Java, but that it's far from the holy grail MS makes it sound like.

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

    2. Re:Unbiased Articles? by harlows_monkeys · · Score: 3, Interesting

      Try this article by Bertrand Meyer.

    3. Re:Unbiased Articles? by RedWizzard · · Score: 4, Insightful
      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.
    4. Re:Unbiased Articles? by sheldon · · Score: 5, Insightful

      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.

  2. Topic beat to death already... by heavy · · Score: 3, Interesting

    ...under the this thread...

  3. Well, m$ has to do something. by autopr0n · · Score: 4, Interesting

    I'm personally a java fan myself, and I use JSPs for autopr0n.com. But as much as I would like to see that technology succeed, I don't really think there's anything 'wrong' with .net.

    Java itself is not any kind of 'true' general standard, sun can do whatever they want to with it. There's no real reason that Microsoft should bind itself to sun's implementation. So .net is pretty much just a ripoff of java, there are some 'evolutionary' enhancements like XML serialization and that sort of thing.

    This won't kill java anymore then java would have killed windows. Microsoft's CLR will provide a better way to write windows-only programs. I don't see why everyone needs to be up in arms about it.

    --
    autopr0n is like, down and stuff.
    1. Re:Well, m$ has to do something. by Anonymous Coward · · Score: 3, Interesting

      Java doesn't provide a true cross-platform, high quality application development environment?

      Could have fooled me. I develop Java apps on a Linux machine that are deployed not only to other operating systems but to PDAs and other connection limited devices such as java capable cell phones. All with a true cross platform, high quality development environment that is very productive.

      Geez, some people's kids.

    2. Re:Well, m$ has to do something. by abigor · · Score: 3, Insightful

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

    3. Re:Well, m$ has to do something. by the+eric+conspiracy · · Score: 4, Insightful

      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.

    4. Re:Well, m$ has to do something. by abigor · · Score: 3, Interesting

      OK, first I'm sorry about the crankiness...I'm just so sick of people thinking it's all about the desktop.

      Sure, .NET may succeed on the desktop, who knows. But it's really not the main focus of the overall architecture. The Common Language stuff will work as an application framework, but really, you're basically talking Win32 -- there isn't a compelling reason to switch from the ATL or MFC or whatever. The .NET strategy is server-based. MS knows as well as anyone else that web-based interactions with a remote server (whether it's serving up your word processor or a car-rental/airlane booking service) are where the future is at. I don't deny that the .NET framework will count for something on the desktop, but MS already own that. They want to own the server side as well.

      If you still don't believe me, you'll (kindly) notice that MS marketing literature is mainly directed at J2EE. MS even went so far as to re-implement the Java Pet Store server in .NET to compare benchmarks. Remember, MS is about increasing revenue -- it's not happening on the desktop. Once (if) web services explode, MS wants .NET to be the implementation framework of choice.

    5. Re:Well, m$ has to do something. by Deluge · · Score: 3, Funny

      "what about Servlet programming and JSP for dynamic web pages and database connectivity? These are desktop applications! They just run in a browser; on the desktop"

      Very true. .jsp pages seem to be by far the most common dynamic pages seen on bank and investment websites. I'd say that seeing such heavy use in such demanding environments speaks quite well to how successful java's been.

  4. Articles at Microsoft.com by Metrollica · · Score: 3, Informative

    There are a few articles at Microsoft on this topic here and here.

    --



    --Metrollica
  5. Comment removed by account_deleted · · Score: 3

    Comment removed based on user account deletion

  6. Correct by SimonK · · Score: 4, Informative
    You were dead on when you said:

    Exactly. Never. Java is a neat little concept - that has some neat little benefits. But it has caught on for large-scale applications.

    Though I suspect that was a typo. Java has caught on for large-scale applications. The reason you can't buy Java apps in Best Buy is because they don't sell large scale applications. They sell boxed programs for PCs and Macs that are almost exclusively written in C++. Java's principle use is for the server side of various business systems.

    This is the field MS are aiming for with .NET, too. Indeed, that seems to be its principle purpose: to displace Java from back-end server systems. Microsoft already owns the desktop, and Java is no particular threat there for reasons that don't need to be rehearsed again. For the device market, they have other plans.

  7. Thats *more* biased by SimonK · · Score: 4, Funny

    Meyer brought into .NET from an early stage, as did several other academics with pet languages noone ever uses. He doesn't tackle the (huge) issues with actually implementing Eiffel on the CLR, probably because he's starting to lose touch with reality due to spending too much time being a pundit.

  8. Re:What I don't get.... by HamNRye · · Score: 3, Insightful

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

  9. How could it be unbiased? by sterno · · Score: 3, Insightful

    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.

    --
    This sig has been temporarily disconnected or is no longer in service
  10. Closed standard? Open Standard? I pick door #2 by Jack+William+Bell · · Score: 5, Insightful

    This point has been made before, but it bears repeating. C# and the CLI (Common Language Infrastructure) are ECMA 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.

    --
    - -
    Are you an SF Fan? Are you a Tru-Fan?
  11. Very nice article. by DaveWood · · Score: 5, Interesting

    What a pleasure to see such a balanced, well-written and thorough analysis of the situation. I didn't see any great evidence of Java "advocacy" - this person appears extremely well-versed in langauge design and familiar with a good variety of languages, as well as more than willing to point out Java's flaws.

    The author is saying pretty much what I figured, which is that .NET is much better than what MS has been doing in the past, however it's still just a sugared-up clone of J2EE, whose "cross-langauge" benefits are ultimately dubious and primarily a marketing invention.

    I would also make the case that "unsafe" mode/pointer arithmetic is a flaw, but that's not the matter at hand. The high point of the article were these two paragraphs in the conclusion:

    "Playing with the .NET SDK, the cross-language support looks impressive, but the illusion holds true only until realizing that all languages in the mix are virtually identical. Microsoft has actually invented the concept of skinnable language: changing a language's most superficial aspects, and claiming the result to be a new language. There is only One True Language that is C#, and "skins" offered by Microsoft and third parties. Just like in GUIs, these skins will alter the system's look and feel, add a few features, but never compete with a fully new toolkit."

    For those quick to make an ignorant response, he's not saying more radical structural departures are impossible, though many are - but more often that diverging "client languages" suffer in performance and, in many cases, have been "embraced and extended" in order to become compatible. He goes on:

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

    1. Re:Very nice article. by wadetemp · · Score: 4, Insightful

      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.

  12. I like this quote... by sheldon · · Score: 3, Insightful

    "...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. :-)

  13. Comment removed by account_deleted · · Score: 5, Insightful

    Comment removed based on user account deletion

  14. Comment removed by account_deleted · · Score: 3, Interesting

    Comment removed based on user account deletion

  15. Yawn . . . by Pituritus+Ani · · Score: 4, Insightful

    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, there is nothing new under the sun.

    --

    Another proud carrier of the $rtbl flag

  16. And behind #2 is... Java! by SuperKendall · · Score: 5, Insightful

    Looks like you picked the right door! Not only do you win a platform supported by a whole industry, but the only truly open 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.

    .

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  17. Java has not yet failed on the desktop... by SuperKendall · · Score: 3, Informative

    I've written a rather large custom application before using Java and Swing - that was back around when the JDK 1.2 had just come out. The base target machine was a P166 with 32MB of ram rinng Win95.

    After some work, we had an MDI all-swing application taht worked pretty well and had some a number of nice custom controls. While a little slow on a P166 with 32MB of RAM, it was quite usable and needless to say on anything even a bit more powerful (like the developers screamin' fast P450's) you'd think it was a native app.

    So, speed is not really Java's problem on the desktop.

    The swing framework I found great and very nice for devloping powerful custom controls with minimal code. I would not say that a good GUI library is what Java lacks either (and there are others to choose from for those that hate Swing as some do).

    What I think Java has sufferd from is the large footprint and somehwhat long startup times (though those have been reduced). OS X has helped a lot be really integrating Java into the UI a bit, and doing things like sharing some Java resources for running programs.

    So, Java needs some way to help share Java resources to make many desktop Java apps practical.

    What Java also needs though is desktop Java programming tools. Some are already there - both Installshield and InstallAnywhere make GREAT Java installers that work well across many platforms. But I would say IDE's have not really helped the Desktop standalone developer. Sure there are a lot of GUI tools, but I think desktop app development needs more than just GUI builders to help you build a good desktop app. While I'm not exactly sure what that might consist of, I think that's an area that needs work.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  18. should have been a comparison chart by scrytch · · Score: 4, Interesting

    "CLR lacks continuations" ... so does JVM
    "CLR requires static single inheritance" ... 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 languages other than Java on the JVM, with the exception of GJ, which it would rather absorb than support.

    I might also note that there are languages very much not like C# available for .NET, including haskell and scheme.

    --
    I've finally had it: until slashdot gets article moderation, I am not coming back.
  19. Generic Types by Oink.NET · · Score: 5, Informative
    Generic Types. There is currently zero support for generic programming in the CLS.

    Nobody has mentioned this yet, so I will. A research version of the CLR implements true generics, but because they only have limited resources, they decided not to include it in the first release. The following is quoted from this interview with Chief C# Language Architect Anders Hejlsberg:

    Hejlsberg:
    But with respect to the generics that you asked about, I definitely think generics are a very useful concept and you can certainly tell that from all the generics research that's taking place in academia and industry. Templates are one solution to the problem. In our internal discussions, we concluded that we wanted to do it right for this new platform. But what we would really like is to have generics understood by the underlying runtime. This is different from how some of the generic prototypes have been built. Take Java's notions of "erasure" where there's really no knowledge of generics in the system. By having the common language runtime understand the concept of generics, multiple languages can share the functionality. You can write a generic class in C# over in one place and someone else using a different language can use it. But making generics part of the runtime also enables you to do certain things much more efficiently. Instantiation of generics should ideally happen at runtime. With C++, instantiation of templates happens at compile time, and then you have two options: you can either let your code bloat or you can try, in the linker, to get rid of some of the bloat. But, if you have multiple applications, you can forget about it. You're just going to get bloated code.

    If you push the knowledge of generics into the common language runtime, then the runtime can understand that when an application or a component asks for a list of "Foo's," it should first ask: "Do I already have an instantiation of a list of "Foo?" If so, use that one. Indeed, if Foo is a reference type, and if we do the design right, we can share the instantiation for all reference types. For value types, such as ints and floats, and we can create one instantiation per value type. But only when an application asks for it. We've done a lot of the design work and groundwork necessary to add generics to the runtime.

    It's interesting you asked earlier about the IL because deciding to add generics impacts the design of the IL. If the instructions in the IL embed type information -- if, for example, an Add instruction is not an Add, but is an Add int or an Add float or an Add double -- then you've baked the type into the instruction stream and the IL is not generic at that point. Our IL format is actually truly type neutral. And, by keeping it type neutral, we can add generics later and not get ourselves into trouble, at least not as much trouble. That's one of the reasons our IL looks different from Java byte code. We have type neutral IL. The Add instruction adds whatever the two things are on top of the stack. In a generic world, that could translate into different code when the generic is instantiated.

    Osborn: Is that available to all .NET languages?

    Hejlsberg:
    Yes. Microsoft Research in Cambridge has created a generics version of the common language runtime and the C# compiler. We're looking at how to move that forward right now. It's not going to happen in the first release, that much we know, but we are working on making sure that we do things right for the first release so that generics fit into the picture.

  20. Comment removed by account_deleted · · Score: 4, Interesting

    Comment removed based on user account deletion

  21. Re:apply the razor please by mestar · · Score: 3, Interesting
    C# is Java
    Except that it isn't mature,

    it is more mature than you think.


    it is not the language, it is the libraries that you code against. for example, Windows Forms could easily be called WFC 2.0, same for many other classes.


    ADO.NET is a successor to ADO, it is not 'imature' as you say. also, it is two generations ahead of anything that java has to offer to access databases.


    ASP.NET is again the next version of ASP, it improved od ASP, it is not a '1.0' version. again, much richer that JSP.


    take web services, and then look at sun's pathetic response (oh, yeah, we have web services too). i would call java web services api much more imature that microsofts.

  22. The LOTR reference is hauntingly correct! by KlomDark · · Score: 3, Funny

    Remember the whole story about the _other_ rings: Power given to the leaders, to control their people. Of course, the leaders took the rings out of their personal greed. Sauron completely takes them, as he is able to control all the other rings, and holders of those rings, with the ONE RING.

    Sounds just like it: Here, use these beautiful new "rings" (.NET), and all will be good. At least until I use my super-powers to control you when you least expect it.