Please create an account to participate in the Slashdot moderation system

 



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:
  • by heavy (172353) on Saturday February 09, 2002 @05:44PM (#2980394)
    ...under the this [slashdot.org] thread...
  • by autopr0n (534291) on Saturday February 09, 2002 @05:55PM (#2980417) Homepage Journal
    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.
  • by joto (134244) on Saturday February 09, 2002 @06:02PM (#2980437)
    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).

  • by Anonymous Coward on Saturday February 09, 2002 @06:11PM (#2980459)
    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.

  • by harlows_monkeys (106428) on Saturday February 09, 2002 @06:12PM (#2980462) Homepage
    Try this article [eiffel.com] by Bertrand Meyer.
  • by storem (117912) on Saturday February 09, 2002 @06:36PM (#2980511) Homepage
    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.

    Q: So why do we have the need for a next bytecode layer on top of Pentium & SPARC?
    A: To be cross platform! This is correct in the case of Java and the JVM. The intention is compile once, run everywhere.

    The problem we now have however is that Microsoft sees cross platform differently in my opinion. Cross-platform is merely compatibility between their CE, Win9x and NT product lines. How big will the push be within one year by Microsoft to keep the developed truly cross platform?

    Isn't that the question we must ask ourselves?

  • by Anonymous Coward on Saturday February 09, 2002 @06:49PM (#2980539)
    The MONO project will bring the .net Virtual Machine to Linux and Mac OS X, but, what about all the .net APIs ? These are not in the ECMA standards. The VM is pretty useless to run business Applications without huge APIs.

    Will you end up needing to code a different version of your Sharp# application? One for NT/XP, and one for MONO because they have different proprietary APIs for GUI development or XML processing ?

    It seems to fulfill the cross-platform development promise even less than Sun's VM with its 'standardized' Java classes and APIs.
  • by Anonymous Coward on Saturday February 09, 2002 @07:00PM (#2980575)
    This isn't that hard people. Go download the .NET STANDARD, and go find the documents that Sun publishs about their technology.

    Now look at the VM. Clearly Microsoft wins this one. The design goal of the JVM bytecode was obviously "design the easiest to implement VM that we can compile Java to."

    As for the libraries; they both suck.

    C# vs Java the language; C# is Java, just with most of the lessons painfully learned from Java applied, and a few of the more ridiculous design mistakes hidden slightly better (automatic boxing).

    The question isn't "Is C#/.NET better than Java" because everyone who isn't a MS hater or a one-language-programmer J2EE hack can see the answer. The real question is: "Is the superiority of C#/.NET enough to offset the costs of moving to it from J2EE."
  • by coltrane99 (545982) on Saturday February 09, 2002 @07:08PM (#2980597)
    Seeing that C# is a 90% copy of java, it would be difficult to think of a more qualified base of people to review C# than java experts... This charge of 'bias' sure gets thrown around loosely these days. I seem to recall that an article had to contain untrue or highly misleading statements before it would be called 'biased'. Now, if you have a pre-existing point of view you are 'biased'. Very strange, how the language changes.
  • Very nice article. (Score:5, Interesting)

    by DaveWood (101146) on Saturday February 09, 2002 @07:10PM (#2980600) Homepage
    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."
  • by Eric Damron (553630) on Saturday February 09, 2002 @07:20PM (#2980620)
    I'm no Microsoft fan but .NET is not as bad as the author makes it out to be.
    He lists numerous limitations of the CLR/CTS/CLS. Lets remember that .NET is in its infancy. How great was Java when it first came out?

    If Microsoft fails to deliver, we'll all have a great laugh. However, if Microsoft does deliver and MONO succeeds, we'll have an explostion of desperately needed applications that will run on Linux.

    The worst thing that I can say about .NET is that it is controlled by the Evil Empire and the worst thing I can say about MONO is the name makes me think of a horrible illness that takes a long time to get over.

  • by nagora (177841) on Saturday February 09, 2002 @07:47PM (#2980683)
    This point has been made before, but it bears repeating. only tiny parts of C# and the CLI (Common Language Infrastructure) are ECMA standards. Those standards are of no relevence in the real world due to their high level of incompletness and the very high degree of power that MS has amongst developers on the dominant platform.

    TWW

  • by Amigan (25469) on Saturday February 09, 2002 @08:16PM (#2980772) Homepage
    Been reading and talking to some friends who worked on IBM's SOM product/project in the early 1990s. Seems that CLR is pretty much the same concept. SOM allowed for you to access objects (and their associated methods) from any programming language. Of course it never made it much past OS/2 - though PM Shell used it (I believe). Anyone used SOM think CLR is the same thing - yet again??
    [ibm.com]
    SOM 3.0 Readme
  • by KidIcarus (74147) on Saturday February 09, 2002 @08:26PM (#2980799)
    Yes you can compile Python to the JVM, but can you use Java objects inside Python code?

    Yes. See the documentation here [jython.org]

  • by Daimaou (97573) on Saturday February 09, 2002 @08:46PM (#2980856)
    With all the talk of .NET and C# killing Java, I decided to take a look at Visual Studio .NET for myself.

    One question that I have not seen raised is this: It is easier to write programs for Linux and *BSD than it is to write programs for Windows. Many open-source programmers use this as an excuse for charging for the Windows versions of their products.

    That said, why would anyone but a Windows programmer want to program for .NET when it is as messy to program for as Windows is?

    Mono may support .NET programs, but do Linux, etc. developers really want to go to all the trouble of writing to .NET when Sun's JVM provides the same functionality and a much cleaner API?

    I think if Sun's JVM supported other languages like Perl, Python, C, C++, etc. .NET would have absolutely nothing to offer to the developer community.

    I think the languages support in CLR are impressive, but still, if you have to write to a Windows-like API, what good does it do you?

    Although there are a lot of things I like about .NET and the dev tools that go along with it, I still think Java and the JVM are better for cross-platform development.
  • by abigor (540274) on Saturday February 09, 2002 @08:52PM (#2980873)
    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.
  • by danheskett (178529) <danheskett@NoSPAm.gmail.com> on Saturday February 09, 2002 @09:45PM (#2980982)
    I disagree with some things.

    MFC is a rat's nest of backwards compatibility, broken code, and bugs. There is a big reason to switch from that - its freaking nasty and bad-ass to code for. .NET is a major leap forward in API based programming.

    Second, people will use .NET by default - the new VS tools are targeted for it. Over the next few years people will adopt it. The exact percentage depends on merit, but say, a good 1/4 will switch just to have the "latest thing".

    True, .NET is targeted to kill J2EE et all. If the side effect of that effort is cross-platform desktops apps then great! I'd love to be able to go to download.com and pick from 99% of the posted applications for my linux box instead of 1%. I'd love to be able to use main-stream software that my business partners and clients use without booting Windows. I'd love to write code for my Windows using clients and easily and without modification run it on my box.

    I think .NET will succeed in that goal - thats a goal that Sun attempted and failed at. Despite the server side adoption, the desktop, which IS a major component of computing, failed.

    And thats' the point - .NET may deliever on the idea of desktop applications that run on many platforms. And if that's true, then great!
  • by scrytch (9198) <chuck@myrealbox.com> on Sunday February 10, 2002 @01:08AM (#2981381)
    "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.
  • Parrot? (Score:2, Interesting)

    by ClarkEvans (102211) on Sunday February 10, 2002 @01:43AM (#2981431) Homepage
    I'm curious to hear what others have to say about Parrot [parrotcode.org]? This VM seems to be optimized for Perl, but will probably be able to handle Python/Ruby rather well. I would be interesting to know why Miguel's Mono [go-mono.com] chose to back Microsoft's C# instead of our core open-source langauge's Python, Perl, Ruby, etc.
  • by danheskett (178529) <danheskett@NoSPAm.gmail.com> on Sunday February 10, 2002 @02:47AM (#2981518)
    Sorry, I disagree.

    A core tenant of the .NET Framework is interoperability. Messages are strongly encouraged to be passed with XML RPC, or XML-HTTP style messages. The 1.0 specification has been sent to the ECMA. They are shipping those products now (the framework and the development tools).

    Your four hyoptheticals are entirely wrong. And for several reasons.

    But the most important thing to remember is that it is not all or nothing. With Mono running on my GNU\Linux box I would be able (assuming it finishes) to run any .NET Framework 1.0 targeted app. I mean, thats just simply the way it is. They are reimplementing the whole Framework. What does this mean? This means that an all-Linux shop could run most of the apps that will be developed in the coming months and years.

    Why will MS let this happen?

    Several reasons:

    MS makes a staggering amount of money from applications - more than any of its other groups. It does very well with its core products - Visio, Office, etc. These products of course integrate with MS servers, but not necessarily require them (Outlook integrates with Exchange, but not exclusively - you can always use POP/IMAP). These products still have significant value even if not working with MS servers. In fact, few of MS's apps really *require* MS servers. There is no reason you have to use WIndows 2000 server with Windows 2000 Professional. And better yet, many products are in the works to replace MS servers with MS desktops (SAMBA is a better SMB server than Windows).

    The point that Miguel was making a ways back was that either the GNU world wins. If MS extends and destroys the 1.0 Framework, then so be it. But the environment will exist, and it alone, by itself, will be better than how most GNU apps are developed. In another case, lets say that MS plays nice with Mono and they co-exist. A few of MS's customers might swith desktops to Linux, while keeping MS products for applications (say if Office was written for .NET).

    Whats in it for MS? First, they keep their dominance in the critical office software. They keep Office. Even if Windows is killed, fragmented, dies, or stopped dead in its tracks the critical core applications unit survives. That's good.

    Second, it creates a compelling reason to upgrade. Many many many places run Windows 95/98 without thought of moving to modern robust Windows environment based on the NT kernel line. MS would really like to see these people with a more modern OS (in their view). The whole .NET thing encourages them to move to the "next level".

    Thirdly, it increases MS's market for future applications and services - they see the trends and they can't stop them traditionally. Linux and OSS are here as platforms, but in MS's view, the application space for OSS platforms is still growing. This is a place .NET can win - one of the last places MS can still expand its market share (other than the server space, which conveinently, is target as well with .NET).

    Whats the point?

    In the end, all I really care about is the cross-platform application development. If .NET means that I can, without relearning much of anything, take my Windows and move them to multiple platforms, than I am happy. In that regard, I stand my initial statement at the top of the thread that .NET may suceed where Java has failed - by bringing write once run anywhere to mainstream applications.
  • by stardeveloper (464143) on Sunday February 10, 2002 @04:39AM (#2981669) Homepage

    I think people have to realize that Java or .NET can't be one thing for everything.

    Java couldn't succeed on applet/desktop side, that's a fact. But it is also a fact that it succeeded on enterprise application framework side, much to the success of it's J2EE platform. J2EE is a complete framework for building enterprise class applications ( JSP to EJB ). Much to it's success is due to the role played by IBM, Oracle, BEA, Borland, Sybase and host of other companies.

    Probably if we had been able to create an open source enterprise class application framework using "C" ( my favorite language ), perl, php etc, we would have created faster and smaller apps than any of these two frameworks. When I talk of enterprise class I mean framework which supports Messaging, Transactions etc.

    .NET is a new platform and is extremely easy to develop for, thanks to expensive VS.NET. It contains few things which Java lacks ( won't comment on those ). But it is yet to see if it is able to get the attention Microsoft wants it to.

    The point is that both of these frameworks are out there because their companies ( Sun and Microsoft ) want to get the maximun money out of you ( and your companies ), not that they love and care about you so they want you to use their software. So my suggestion is that don't get emotional in taking one's side against the other, when these companies care about their interests, you should care about your interest; "choose the software which is best for the job at hand" and stop believing in Java or .NET as if they are relegions.

    Stardeveloper.com
    http://www.stardeveloper.com [stardeveloper.com]

  • by blibbleblobble (526872) on Sunday February 10, 2002 @07:05AM (#2981799)

    This isn't about the difference between VB and VC and VJ++ - note what the writer said about "skinnable languages"

    It's about the difference between Perl and Basic, between AppleScript and Cobol. Between languages which are as different as Arabic is to English. Different not because of some words that are changed, but because the entire mindset of those who use them is different.

    <analogy style="yours">So you understand Java? Well, if you're not an idiot, you'll find it easy to learn Assembler</analogy>

    <analogy style="microsoft's">We are multi-lingual. We support american english, australian english, Queen's english, estuary-english, scottish-english, and CAN-YOU-SPEAK-ENG-ER-LISH english</analogy>

  • by mestar (121800) on Sunday February 10, 2002 @08:14AM (#2981849)
    JDBC is much more friendly than ODBC

    java just copied ODBC, even the name is almost the same. however, even at that time, microsoft had several easier to use APIs for accessing data (DAO, etc), not to mention APIs that come later, like ADO, and now ADO.NET. Compared to ADO and ADO.NET (and even DAO), JDBC is very low level and much harder to use.


    also, J2EE (2000) is a directy copy of MTS (1998), and JSP is a direct copy of ASP. java almosy literaly copied existing Windows technologies.


    now with .NET, it's microsoft's turn.

  • by mestar (121800) on Sunday February 10, 2002 @08:23AM (#2981863)
    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.

  • Re:.NET securitry (Score:1, Interesting)

    by Anonymous Coward on Sunday February 10, 2002 @10:07AM (#2982085)
    Moreover, this takes responsability off the user. What if a company configures the security wrong, and a virus is then sent to thousands of users, with no virus scanner because they were told the servers took care of that.
    Ignorant, ignorant, ignorant. The CLR on your machine provides the security framework. If I put up a virus that you download off the network, your CLR will refuse to run it. All the server has done is serve the file up.

    Finally, do you REALLY want .NET sifting and picking through all YOUR information, and code?
    Yes. Just like I want Java's sandbox picking through my applet data and code, to stop it doing bad things.

    Are you 15?
  • Re:high-quality? (Score:2, Interesting)

    by aneil69 (557906) on Sunday February 10, 2002 @11:07AM (#2982320)
    The article misses some important points: "The CLS only supports single, static inheritance. " Please distinguish the CLS (Common language specification) from the CLI (Common language infrastructure). The CLI is the ECMA specification for the Microsoft "Virtual Machine". The CLS is a proper subset of the capabilities of the CLI (Which DOES support multiple inheritance, by the way). The CLS is a recommendation for programmers who want to develop components which can interoperate with a wide variety of languages. "There is currently zero support for generic programming in the CLS." Again, understand the difference between CLS and CLI/CLR. The current version of the CLI/CLR does not support generics, either, though Microsoft has stated that the next version does have support for generics. "For the CLR, we can certainly rely that everything is optimized to favor C#. The result will be inferior performance for any language which behavior is significantly different from C#." True, but 1. The goal is language interoperability and 2. Microsoft admits this quite explicitly [microsoft.com]. So the one of the central claims of the article that Microsoft claims that this is a tool which does all things for all people, is quite false. Microsoft very clearly acknowledges the limitations of the CLR. Also, take a look at work at Microsoft Research [microsoft.com], which explains how MSIL can be extended to include a number of features for functional languages (one of the complaints of the article). All I can say, is that the Microsoft bashers need to take a closer more honest look at the CLI/CLR, understand it, and the huge benefits its going to bring before they bash it.
  • by Anonymous Coward on Sunday February 10, 2002 @12:14PM (#2982559)
    Uh...short of building an interpreter for it in Java, compiled Scheme is unimplementable for the Java byte code. The JVM doesn't permit custom stack manipulation, a necessity for implementing call-with-current-continuation. Hence there are a bunch of pseudo-Schemes available for Java (SILK, Kawa, etc.), none of which can implement the full standard.

What this country needs is a dime that will buy a good five-cent bagel.

Working...