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

177 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 coltrane99 · · Score: 2, Interesting

      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.

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

    6. Re:Unbiased Articles? by sheldon · · Score: 2

      I think what he means is that so far the "java experts" who have had their articles posted here have a particular anti-Microsoft bias.

      Quoting Bill Joy or James Gosling isn't going to give you an unbiased view of .Net. I would think that's blatantly obvious to any intelligent person.

    7. Re:Unbiased Articles? by anpe · · Score: 2

      It is a very valuable marketing point

      That's the point. The most important is how your PR dept will present your product : Jim McCarthy (responsible for early MS VC++'s releases) in Dynamics of Software Developement explains how it doesn't really matter what are your product's capabilities. The more important is to make people confident about it.

      The matter in C# vs Java is who offers the easiest language. Users will pick the one they understand ...

    8. Re:Unbiased Articles? by sheldon · · Score: 2

      Oh, I read the article.

      The article itself is really quite unimportant. The language neutral ability of the CLR is a marketing point as it's a convenient selling point to Visual BASIC developers looking to upgrade. Nobody disputes that, but it is still a very nice feature to have. I challenge anybody to find a company which has code written in only one language.

      The conclusion the article makes is what most critically damns it as biased. His points are purely political in nature, he admits it. He goes on to try to distance himself from the bias by claiming he is not condemning .Net framework and it's technical capabilities.

      But then he goes on to make an anti-Microsoft statement, condemning this feature as nothing more than marketing, but yet instead implying that Sun is somehow different with their Java hype.

      There are a lot of articles out there about .Net which are positive in nature. Those articles don't make it to slashdot because of the biased nature of the web site. That was the point the original poster was making. Hell, /. didn't even post an announcement when the .Net framework SDK became available for download.

      The first step is to admit when you have a problem. From there you can solve it.

    9. Re:Unbiased Articles? by flacco · · Score: 2
      Try this article [eiffel.com] by Bertrand Meyer.

      Unbiased? Maybe he's just coming in his pants over the prospect that someone might actually use his language?

      --
      pr0n - keeping monitor glass spotless since 1981.
    10. Re:Unbiased Articles? by ryanvm · · Score: 2

      I've met quite a few VB developers who are unwilling to give up their syntax yet would love to take advantage of .Net.

      Wow. This is going to sound pretentious - but I can't imagine there are that many VB developers that can actually comprehend the advantages of the .NET framework. Perhaps they are just keen on Microsoft's .NET services?

      I mean, VB is a pretty basic development environment.

    11. Re:Unbiased Articles? by rlowe69 · · Score: 2

      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 should be known that VB syntax in .NET is actually a bit different than VB6, to accomodate support for assemblies, classes, OOP, etc and other things (sorry I'm short on details, but I'm no VB expert). So your friends may have to give up a bit of their syntax after all.

      --
      ----- rL
    12. Re:Unbiased Articles? by Lemmy+Caution · · Score: 2
      Are you willing to work at the bargain-basement prices that a part-time VB coder who actually has another role in the department s/he works in, so that the small little VB app that serves a group of, say, 20 people can get done in budget?

      I didn't think so.

    13. Re:Unbiased Articles? by Dyolf+Knip · · Score: 2
      I agree that the number of people using languages that aren't well supported by .NET would be small, but even one half of one percent of all programmers is still a lot of programmers, and there are certainly things in those languages that cannot easily be done by C# or its 'skins', as the article called them.

      It's one thing to make a common runtime that doesn't support them and quite another to do so and then claim that it is "totally language-neutral" when there are languages that cannot be supported at all. M$'s marketing department at work again.

      --
      Dyolf Knip
    14. Re:Unbiased Articles? by sheldon · · Score: 2

      Sigh.

      To clarify, most of the developers I work with are doing COM middle tier work. Your experience with VB apparently is limited to version 3.0 under Win3.1. :(

    15. Re:Unbiased Articles? by sheldon · · Score: 2

      VB.Net does remove some of the cruft that was left over from interpreted BASIC, and makes some of the syntax more consistent and orthogonal. VB.Net now offers more OOP functionality, as well as the ability to do multi-threaded apps, services, console apps and so on.

      But primitives such as For...Next and so on all operate the same way, which is sort of the point.

    16. Re:Unbiased Articles? by sheldon · · Score: 2

      "I bet that almost every company has source in more than one language, but most don't expect that code to be able to talk to each other. "

      Yes, because it's never worked well in the past. That doesn't mean that it shouldn't work well.

      "How do you get news that is not biased? Name one place (besides first hand) to get unbiased news."

      There are a variety of websites which simply link to interesting articles. Slashdot is very selective in which stories they link to... they have to keep the troll content up somehow.

    17. Re:Unbiased Articles? by blibbleblobble · · Score: 2, Interesting

      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>

    18. Re:Unbiased Articles? by SerpentMage · · Score: 2


      Yeah that's it, extend the CLR to allow more languages like C++ and Eiffel. And those instructions would allow more flexibility. Oh wait I forgot that is called assembler and it is called a CPU!!!

      Seriously folks, when we abstract the CPU for the sake of selling technology things have become very sad...

      In that sense I prefer what Transmeta is doing.

      --

      "You can't make a race horse of a pig"
      "No," said Samuel, "but you can make very fast pig"
    19. Re:Unbiased Articles? by ryanvm · · Score: 2

      I wasn't trolling, but I knew I was gonna get flamed for my post.

      The point I was trying to make is that if you're sophisticated enough to be making Win32 API calls or able to realize the advantages of the .NET CLR, odds are you won't be using a language so limiting as Visual Basic.

      Doing "intelligent" coding with VB is like a machine shop that only uses Legos.

    20. Re:Unbiased Articles? by LatJoor · · Score: 2

      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.

      Actually, 'biased' does mean having a pre-existing point of view. If you make highly misleading or untrue statement you are not biased, you are a liar.

    21. Re:Unbiased Articles? by sheldon · · Score: 2

      How do you write a switch statement in VB? Now how about VB.Net?

      What about a For...Next loop?

      Maybe you aren't aware, but the syntax changes made to VB.Net aren't as substantial as you think. The main differences was the deprication of primitives that are no longer meaningful and haven't been for years. They also improved symmetry and orthogonality, and the syntax for procedure declarations has changed to reflect the new capabilities.

    22. Re:Unbiased Articles? by sheldon · · Score: 2

      VB would be most comparable to using CNC tools in a machine shop... not legos.

      For most development tasks done in house there is simply no need to waste your precious time screwing around with C++.

      It's clear you don't know much about VB... Which is unfortunately pretty typical. :(

      This is not to say that I intend on using VB.Net. I'm a C programmer myself, and find C# to be appealing. But the point is, it is there if someone does want to use it. If Microsoft abandoned the language syntax completely, they'd lose the majority of their development community.

    23. Re:Unbiased Articles? by crucini · · Score: 2
      Actually, I think NTRM meant that the languages being proposed as victims of .NET bias are fairly marginal. C has got to be the single most important language, and the compromises, if any, involved in supporting it were not discussed. C is certainly more important than Eiffel.
      I agree that the number of people using languages that aren't well supported by .NET would be small...

      Lots of business apps are coded in Perl and Java. But I guess those are not "not well supported" - they're "not supported".

      I think the whole thing is a marketing tempest in a teapot. Perl already runs on more platforms than .NET ever will. The Parrot VM is already faster than Perl 5.6 and it will support modern, efficient languages like Perl and Python.
    24. Re:Unbiased Articles? by RedWizzard · · Score: 2

      Two reasons I can immediately think of:
      Efficiency: obvious.
      Some language features require VM support which then imposes requirements on all users of the VM. I'm thinking about reflection etc in this case.

  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 Malcontent · · Score: 2

      " It is very possible that .NET will suceed where Java failed - true cross platform, high-quality application development environment."

      Well there are two things wrong with this sentence.
      1) What makes you think Java failed in being a true cross platform high quality application development environment? What is your definition of fail in the first place? Are you saying there are no applications written in java that are cross platform? This is a nonsensical thing to say considering the millions of java devlopers in the world and the tens of thousands of businesses using it every day in massive scaled applications. You must have some really whacked definition of the word "fail".

      2) GNU will create mono. Mono will run C#. It will not be 100% compatible with the MS implementation. This is because MS holds patents on most of the .NET infrastructure. Also the some of the most important parts of the .NET are not submitted to any standards body and are not published. Mono will have to do without them.

      Mono will not bring cross platfrom capabilities to .NET.

      --

      War is necrophilia.

    5. Re:Well, m$ has to do something. by ndfa · · Score: 2

      Well not from BestBuy but across the street (in RedWood City) from it is Oracle which seems to have quiet a few tools and products in JAVA.

      --
      Non-Deterministic Finite Automata
    6. Re:Well, m$ has to do something. by nhavar · · 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?

      --
      "Do not be swept up in the momentum of mediocrity." - anon
    7. Re:Well, m$ has to do something. by TWR · · Score: 2
      For example: whne was the last time you went to Best Buy and bought any program that was Java based?

      When was the last time you went to Best Buy and bought any program that was written in Visual Basic? How about Perl? Python?

      Shrink-wrap software for consumers is a VERY small part of the software market. Most software is developed for corporate use, not consumers. Java is very viable for corporate development, especially for server-side code. Swing isn't nearly as successful, but it can do the job if you're a good Swng programmer.

      -jon

      --

      Remember Amalek.

    8. Re:Well, m$ has to do something. by the+eric+conspiracy · · Score: 2

      Wait, say that again, "third party implementations", meaning what exactly?

      I don't think that I've seen a GPL'd java or a red-hat java.


      This page lists several non-Sun Java implementations. Several of them are open source, GPL'ed and are in fact part of the standard Red Hat distributions.

      As far as Sun not giving up control, well, didn't the Microsoft attempt to hijack Java prove that they had some justification in this?

    9. Re:Well, m$ has to do something. by benedict · · Score: 2

      Java was initially targetted for the embedded market.

      --
      Ben "You have your mind on computers, it seems."
    10. 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.

    11. Re:Well, m$ has to do something. by mlinksva · · Score: 2
      I don't think massive cross-platform applications on the desktop was ever Sun's primary goal for Java. As others have noted, before it was called Java it was aimed at embedded systems, and its initial hype was based on bringing "interactivity" to web pages, which it turned out people didn't care for (and Netscape's implementation was about as bad as it possibly could've been). Several third parties (notably Lotus and Corel) failed with Java desktop development, but AFAIK the only real major desktop Java project Sun attempted was the JavaStation(?) diskless terminal, and that would've failed regardless of the software since it was an overpriced, underpowered and incompatible hardware platform.

      Also, I think you're needlessly conflating desktop and commercial software. There's plenty of non-commerical desktop software, and the non-desktop commercial software market is massive.

      But after all that, I agree that free .NET implementation(s) may succeed on the libre software desktop (I don't care what it does on the unfree desktop), where Java has failed to gain any significant foothold.

      I think C# and .NET are kinda neat despite their source (I could say the same about Java's source, they're both amoral corporations), and I hope that mono does meet all of Miguel de Icaza's expectations in terms of making free software developers more productive. I also think Java still has a chance on the libre desktop if and only if Sun wakes up and makes the JDK open source!

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

    13. Re:Well, m$ has to do something. by JamesOfTheDesert · · Score: 2
      Sun has built a faithfull community around Java

      Yeah, sort of like that "Gates of Heaven" group some years ago.

      --

      Java is the blue pill
      Choose the red pill
    14. Re:Well, m$ has to do something. by Malcontent · · Score: 2

      Ok I see where you are coming from here. Your premise is wrong so therefore your conclusion is wrong.

      "Java has failed in Sun's primary quest - to bring massive cross-platform applications to the desktop"

      Sun's original goal with java was to be an embedded platform able to work on a variety of chipsets. Then it tried to position it as a "applet" web enhancer. Somehow it caught on in other areas instead. In fact there a quite a number of java desktop applications running all across the country inside firewalls so some degree of desktop penetration is already present. I have played around a bit with java web start lately and I see some great windows apps too so the desktop presense is growing outside the firewalls too.

      " Mono is completed in a reasonable amount of time"

      According to Miguel they are two years behind MS. With the resources that MS has Mono will never catch up and will always be at least a year behind. Somehow I just don't see mono catching on in the OSS world .NET is just too burdened with patents and nobody wants to face an army of MS lawyers just because they wrote some code.

      --

      War is necrophilia.

    15. Re:Well, m$ has to do something. by JordanH · · Score: 2
      • Java was initially targetted for the embedded market.

      Java, or rather Oak, was initially designed for the embedded market, but it never got any support to "come out of the lab" until someone got the idea of running it in the browser for desktop applications.

    16. Re:Well, m$ has to do something. by Tony-A · · Score: 2

      Who cares about the desktop? The big desktop machines are becoming more and more just overgrown dumb terminals. The network is the computer. We're not there yet, but we're gaining on it. The desktop is just something to run a browser. Which browser? Should make about as much difference as which brand of ElCheapo 4 function calculator you would buy now.

    17. Re:Well, m$ has to do something. by ejungle · · 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:

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

      --
      Remember: umount it before you fsck it.
    18. Re:Well, m$ has to do something. by flacco · · Score: 2
      "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.

      Very untrue, actually. Servlets run on the server. JSP's are compiled and run on the server. The only thing you see in your browser is the standard HTML that is returned to you by the server.

      Java's problem on the desktop is, among other things, that it requires a separate JVM for each Java program running. I use a Java IDE written in Java, a UML modeling tool written in Java, and a freakin' Gnutella client written in Java. Each one of these programs has to lug around its own massive JVM.

      I've always thought it would be most cool if there were a client equivalent to a servlet engine that allows all these desktop apps to share a JVM.

      --
      pr0n - keeping monitor glass spotless since 1981.
    19. Re:Well, m$ has to do something. by Tony-A · · Score: 2

      Somehow I trust Sun's intentions regarding Java a lot more than I trust Microsoft's intentions regarding .NET. For example, in contrast to Microsof's Passport, the Liberty Alliance is structured so that Sun cannot grab control of it.

    20. Re:Well, m$ has to do something. by nhavar · · Score: 2
      I guess it's a simantec issue. You are speaking of implementation in reference to the end implement much like MFC is an implementation of C++ or as GCC is an implement of C. I'm speaking of implementation as in JavaScript1.x/JScript are implementations of ECMAScript or VisualC++ is an implementation of C++. For the latter there is a core language and structure present that defines the language. While you use the core you are allowed to add additional functionality to that core without detracting from it. In this way you make it your own.

      With java you are dissallowed from touching the core language. While you are allowed to create new packages and uses of the existing language you cannot add to it. The core language is controlled by Sun.

      Additionally you are dissallowed from creating a "clean room" version of the language. Also parties that have used third party "implimentations" (PACKAGES/VM/Compilers) may be dissallowed from J2EE certifications or blocked from distributing the app open source or at all, even if said app uses the Java Language exactly and performs to the listed specifications for J2EE compliance. Why? Because it's Sun's ball and if they don't like you not playing by the "rules" then they will take the ball and go home. (See Lutris Enhydra... unable to continue Open Source J2EE app server due to discrepency in licensing schemes).

      So while I can create my own implementation of ECMAScript and add all the functionality I want and it still be considered ECMAScript compliant, I cannot do the same with Java language without fear of reprisal. The licensing does not allow for this, in fact it expressly forbids it.

      Quick and simple: you are talking about using an existing hammer someone gave you to build a door, I'm talking about building a hammer from parts of your hammer and new parts I created, that looks and acts just like yours, and will be usee to build a similar door. Both hammers work the same, both doors get built. Which door gets certified?

      --
      "Do not be swept up in the momentum of mediocrity." - anon
    21. Re:Well, m$ has to do something. by Tony-A · · Score: 2

      Well, Microsoft's .NET and Passport seem to be buying into Sun's silly "network is the computer" crap.
      What control would I be turning over to others? If I know who I'm talking to, what I am saying, and what the other is saying, I have much more control than installing software that puts unknown things in unknown places and hides what is going on from me.
      The desktop won't vanish, just like the automobile hasn't completely eliminated the horse and buggy.

    22. Re:Well, m$ has to do something. by Dr.Evil · · Score: 2
      I've always thought it would be most cool if there were a client equivalent to a servlet engine that allows all these desktop apps to share a JVM.

      Actually, as long as there are no namespace conflicts, this would be relatively easy to achieve using the Reflection APIs and dynamic class loading, I believe. Instead of a "java ..." invocation on the command line invoking an entirely new JVM process, it would be more of an access point to the class loader. Determining which version of a particular namespace a newly-loaded class wanted when there are conflicts is a tricky problem, though. I'm kind of surprised there hasn't been more work on this by the HotSpot team, although if I recall correctly, they were targeting some of this for the 1.5 release. Apple has made some progress on this in Mac OS X, as well.

      --
      Right...
    23. Re:Well, m$ has to do something. by Kirruth · · Score: 2

      The semantics issue lies elsewhere. Both Java and .Net call themselves "open standards" but scratch the surface and you find trademarks, patents and restrictive licensing. They are proprietary standards for which reference implementations are given away free: so, free beer rather than free speech.

      This doesn't make them bad, of course. You just have to think what the agenda is for the people issuing them. For Sun, Java came about to sell more Sun hardware. For Microsoft, .Net is how they plan extend their operating systems presence (which they make no money anyway) by moving up a layer, and so support their market for middleware and desktop apps (where they coin it in). There's nothing wrong with commerce, and .Net is probably going to make alot of commercial sense, just as J2EE does now.

      As for open source / free software development, if people want to give their spare time furthering the corporate objectives of Sun and Microsoft, hey, good luck to them. But lets be clear about that this is what they are doing.

      --
      "Well, put a stake in my heart and drag me into sunlight."
    24. Re:Well, m$ has to do something. by the+eric+conspiracy · · Score: 2

      You are speaking of implementation in reference to the end implement much like MFC is an implementation of C++ or as GCC is an implement of C. I'm speaking of implementation as in JavaScript1.x/JScript are implementations of ECMAScript or VisualC++ is an implementation of C++.

      With java you are dissallowed from touching the core language. While you are allowed to create new packages and uses of the existing language you cannot add to it. The core language is controlled by Sun.



      That is not correct at all. Some of the implementations that are described in the link I mentioned in fact add significant extensions to Java, like generic types.

      As far as J2EE licensing and Open Source projects, the JBoss people have a very different take on Lutris' decision to discontinue their
      open source product.

      http://www.jboss.org/licensesun.jsp

      Quick and simple: you are talking about using an existing hammer someone gave you to build a door, I'm talking about building a hammer from parts of your hammer and new parts I created, that looks and acts just like yours, and will be usee to build a similar door. Both hammers work the same, both doors get built. Which door gets certified?

      The fact is that EVERY application server on the market includes proprietary extensions to J2EE. Do they get certified? Yes.

  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. Science of Software where? by 3seas · · Score: 2

    "After half a century of research, computer scientists have yet to agree on a single answer to most issues of programming language design.

    Autocoding - where the language doesn't much matter, so long as the programming concepts are accessible

  7. apply the razor please by Erris · · Score: 2, Insightful
    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.

    --
    DMCA, Hollings, Palladium. What might have sounded like paranoia is now common sense.
    1. Re:apply the razor please by Erris · · Score: 2, Flamebait
      "Is the superiority of C#/.NET enough to offset the costs of moving to it from J2EE."

      A tool that claims to do all things for all people never does anything well. C pound is one of those tools. The article does a good job showing how each of the implimented launguages applies its flaws to C pound rather than it's strengths. The result is a crippled java without multiple inheritences and most of the rest of java's strengths.

      The reason people write that they don't like the new M$ toy is not because they don't like M$, it's because they don't like the new toy.

      C pound has all the stench of the M$ fortran effort. Before they were the Empire of the Dumb, it was interesting to see a nice little DOS fortran compiler. Next they extended it to include support for their Win3.1 GUI with the user kernel. That was replaced with a 32 bit DOS extended compiler, which was in turn replaced with a module for their Developer, which promised to unite VB, C++ fortran and Java(? I can't remember if java made it in there). After all that jerk around, each transition breaking the previous extentions, the finally dropped it alltogether. They never seriously focused on the isssues that needed to be solved to make it more than a toy, ie be able to compile the tremendous body of legacy code, and in the end trashed it on their platform all together. These days real fortran work is a pain in the ass on M$, with each OS shift breaking the kludge that got around the last limitations. It's much easier to pick up comercial Linux compilers of G77, as everyone else focused on the strengths of fortran and made comilers that do useful work. M$'s effort to extinguish fortran on their platform has simply shifted physisists and others to other platforms.

      Go download the .NET STANDARD, and go find the documents that Sun publishs about their technology.

      Do you know what a standard is? The above shows not.

      --
      DMCA, Hollings, Palladium. What might have sounded like paranoia is now common sense.
    2. Re:apply the razor please by GrayArea · · Score: 2
      Go download the .NET STANDARD

      What standard? Read my previous post on this, and see for yourself how that standard is horribly crippled from the start.

      The design goal of the JVM bytecode was obviously "design the easiest to implement VM that we can compile Java to."

      So what? It's a decent VM design and does the job. If there is future need, it can extended; the whole platform is designed to let this kind of thing happen (class file format versions are the first thing that comes to mind).

      As for the libraries; they both suck.

      Have you actually done any development in Java? The core class libraries are probably the best thing that happened to me in the last five years, apart from Linux. Their design is for the most part very sound. Can't say anything about .Net, but their libraries probably have a way to go before they grow as stable and functional as Java's.

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

      And more than a few brand-new mistakes along the way. Hierarchical namespaces a la C++ (gack! - flame away if you want), nothing similar to inner classes (very powerful feature in Java but easily misused), no classloaders (and no, assembly loading is not the equivalent), event handling integrated into language (gack! twice), metadata attributes inside source code (gack! three times). It shows all signs of the kitchen sink language syndrom, but then read the spec for yourself and don't take my word for it.

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

      You know, sometimes strong convictions of mind are a sign of shallow and simplistic thinking. Before categorically claiming that "it's so easy to see the answer", make sure you have the experience and knowledge to add weight to those words. It's abundantly clear to me that by any measure, you don't.

      Eh, now, I spent way too much of my time answering an AC, so I'll go now.

      --
      "The deluded are always filled with absolutes. The rest of us have to live with ambiguity." - Aristoi, Walter Jon Willia
    3. Re:apply the razor please by Drake42 · · Score: 2

      Now look at the VM. The design goal of the JVM bytecode was obviously "design the easiest to implement VM that we can compile Java to."
      What are you talking about?!?! The JVM is designed to be a minimal set of what is needed so you can get about your job without a huge pile of baggage loaded on top of you.

      As for the libraries; they both suck.
      Which shows that you don't know how to code in either of them. The Java API is much easier to use than the old MFC api I used to work with, JDBC is much more friendly than ODBC and the core java API's much much easier than the C++ api's for the MS, unix and AS/400 systems that I had to work with.

      C# is Java
      Except that it isn't mature, is OS dependent, seems very open to security holes which are imposible under Java, has no community review process, has no officially sanctioned competing implementations, has no choice of developement environment, cannot be used for free, and requires you to be an all MS shop. If you don't mind any of those things then they're just about the same!

      "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."
      You being a troll.

    4. Re:apply the razor please by mestar · · Score: 2, Interesting
      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.

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

    6. Re:apply the razor please by GrayArea · · Score: 2

      Oh, goody! The chance to duke it out in front of an audience! ;-)

      I have done development in both. I can definitively say that the .Net class libraries are in fact stable and full featured.

      You'll excuse me if I have my doubts based on the previous track record.

      I'll bite. how is this more evil than the file system hierarchy imposed by Java?

      First things first. There is no file system hierarchy imposed by Java. The usual package naming convention you see is just that, a convention, and doesn't signify that the packages are in a parent-child relationship. As for the folders, I guess it was just a convenient way of representing the existing convention in a file system. A repository/database based system like Visual Age for Java is free to use whatever it wants. You can just as easily put your classes in a flat list of directories corresponding to packages as long as you have a compiler that understands it (easy to do in a day by driving JDK compiler). The point is, you don't violate the language or API specification by doing so.

      nothing similar to inner classes (very powerful feature in Java but easily misused)
      yet i could say the same for operator overloading.

      I wouldn't say inner classes and operator overloading are at the same level of utility. One is (useful) syntactic sugar, the other is a way to create fine grained objects not easily represented otherwise. See this for an example of their use. This is not to say that operator overloading isn't useful, it's a great way to write seamless data structures. In fact, I wish I had them in Java, but with names and interfaces and without the C++ syntax.

      no classloaders (and no, assembly loading is not the equivalent) How is it not the equivalent?

      It's not fine grained. AppDomain's and Assembly's are okay when all you want is to isolate unrelated components from each other (like web apps in a servlet engine), but they fail when those components need to interact with each other. In effect, this precludes a whole class of software that use aggressively component based architectures, like JBoss, HP's Core Services Framework, Apache Jakarta Avalon or the Eclipse IDE Framework, for that matter. The basic problem is that isolation and resolution are lumped together in .NET, and you won't be able to isolate components and resolve references from one component to another at the same time. See the Developer's Guide on MSDN for details. I'd love to be proved wrong on this because I like some of AppDomain's details and similar stuff with more advanced functionality is in JSR 121 for application isolation, so let me know if this line of reasoning is not correct.

      event handling integrated into language (gack! twice)
      why gack?

      Because it's a big mechanism with lots of artifacts hard coded into the language itself. Funny, because you pointed out the difficulty of using operator overloading correctly when I see the cryptic application of operators for managing event listeners in C#. See this article on why delegates are not a good idea, it covers the basics even though it's not about C#'s version of them (I like Objective-C's delegates though, but they are different).

      metadata attributes inside source code (gack! three times). Do you know how elegant metadata would make JUnit?

      Reflection works just as well, thankyouverymuch. I find it fundamentally wrong to stuff code with metadata when you can have it separate. I like the descriptor stuff in J2EE, I wouldn't want bits of it in my source code. Yes, sometimes it's more work, but it gives you the flexibility to change mappings (it's always a mapping to something else, be it EJB's, WebMethods in .NET, or whatever) on the fly. Of course there are exceptions, it becomes tedious when there is a 1-to-1 mapping from the code to target domain with no properties on the mapping itself. A canonical example is the @deprecated Javadoc tag in Java. In the end, I think it makes a big difference to have discipline to not abuse such a system, and all previous experience says that MS doesn't have that.

      But that's just me, and objects in the mirror may seem further than they really are to you...

      --
      "The deluded are always filled with absolutes. The rest of us have to live with ambiguity." - Aristoi, Walter Jon Willia
  8. What I don't get.... by rseuhs · · Score: 2

    ... why would anybody want to use multiple languages for the same project anyway? If you start a project you are pretty happy if you(r people) can deal with one language (or as few as possible) there is simply no need for this. The way I see it, it's a nice-to-have feature, but no killer-feature. Platform-independence, on the other hand, *IS* a killer feature because you can be sure that your customers can use it and can also switch platforms. Java is not only implemented, but also tested and proven on many, many platforms. It's established in many ways - .NET just doesn't offer enough for people to switch over to it. It may be the successor of Visual Basic (= the users that use anything from MS anyway), but IMO not much more. I think .NET is a solution without a problem.

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

    2. Re:What I don't get.... by Malcontent · · Score: 2

      Sounds like a recipe for disaster to me. Imagine trying to maintain an application where 50 developers used 20 languages. Yikes! Any program manager that allowed that to happen ought to be shot.

      Besides you will not be able use perl anyways. It will be "managed" perl. Which to you will mean a mutant bastard stepchild of perl much like VB.NET is a mutant bastard stepchild of VB.

      Might as well use C#

      --

      War is necrophilia.

    3. Re:What I don't get.... by Roy+Ward · · Score: 2

      > why would anybody want to use multiple languages for the same project anyway?

      Possibly because different languages have different strengths. At my work, most of the system for the project we are working on is written in Java, but I am writing one module in Mercury because that particular module does a lot of symbol manipuation and has a large 'logical' component, so a logical language is far more suitable than Java, but only for that component.

      However, in these cases, it is good to have to go through some middleware (I'm using CORBA) or API to keep the modules apart. rather than sharing of structures pushing everything down to a lowest common denominator. So in that way, I agree with you ... .NET is a solution looking for a problem.

    4. Re:What I don't get.... by rseuhs · · Score: 2
      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.

      It's terrible how everybody simply assumes that every MS-product is used by the "largest group" of users and everyone takes it for granted.

      Sorry, but *Java* is the most used language today, followed by C++, followed by C.

      I don't say VB isn't important, but it doesn't even come near of being the "largest".

    5. Re:What I don't get.... by MisterBlister · · Score: 2
      It's terrible how everybody simply assumes that every MS-product is used by the "largest group" of users and everyone takes it for granted.

      Sorry, but *Java* is the most used language today, followed by C++, followed by C.

      I don't say VB isn't important, but it doesn't even come near of being the "largest".

      It's terrible how everybody assumes that every non-MS-product is used by the "largest group" of users and everyone takes it for granted!

      My point? The original poster should have cited sources to back up his claim -- but you should also have posted sources to back up your counter-claim. So you're both fools who can't be trusted.

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

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

  11. But you can't do that ... by SimonK · · Score: 2

    ... for a single project of any size. Its very important that everyone can read and modify everyone else's code (not that they DO, just that they CAN). Using libraries written in another language: maybe. Using many languages on one project: insane.

    There are also two errors in the rest of your post: Java's platform independence works just fine, and C# and the CLR have been released, they're not "planned".

  12. 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
    1. Re:How could it be unbiased? by Tony-A · · Score: 2

      asm hackers ... convinced that there would always be a special case where they could write better code than a compiler
      Asm is not better than a compiler at doing things a compiler is good at. Asm is better than a compiler at doing things that a compiler cannot do. Try doing recursive coroutines in C. The compiler is a one-size-fits-all in a lot of respects. For memory management, try cases where allocated memory can move, grow or shrink dynamically and pointers stay pointing to what they are supposed to.

    2. Re:How could it be unbiased? by mestar · · Score: 2, Insightful

      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.

  13. 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?
    1. Re:Closed standard? Open Standard? I pick door #2 by JordanH · · Score: 2
      • 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.

      Yes, but from a practical standpoint, if Microsoft decides to take the products in a direction away from the Open Standard version, then the Open Standard version will immediately become irrelevant.

      Which, come to think of it, was exactly what they intended to do with Java. Make the Sun version irrelevant.

    2. Re:Closed standard? Open Standard? I pick door #2 by nagora · · Score: 2, Interesting
      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

      --
      "Encyclopedia" is to "Wikipedia" what "Library" is to "Some people at a bus stop"
    3. Re:Closed standard? Open Standard? I pick door #2 by the+eric+conspiracy · · Score: 2, Redundant

      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.

      Java is controlled through the trademark, not the language standard. Microsoft is free to embrace and extend Java all they want (and the have in fact with C# and J#). What Microsoft cannot do is call their variant Java.

      Jack William Bell, who likes the idea of coding with mix-n-match programming languages.

      As somewone who has to maintain code from time to time, the idea horrifies me.

    4. Re:Closed standard? Open Standard? I pick door #2 by Jack+William+Bell · · Score: 2

      Yes, but from a practical standpoint, if Microsoft decides to take the products in a direction away from the Open Standard version, then the Open Standard version will immediately become irrelevant.

      Which, come to think of it, was exactly what they intended to do with Java. Make the Sun version irrelevant.

      Why? Apply that same question to Unix. Is Unix irrelevant because AT&T created a closed version of it? Or, for that matter, any number of other closed versions from any number of vendors? Or, even, an Open Source version? There is a common thread through all of those versions of Unix: Posix -- which is an open standard. Non-Posix implementations did not succeed in the long run no matter who created them.

      Look, I don't trust MS either. And yes, they did try to hijack the Java standard. They did it by providing enhancements to the Java standard that were compelling enough that people used them. Sun had two choices; absorb the enhancements into the standard or take their ball and go home. They chose the latter.

      So who was the winner in that little spat? MS? Sun? We programmers? I would call it losers all around.

      With an open standard at least you know there is a chance some third-party enhancement that survives in the marketplace because people want to use it will get into the standard. And MS can only extend the standard with their own proprietary enhancements. They have limited control the standard as it exists now and (with the exception of patented stuff) cannot keep us from adding the enhancements to the standard if we like them.

      Jack William Bell

      --
      - -
      Are you an SF Fan? Are you a Tru-Fan?
    5. Re:Closed standard? Open Standard? I pick door #2 by Jack+William+Bell · · Score: 2
      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.

      Can you back that up with details? So far as I know all of the C# standard is open, all of the CLI standard is open and the all (or at least the most significant) non-platfrom specific libraries of the CLS are open.

      Jack William Bell

      --
      - -
      Are you an SF Fan? Are you a Tru-Fan?
    6. Re:Closed standard? Open Standard? I pick door #2 by Jack+William+Bell · · Score: 2
      Java is controlled through the trademark, not the language standard. Microsoft is free to embrace and extend Java all they want (and the have in fact with C# and J#). What Microsoft cannot do is call their variant Java.

      Valid point, but doesn't it cut both ways?


      Jack William Bell, who likes the idea of coding with mix-n-match programming languages.


      As somewone who has to maintain code from time to time, the idea horrifies me.

      As do I. And I already have to deal with multiple languges, backends, frontends, extension libraries, coding styles, naming standards and everything else under the sun. At least with the CLI I know that I have a better chance of things interoperating. Besides some languages do map to a particular problem space better than another. And I can split work up between expert coders (with C#) and less skilled coders (with VB or Python).


      Jack William Bell, who notes that the only responses posted so far supporting his stance come from Anonymous Cowards...

      --
      - -
      Are you an SF Fan? Are you a Tru-Fan?
    7. Re:Closed standard? Open Standard? I pick door #2 by kaisyain · · Score: 2

      Just because they are ECMA standards doesn't mean MS can't "embrace and extend" them should they choose to. It just means that their extended version won't be the "ECMA" version. Microsoft doesn't control the IETF Kerberos specification but that didn't keep them from embracing and extending it.

    8. Re:Closed standard? Open Standard? I pick door #2 by Jack+William+Bell · · Score: 2
      Just because they are ECMA standards doesn't mean MS can't "embrace and extend" them should they choose to. It just means that their extended version won't be the "ECMA" version. Microsoft doesn't control the IETF Kerberos specification but that didn't keep them from embracing and extending it.

      Actually that was exactly my point! MS can do exactly that. But if they do there is nothing (except patents) to keep ECMA from adding those enhancements to the standard if the enhancements really do provide something worthwhile.

      Patents are a problem here, no way around that. But they are a problem everywhere! ECMA can always argue that an enhancement that cannot be reproduced is enough to keep the implementation from being called 'C#' or whatever. I don't think this is likely though. I am sure MS is a major financial contributor to ECMA for one thing.

      In any case I consider this ability of MS (or anyone else) to embrace and extend a good thing. At least so long as we can pick and choose, in the marketplace of ideas, those enhancements we think add value then we will continually improve the standard. As has been pointed out you can do this with Java too -- but you cannot call it Java. In the case of an open standard like C# you can still call it C# and make some claim of being part of the C# idea-space. That is vital to the evoloution of an open standard. If the MS extensions to Kerebos are something people like you and me want to use then they should be added to Kerebos. Simple as that (patents aside).

      Jack William Bell, who thinks that (generally) software patents are evil.

      --
      - -
      Are you an SF Fan? Are you a Tru-Fan?
    9. Re:Closed standard? Open Standard? I pick door #2 by TheAJofOZ · · Score: 2
      At least so long as we can pick and choose, in the marketplace of ideas....

      Nice to know that with a convicted monopolist inventing the technology you will always be able to pick and choose between competitors isn't it...... Oh wait, there are no reasonable competitors to MS as ruled by a court of law.

      Finally, you're arguments for embrace and extend apply just as much to Java as they do to C# - you can embrace and extend but if the owner of the trademark doesn't approve you have to rename it. Java is an open standard, go to http://java.sun.com and grab a copy of the *full* specification if you desire as well as specifications for new additions that are under review. If you think that standards only work when they come from non-profit standards organisations then perhaps you should look at the mess that is HTML these days and rethink how well international standards work.

      If your only argument for C# is that it's open I think you a) have no clue about how to decide upon an appropriate programming language and b) are sorely mistaken about what is open and how useful it works.

    10. Re:Closed standard? Open Standard? I pick door #2 by Bodrius · · Score: 2

      Look, I don't trust MS either. And yes, they did try to hijack the Java standard. They did it by providing enhancements to the Java standard that were compelling enough that people used them. Sun had two choices; absorb the enhancements into the standard or take their ball and go home. They chose the latter.

      They also did it by providing a buggy implementation of the Java 1.0/1.1 classes that made it impossible to run, say, an applet in their JVM just like it would run in the standard implementations.

      --
      Freedom is the freedom to say 2+2=4, everything else follows...
    11. Re:Closed standard? Open Standard? I pick door #2 by Deluge · · Score: 2

      "With an open standard at least you know there is a chance some third-party enhancement that survives in the marketplace because people want to use it will get into the standard. And MS can only extend the standard with their own proprietary enhancements. They have limited control the standard as it exists now and (with the exception of patented stuff) cannot keep us from adding the enhancements to the standard if we like them."

      Perhaps this is MS learning from Sun's mistakes. Even though Java is successful in certain applications, it would most likely be used for a wider range of applications if Sun hadn't been so harsh in keeping absolute control of their standard.

      Microsoft must know by now that good things come from the programming community, therefore having the community suggest (and even implement) useful enhancements to their standard only helps them gain popularity.

    12. Re:Closed standard? Open Standard? I pick door #2 by Jack+William+Bell · · Score: 2
      Finally, you're arguments for embrace and extend apply just as much to Java as they do to C# - you can embrace and extend but if the owner of the trademark doesn't approve you have to rename it. Java is an open standard, go to http://java.sun.com and grab a copy of the *full* specification if you desire as well as specifications for new additions that are under review. If you think that standards only work when they come from non-profit standards organisations then perhaps you should look at the mess that is HTML these days and rethink how well international standards work.

      Given time I can come up with several examples, but lets go with one here: Basic is an open standard with lots of (varied) implementations. PICK is a language (among other things) that ended up looking rather like Basic after several evolutionary changes. Why did PICK evolve towards Basic? PICK was arguably better on several levels. But it was a closed, proprietary standard.

      If you created your own version of PICK you couldn't call it PICK and you could not participate in the mind-share generated by PICK. But anyone (including Bill Gates) could create a version of Basic and call it 'Basic'. As a result everyone knew what it was. It was part of the idea space for Basic, even if it wasn't exactly a kosher 'Basic'. So Basic, despite being technically less powerful, ended up owning the most mind-share. In the marketplace of ideas it became something that was traded at a higher level. PICK could only keep up by following, because its mind-share was smaller.

      Make no mistake; mind-share is important. Sun knows this. Microsoft knows this. There is no way Microsoft would be playing the game the way they are if they were not playing catch-up. In this case the real winners are the programmers of five years from now when idea convergence and the natural workings of the marketplace of ideas create a better technology.

      If your only argument for C# is that it's open I think you a) have no clue about how to decide upon an appropriate programming language and b) are sorely mistaken about what is open and how useful it works.

      First rule of civil debate: Attack the message, not the messenger. Personally I believe that I am fully capable of making such distinctions by using a rich and approprite set of heuristic comparisons which I need not detail here. Can you accept that and choose to disagree with me solely on the basis of my ideas and opinions? If so then you are trading in that 'marketplace of ideas' I keep blathering about. Otherwise you are only trading in insult and antipathy. I have nothing to offer in exchange there.

      Jack William Bell

      --
      - -
      Are you an SF Fan? Are you a Tru-Fan?
    13. Re:Closed standard? Open Standard? I pick door #2 by Jack+William+Bell · · Score: 2
      Microsoft must know by now that good things come from the programming community, therefore having the community suggest (and even implement) useful enhancements to their standard only helps them gain popularity.

      Hurray! Someone that understands my point and can make it more clear and concise than I can!

      Jack William Bell, who thinks that we need to keep a gimlet eye on Microsoft anyway.

      --
      - -
      Are you an SF Fan? Are you a Tru-Fan?
    14. Re:Closed standard? Open Standard? I pick door #2 by TheAJofOZ · · Score: 2
      Given time I can come up with several examples, but lets go with one here: Basic is an open standard with lots of (varied) implementations. PICK is a language (among other things) that ended up looking rather like Basic after several evolutionary changes. Why did PICK evolve towards Basic? PICK was arguably better on several levels. But it was a closed, proprietary standard.

      BASIC never tried to provide cross-platform compatibility (in some cases it achieved it at the source level, but it was not the intention). Java and C# attempt to provide cross-platform compatibility so having a coherent standard instead of a great array of similar but different implentations is very important. Take the example I gave earlier of HTML - try to create a web site that looks the same in every browser and you will not be able to use anything but very basic HTML and this is with the benefit of an international standard.

      By supporting embrace and extend you are supporting not following standards and yet your argument centres around the fact that C# is a standard. What is not included in a standard is just as important as what is in it - again look at HTML, Explorer started supporting invalid HTML and it has lead to an absolute mess. Same thing with BASIC in fact. Try programming in BASIC on a Commodore 64 and on a BBC Microcomputer and you will find that they are in fact quite different languages.

      In this case the real winners are the programmers of five years from now when idea convergence and the natural workings of the marketplace of ideas create a better technology.

      But will it actually create better technology or will it just fragment better technology between many different incompatible standards? What benefit is a cross-platform language that works differently in every implementation?

      First rule of civil debate: Attack the message, not the messenger. Personally I believe that I am fully capable of making such distinctions by using a rich and approprite set of heuristic comparisons which I need not detail here. Can you accept that and choose to disagree with me solely on the basis of my ideas and opinions? If so then you are trading in that 'marketplace of ideas' I keep blathering about. Otherwise you are only trading in insult and antipathy. I have nothing to offer in exchange there

      Second rule of civil debate: look for meaning not just words. Read this carefully: if your only argument for C# is that it's open and you believe that it is a better option than Java then you are obviously not capable of making an informed decision as to the merit of the programming language because if I were to create an open language that wasn't even Turing complete, your argument would show that it was better than Java when this is clearly not the case. In other words, you message is flawed - C# is not better than Java because it is open - it may or may not be better depending on what features it provides and what you are aiming to achieve.

      Also (referring to part b), if you feel that Java is less open than C# then you are also mistaken as both C# and Java have publicly available specifications (Java definitely for the entire system and I will assume so for C# but note other messages stating that it is not the full spec) then I will challenge you to produce a programming language which is incompatible with C#, publicise it widely and see how long before you have a trademark infringement case (or some other legal argument) brought against you. Java is just as open as C# only that in once case the specification is reviewed by a community based organisation and the other by the EMCA. You were aware that Java is controlled by a board of people who include community members as well as Sun (and Sun does not have a controlling stake in the board) right? You were aware that you can licence the Java HotSpot engine (an actual implementation not just a specification) on the condition that you agree to some NDA agreements and that you will fold improvements back into Sun's version right?

      If you want to see embrace and extend working in Java, check out what Apple is doing with Java and then take note of the fact that those improvements are being folded back into the main distribution to keep everything compatible. With C# there is no obligation that improvements be folded back into the original so you wind up with a bunch of incompatible versions and that definitely does not benefit developers or end users.

    15. Re:Closed standard? Open Standard? I pick door #2 by GrayArea · · Score: 2

      See my previous post on this. Basically, the standard was crippled from the start.

      This is not only because the ECMA standard libraries are incomplete; they are incomplete in nasty ways, like implemented interfaces, methods and properties missing from classes. The libraries are incomplete in a Swiss cheese sort of way, instead of being cleanly separated into a standardized core and extensions. Add to this the fact that there is no way to know what you write is ECMA standard compatible (API docs have absolutely no reference to the standard), and it's clear to me that Sun and Java have done a better job than most people give them credit for as far as standards compliance goes, even when those standards do not have the approval stamp of an international standards organization.

      --
      "The deluded are always filled with absolutes. The rest of us have to live with ambiguity." - Aristoi, Walter Jon Willia
    16. Re:Closed standard? Open Standard? I pick door #2 by Tony-A · · Score: 2

      So far as I know
      That's the problem. What you know of it is that part that is open. It would be bucking historical precedent if the open standard were what Microsoft would actually use for themselves. Unless it can be demonstrated that all of Microsoft uses only what is in the open standard, then it has to be assumed that Microsoft is hiding stuff.

    17. Re:Closed standard? Open Standard? I pick door #2 by markj02 · · Score: 2

      C#/.NET is not an open standard either. Microsoft only standardized a small part of C#/.NET, and their actual implementation will be that small, standard core with a vast number of extensions. That means that Microsoft's implementation is the de-facto, proprietary standard, with ECMA being nothing more than a fig leaf.

    18. Re:Closed standard? Open Standard? I pick door #2 by Pengo · · Score: 2

      I disagree. I think that if MS moves the target, the greatest common denominator will become more relevant.

      Ie. When programming in Python, on OSX I can use all the spiffy Carbon libs that are there and make my experience on the mac better, but if I write in TCL/TK .. I know that I will reach a broader audiance.

      Besides.. if these 'magick' enhancements are necessary, they will be adapted.. it's not overly complicated to write most system functionality yourself (ie. a group)... My first MAJOR java project I found myself doing a lot of that anyway, just not knowing that what I needed was already written and in the libs.

      Cheers

    19. Re:Closed standard? Open Standard? I pick door #2 by rseuhs · · Score: 2
      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.

      Oh yeah, sure. Committing less than 10% of the base classes to ECMA means "it's a standard" and out of control of Microsoft.

      Sometimes I ask myself if people like you really believe Microsoft marketing or spread it on purpose just to hype their stock.

      Anyway:

      There is nothing to keep Microsoft from 'embracing and extending' these standards if they do not like the direction they are going.

      They don't have to do that. Since only a tiny part of .NET and C# is standardized, IT'S ALREADY DONE.

      For all practical purposes, .NET is just the next Win32-API, not much more, not much less.

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

    2. Re:Very nice article. by DaveWood · · Score: 2

      It's a question of role. "Unsafe" code, lagnauges, and systems are necessary at a variety of levels in general purpose computing. That doesn't mean they're a good idea for .NET, which I take to be "high-level," "distributed" and "enterprise" computing platform, and one with pretensions to a modern, practical and durable security model...

    3. Re:Very nice article. by wadetemp · · Score: 2

      It's important to note that VB.NET does not support pointers and the "unsafe" modes of operation that were discussed in the Slashdot article yesterday. The model that protects business programmers from themselves and ensures the security of *that particular aspect* of the seciruty model is not in the framework itself but this so-called "skinning." The icing on the cake is that the framework itself (which has nothing to do with that aspect of security, but rather code-locale and permission-based security) allows these things for more advanced languages than VB (like C#.)

    4. Re:Very nice article. by DaveWood · · Score: 2

      Yeah, I was aware of that.

      I hope I'm not beating this to death, but you're touching on exactly what I would say the flaw is. Pointer arithmetic has a number of potential uses, but its primary advantage is speed, and you shouldn't be writing hot code in the CLR any more than you should be doing it in the JVM.

      The problem as I see it, in case I didn't make it clear, is that the guarantees you get from shutting out pointer-level code are important - both to the developer and to the system as a whole - and the gains are negligble. I await a conclusive judgement on this, but as far as I can tell, unsafe code renders useless the higher-level and "java-like" security mechanisms of the system.

      Since it's possible to be unsafe, people will, and then "safety fatigue" will effectively remove this protection altogether. The more easily the pieces fit together, the more rapidly it will happen, and the bigger the false sense of security.

    5. Re:Very nice article. by Tony-A · · Score: 2

      There are two fundamentally different ways to perform a conditional branch. A and B are 7FFF and 8000 respectively. If A and B are unsigned, B is 1 larger than A. If A and B are signed, then B is much smaller than A. The conditional branch is done with two instructions, a compare and branch-on-condition. The difference is whether the compare or the branch instruction is the one that knows about unsigned. Since these two instructions can be in different modules, the abstract languages supportable are different. Also only one form allows for raising an exception on overflow.
      The constructs in "high-level" languages are much more complicated. Most can't do coroutines or return functions.

    6. Re:Very nice article. by DaveWood · · Score: 2

      I don't think so. Not if something essential requires unsafe privileges to run. Or if a hundred things do.

      Of course, maybe nothing will - but then the feature would be effectively ignored - because it's a bad feature, yes?

      So which is it? Are you wrong? or are you wrong?

  15. Let's Play Devil's Advocate by Eric+Damron · · Score: 2, Interesting

    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.

    --
    The race isn't always to the swift... but that's the way to bet!
  16. 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. :-)

    1. Re:I like this quote... by elflord · · Score: 2
      Icaza actually believed that there was openness to the Microsoft framework, and that it could be safely used for the Gnome.

      Well, he believes correctly. The core components are an ECMA standard.

      Them same situation we got here, you could adopt the JVM for any project actually, but it is closed technology nonetheless and very well masked as open and platform-neutral.

      Java is controlled by Sun. It has not been submitted to any standards body. When it does, it will be on equal footing to C#. For now, it is not.

      For true open source, platform independence see Perl [perl.com].

      It's not really "platform independent" at all, actually. It has a lot of UNIX-isms in the core language. For something more genuinely cross-platform, that properly separates core and platform functionality, try Python.

    2. Re:I like this quote... by elflord · · Score: 2
      This is not, and has never been proof of openness and that it should be adopted by open source developers. It is still controlled by Microsoft,

      Since when do Microsoft own ECMA ? Microsofts implementation is controlled by Microsoft, but the standard itself isn't. Why don't Sun submit to a standards body ? It's primarily because they want to retain control.

      To me though being UNIXish is a feature.

      I'd agree, if it didn't imply that platform-specific features were properly modularised, and not glued onto the language.

  17. Re:The thing the author forgets....... by wadetemp · · Score: 2

    A broad view is very important.

    All languages are totally inappropriate for many projects. Your point should not be that C# is an inappropriate language of choice, but that any language is. A broad view would teach many languages, and since business applications ARE what most developers end up doing, there is no reason that C# shouldn't be one (if not the) language to be taught as that part of the broad view.

  18. Seems to be running by augustz · · Score: 2

    Seems the site is down. Netcraft reports it running.

    The site www.javalobby.org is running Orion/1.5.2 on Windows 2000

  19. keep in mind by cr@ckwhore · · Score: 2

    Keep in mind that Microsoft did not invent the technology behind "CLR". Raise your hand if you know what an "executable file" is? When was that invented... late 60's perhaps?

    --
    Skiers and Riders -- http://www.snowjournal.com
  20. My experience with the Java VM by Greyfox · · Score: 2
    I've been doing a lot of Java programming for my current job and I tend to find that the VM limits my options when I might want to use the power that UNIX provides me. Checking my program's process ID, for example, to see if it's already running. I've also been finding that the concept of having a VM to run your programs in breaks down pretty quickly, largely because various applications will require a different VM. So you end up with several VMs on your hard drive and several VMs in memory (at 40MB a whack) and none of the applications ever seems to check to see if there's a compatable VM already on your hard drive.

    The whole thing ends up being awkward, and it is my impression that running code in a VM limits me as a programmer to the power of an inferior operating system. I DO like JSPs though.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  21. Re:Block Innovation??? by wadetemp · · Score: 2

    I disagree with the quote as well, but for a different reason. A whole generation of programmers are already educated in address/pointer compatible languages. Complaining about a particular platform or model stifling innovation seems like a post-mortem to me... it's been stifled since the modern processor was introduced.

  22. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

  23. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

  24. Re:The thing the author forgets....... by the+eric+conspiracy · · Score: 2

    Does ANYONE REALLY like multiple inheritance or use it frequently?

    Inheritance has been shown to be troublesome if overused.

    But if you are going to have OOP, it is hard to avoid, and any OOP language that doesn't support it is limited because of a decison the language designer, not the programmer is making.

  25. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

  26. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

  27. CLR same as IBM's SOM (System Object Model)?? by Amigan · · Score: 2, Interesting

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

    SOM 3.0 Readme

    --
    "Software is the difference between hardware and reality"
    1. Re:CLR same as IBM's SOM (System Object Model)?? by Ian+Bicking · · Score: 2
      Like other people have said, SOM is like COM or CORBA, not a CLR. I think this is fairly different -- CORBA provides an interface to access foreign objects. A CLR does not involve any interface -- there are no foreign objects.

      Any useful language has ways to access foreign code -- sometimes easy, usually hard, and usually targetting only C. CORBA or COM are just a common intermediaries for those foreign function calls. A CLR means all calls are native, even when in different languages. This means you get prettier code, but also that you don't get the speed penalty. People don't do intimate subclassing of COM objects as far as I know. That is, they don't treat the objects in an OO way.

  28. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

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

    Comment removed based on user account deletion

  30. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

  31. One thing I don't recall hearing about by Daimaou · · Score: 2, Interesting

    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.

    1. Re:One thing I don't recall hearing about by elflord · · Score: 2
      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.

      Your premise appears questionable at best. Your conclusion could also be explained by the fact that Windows products tend to make better cash cows than Linux 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?

      What do you mean by "as messy as Windows is" ? Programming for .Net is not going to resemble programming Win32 code, any more than programming Qt is like programming raw Xlib.

      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?

      For starters, the technology that Mono is based on is standardised, while java is not. Why boost Suns proprietary language ? You might respond by asking "why boost Microsofts proprietary language", but the fact is that .Net is a proprietary implementation of an open standard, so Mono isn't necessarily boosting Visual Studio .Net any more than g++ is boosting Visual C++

      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?

      Please, offer some sound technical arguments instead of this anti-MS-jihad hot air. You don't "have to write to a Windows API", you can write to whatever APIs are implemented on Mono.

    2. Re:One thing I don't recall hearing about by elflord · · Score: 2
      Bullshit. CLR was not developed in the open, and as it evolves if the "spec" deviates from Microsoft's implementation, the "spec" will be wrong.

      Not true. Under such circumstances, Microsofts implementation will be wrong. Given that there will probably be a number of vendors who will implement the standard, it's not in Microsofts interests to be incompatibile. What is more likely to happen is that they will "embrace and extend" their own standard. However, this is not a problem unique to C#-- they can do the same with anything else.

    3. Re:One thing I don't recall hearing about by elflord · · Score: 2
      a) They have extended this standard already

      I don't quite agree with this. I agree more with your later comment -- standards tend to codify existing practice.

      b) Incompatibilities with the standard are generally fixed by changing the standard or referring to the 'reference implementation' (DCE, Kerberos, C++...).

      I'd think that if something is defined by a "reference implementation", it isn't much of a standard. Standards codify existing practice, so if an idea is widely adopted, or there is a consensus that the idea is a good one, there is a good chance it will end up in the standard. For example, variable length arrays, and C++ comments were vendor extensions. However, since the standards body is non-partisan, extensions that are blatantly vendor-dependent do not get added. That is why we don't have POSIX, COM or Win32 or even MFC in ISO/ANSI C/C++.

  32. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

  33. high-quality? by Erris · · Score: 2
    It is very possible that .NET will suceed where Java failed - true cross platform, high-quality application development environment.

    Who told you that? Steve Baller?

    Let's summarize the article as, "A tool that claims to do all things for all people in all places, generally does nothing well." Hey, its good for my writing skills =:> As the authors point out:

    Programming languages exist in wide variety, not only because different tasks (from systems programming to artificial intelligence) require different tools, but also because there is no One True Way to serve even one domain.

    Yup, it's true and he goes on to show us how C Pound is gimped by the limits of each of the languages it wishes to extend and extinguish.

    The CLS only supports single, static inheritance.

    Languages such as C++ and Eiffel need multiple inheritance of implementation. Cross-language support for MI may not be possible, as MI creates some hard problems (like repeated inheritance and name clashes) that different languages solve in different, incompatible ways.

    Yup!

    There is currently zero support for generic programming in the CLS.

    Compile-time mechanisms like C++ templates are supported, but they are not cross-language: no way to instantiate your stack.

    He goes on with a few more damming examples including how incompatible different (VB buzzord!) Methods are. His conclusion is both damning and accurate:

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

    Someone asked what people are "up in arms about." I suppose the Java people, who have made a fine and stable standard, are upset because the MicroTurds are going to spend lots of money saying this new C# is better than their work when it is not. They will back it up with the usual spred specturm attack of poor performance for all other languages under their platofrm. I feel their pain. Me? I'm not up in arms because I could care less, M$ is irrelavant. Even if they built the best freaking comiler in the world, their underlying OS is still so buggy and screwed up applications will never work right. People have noticed. The other folks up in arms are M$ dependents who are consistently let down. Their demise is the demise of my coworkers and it brings me no joy.

    --
    DMCA, Hollings, Palladium. What might have sounded like paranoia is now common sense.
    1. Re:high-quality? by aneil69 · · Score: 2, Interesting

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

    2. Re:high-quality? by Erris · · Score: 2
      How can these companies run their entire IT infrastructure on a platform so buggy that applications will never work???

      Painfully, and by selling new "upgrades" to replace the broken functionality of "obsolete" tools. I know, I work in one of those places with a M$ IT infrastructure.

      --
      DMCA, Hollings, Palladium. What might have sounded like paranoia is now common sense.
    3. Re:high-quality? by Erris · · Score: 2

      Oh yeah, the ususal bull. "You don't understand all the bullshit terms we've invented and all the things we promise you it will do." Sure.... You have to look at what works now, not what M$ says will work in the future.

      --
      DMCA, Hollings, Palladium. What might have sounded like paranoia is now common sense.
  34. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

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

    Comment removed based on user account deletion

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

    1. Re:Yawn . . . by Kirruth · · Score: 2

      The truth is that computing languages are far from unified. This is partly because the best of breed languages are often very good at what they specialise in. It's hard to beat Perl for scripting, or C for imperative programming or Haskell for functional programming.

      For object orientation, there are loads of choices, with C++, Java and Visual Basic duking it out at the popular end, with Smalltalk apparently alive and well in its niche.

      Meanwhile languages which really could change the world, like Python or LISP or Objective Caml, are generally under-appreciated, as they are never going to be as "good" or as "fast" as Perl or C.

      It's a shame, but hey, its kind of democratic.

      --
      "Well, put a stake in my heart and drag me into sunlight."
  37. 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
  38. Well $un has to do something by JamesOfTheDesert · · Score: 2
    Sun is a hardware company. Java was developed as an embedded application language. It lucked out with the growth of the web and the development of applets. Sun realized that if all applications were written in applets, then all a worker needed was dumb PC running a browser, with the heavy lifting done by (ta da!) a Sun server. You know, "the network is the computer(tm)." Remember?

    This is what lit a fire under Mr. Gates' ass. Navigator + Java = badNews. However, applets turned out to be craplets (even while MS wrote the best JVM); stand-alone Java was too slow for the desktop; Java failed to score any significant headway.

    But, Java could still be marketed for *server* development, so Sun decided to retrofit the embedded-language-that-could into a full-blown enterprise development lanaguge. (Hence the evil that is J2EE.)

    Of course, using Java on the server means buying big iron, which, by coincidence, Sun happens to sell. It was always about the server.

    Wow; you would almost swear they planned it this way.

    --

    Java is the blue pill
    Choose the red pill
  39. Intentional Language? by mlinksva · · Score: 2
    Anyone know/have any suspicions about whether Microsoft's "intentional language" language or similar has/will have any impact? See It's been couple years since I looked at these papers, and I'm probably didn't fully grok them then, but if I recall they could point to an alternative direction from the java bytecodes or .NET IL. From the first paper's abstract:
    This paper presents the idea of the intention as an abstraction mechanism, and an integrated development system which may be used to develop systems using intentions. Software encoded intentionally can be said to be immortal, in that its meaning can be sustained independently of the long term progress in programming notation and implementation techniques. The independence and self-sufficiency of intentions might well create first a market in abstractions or "language features", followed by the long sought-after dream of a software componentry market. Legacy code can be integrated into the new paradigm with minimal or no loss of information and there are considerable prospects for "hot" re-engineering or continuous improvement, which can be performed while the legacy system is kept in operating condition.
  40. LET'S GET IT STRAIGHT PEOPLE by Anonymous Coward · · Score: 2, Insightful

    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.

  41. What? by autopr0n · · Score: 2

    Are you trying to say desktop software written in java dosn't run on Linux?

    --
    autopr0n is like, down and stuff.
  42. Re:Homo Faber Strikes Again by Daniel · · Score: 2

    Your subject line is puzzling me. I'm trying to figure out what relevance, if any, this has to the book "Homo Faber". Could you elucidate?

    Daniel

    --
    Hurry up and jump on the individualist bandwagon!
  43. Multi-language means C# & VB.NET by SuperKendall · · Score: 2

    The multi-language features of .NET really serve one goal - provide a way to move thousands of current VB programmers forward as well as current C++ programmers addicted to Visual Studio.

    Both types of programmers will be coerced to moving into C# - the VB prgrammers enticed by the power of C# and the abilty to call into older VB libraries, C++ prgrammers by weaning them away from C++ specfic features (like templates), and both by the ease of C# calling into the built in libraries.

    When I first read the article on Eiffel# linked to in the article and realized how unpleasant it will be calling into the base libaries, I came to realize that the main effect of .NET's cross-language features would be to migrate other programmers to .NET. For any of you that have used Java (as that has the most comprehensive set of built in libraries of any language I can think of), imagine every call to the util or io or net packages involving some sort of name mangling... since your favorite features of your language of choice aren't allowed anyway, why not just use C#?

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  44. Is there an Open project to create a better one? by iabervon · · Score: 2

    It seems like there is a need for a common VM and runtime system. CLR evidently fails to be a suitable target for many languages. It's certainly possible to create such a thing: actual machine languages are such. The idea would be a VM that is easy to implement on just about any platform, along with common calling conventions for the various kinds of calls supported by different languages.

    It seems to me like the gcc CNI design is a good start, although gcc doesn't target a virtual machine.

    It seems to me like the right sort of VM would be a stack-based RISC architecture with bounds-checked pointer arithmatic, and probably some sort of GC. Code would be pointer-referenced blocks. The important part would be that it wouldn't have language-specific and CISC opcodes which would deal with objects and classes; at most it would make sense to have essentially installable microcode for a language's dynamic dispatch mechanism and such.

  45. 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
  46. .NET cross platform by Tony-A · · Score: 2

    worms.

    I don't think there is anything about Java that is "neat" or "little".

  47. It's wierd that .NET is from Microsoft by Animats · · Score: 2
    It's wierd that Microsoft, which controls the OS, should propose an interpretive common runtime platform. Sun did the interpreter thing for Java because Microsoft could change the execution environment on them. Thus, Sun pushed the download of executable Java bytecode, and Microsoft pushed the download of executable Windows code (as "Active-X plugins").

    If Microsoft wants to move executable objects around the network, they need a meaningful security model for executable code. But they can do that. They control the OS. The security-hopeless OSs, (Win 3x, Win95, Win98, WinME) are being phased out. Win2K and WinXP use the NT kernel, which can be made secure. (WinCE and the XBox OS remain security-hopeless, though.) If Microsoft wanted to provide for the execution of potentially hostile code in a safe way, they could do so.

    So why bolt on an interpretive layer and slow things down?

    1. Re:It's wierd that .NET is from Microsoft by Animats · · Score: 2
      so it does not slow things down

      Similar claims were made for Java just-in-time compilers. In practice, though, they have a speed penalty. JIT compilers give up some opportunities for global optimization, and it shows.

  48. 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.
    1. Re:should have been a comparison chart by Phil-14 · · Score: 2, Insightful
      "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.



      --
      (currently testing something about signatures here)
    2. Re:should have been a comparison chart by scrytch · · Score: 2

      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.

      I was about to post a reply here, and to my chagrin, a fairly flameful one ... something I'm noticing myself do too often, but that's another story.

      Anyway, I'll stand by my assertion that MS is putting real effort, and not just marketing, into making MSIL a target for other languages other than C#. The tailcall instruction for example, very useful for functional languages. In any case, C#, MSIL, the JVM, and every native CPU instruction set are turing-complete, so their intersection is "that which can be computed" (with varying degrees of efficiency, no doubt). Scheme and Haskell for .NET are perhaps in an embryonic phase (I discovered to my horror that Mondrian doesn't perform compile-time type-checking, the fundamental strength of Haskell!) but they are ultimately no less constrained by the VM than they are by a real CPU (other than the fact that the simple stack-based VM is a poor match for CPU architectures that stress usage of registers instead) ... And at least MS is acknowledging that other paradigms (functional, logic) exist and aren't beating the OOP drum to the exclusion of everything else.

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
  49. Parrot? by ClarkEvans · · Score: 2, Interesting

    I'm curious to hear what others have to say about Parrot? 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 chose to back Microsoft's C# instead of our core open-source langauge's Python, Perl, Ruby, etc.

    1. Re:Parrot? by alext · · Score: 2, Insightful

      Well, we have had quite a lot to say about this but
      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.

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

    1. Re:Generic Types by SpryGuy · · Score: 2, Informative

      And let's not forget that a preliminary version of generics is supported in JDK 1.4 (turned on by an option, but not "officially" part of the 1.4 JDK), and will be released as an official feature of the 1.5 JDK.

      --

      - Spryguy
      There are three kinds of people in this world: those that can count and those that can't
  51. New VB = language neutrality?? by the_skywise · · Score: 2, Insightful

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

    1. Re:New VB = language neutrality?? by sheldon · · Score: 2

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

      That's because you started with a flawed premise...

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

      Sorry but the differences are not that substantial. Yes, it'll be difficult to take existing code and drop it right into place. But on the other hand for someone already familiar with the VB syntax it's a trivial transition.

    2. Re:New VB = language neutrality?? by the_skywise · · Score: 2, Insightful

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

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

    Comment removed based on user account deletion

  53. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

  54. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

  55. I used to code in VB 4 and VB 5 by alexhmit01 · · Score: 2

    (plus a little VB for DOS).

    VB is a kick ass language. For a long time, however, it wasn't kick ass as much as VC++ was crap.

    VB was a RAD tool. You could throw together a database front end REALLY fast. VC++ was not. Building the same front end in VC++ was slow and annoying.

    The problem with VB was that you were given a crippled language because of Microsoft's marketting goals. They wanted an "easy" language for everyone. This worked. However, every project I worked on in those languages would need 1-3 Win32 API calls. Getting those calls to work would normally take between 50% and 75% of the project time.

    I had some projects where we really wanted to move the logic into VC++. I thought that since I knew C (and C++ as a better C, not real C++), I could play with VC++ long enough to move the logic into some DLLs.

    The interfaces were hard to pick up. We got faster computers instead and figured Moore's law would help us.

    Java tried to hit the VB developers with the RAD tools. While Java was better for building GUIs than VC++, it was far worse than VB. When I learned Java for school, I really appreciated the benefits of a true Object Oriented language. However, when it came to building the GUIs, it was hard to not cry. Sure the people that never built a GUI thought that Java was fine, but if you had built one with VB, Java made you cry.

    It's come a way now, and the modern IDEs are decent.

    You are 100% correct. Java could have hit big time if there was a VB like tool for it. However, Sun wrote AWT, which was a disaster. Reading books from Sun's Java people makes you want to cry. They brag about how they spent about 6 weeks on AWT. Why? Why did early Java applications look hideous? Why was there not a reasonable GUI system?

    Oh well, look at Sun Workstations at the time. CDE/Motif... yummy. Motif may have wonderful technical merits. CDE and Motif look ugly.

    Sigh, why didn't Sun work with Apple to develop the GUI portion? Both companies had a lot to gain by an assault on the desktop, both needed to unseat Microsoft, and both needed cross-platform to take off.

    Oh well, Apple helping push Java might have gotten them marketshare, and that wouldn't help Sun's delusions of taking over the desktop with expensive workstations.

    STUPID STUPID STUPID

    Brilliant OO programming is great for large projects.

    Quick and dirty will always win for quick jobs.

    How much "corporate" data is stored in little Access databases? Easy to develop helps a lot. Not everyone has a big IT department. Not every department in a large company can get IT to help them. Sometimes it's easier to find $500 for Access or VB and sneak it past IT then to try to get the write thing done.

    Oh well. I'm happily not coding in VB anymore, but I'm sorry that it isn't all Java-like. JavaBASIC would have been nice.

    1. Re:I used to code in VB 4 and VB 5 by alexhmit01 · · Score: 2

      Not really.

      C++ is a programming language.

      VC++ is a programming language, based upon C++, that involves building applications with their IDE and MFC.

      VB is also an IDE. It is also a quasi-object oriented language built on top of BASIC syntax.

      Alex

  56. I agree by markj02 · · Score: 2
    Microsoft needed something like Java to cope with the numerous safety, security, and portability problems they had due to their use of C/C++. Since Microsoft clearly couldn't use Java anymore after the lawsuit, they made their own closest copy and tweaked it in some small ways.

    The two languages and runtimes are very similar, and for most applications, the decision which one to use probably depends on whether you are a Microsoft or a Sun shop. For some applications, C# is a little nicer.

    In the long run, I hope we won't get stuck with either of these runtimes for too long. Both of them are still fairly limited compared to what modern languages can do. In particular, lack of support for parameterized types and lack of support for efficient functional programming languages, mean that these are clearly not ultimate solutions. Sun is perhaps a bit more honest about this: it's a Java runtime, but if you can make Python or Smalltalk run on it, more power to you. Microsoft is overpromising by calling their runtime "common" or "universal".

  57. Java or .NET can't be one thing for everything by stardeveloper · · Score: 2, Interesting

    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

  58. Bargain basement little side gigs... by Drake42 · · Score: 2

    ...are the biggest boon for free lance developers.

    You meet someone who is busy and needs to update their little side app. Because the person is doing it on the side they don't have time to do a proper design. You come in, bill them at a competitive, hourly rate to update/rewrite/extend the code and then train the maintainer on what you did. You get a nice little bonus for your spare time, and the maintainer gets to keep the clout of maintaining an important app plus gains access to a good example of using up to date technology in their application space. The only tricky part is finding the clients.

  59. Re:LANGUAGE NEUTRALITY IS A STRAW MAN by sheldon · · Score: 2

    You seem to have a very naive view of software development.

    Most companies already have at least a half dozen or so different languages deployed throughout the enterprise. (VB, C++, Uniface, Java, Delphi, COBOL, etc. etc.)

    I don't know anyone ignorant enough to think that they will ever be able to replace all software with a single language/platform as you suggest.

  60. Re:LANGUAGE NEUTRALITY IS A STRAW MAN by Drake42 · · Score: 2

    Why would you replace a completely working system?
    If it works and you don't need to significantly modify it, then you don't worry about it. But then, that application doesn't effect a future development decision much either.

    If the project does need major maintenance or you are trying to take advantage of the maintainers free time you have these situations:
    A) The project is not changing enough to be re-written in which case you stick with the language you are in. (Thus not needing language neutrality)
    B) The code is going to be rewritten in which case you can choose the language and don't care much about language neutrality.
    C) Your developer has enough spare time to work on something else, but is unwilling to learn a new language in which case you have a lazy developer.

    I do understand that migration is a slow process, but you don't need to keep your COBOL programmers forever if they refuse to learn new technologies. Obviously you don't switch languages in one big bang as you seem to suggest.

    Also remember that I'm not talking from the view of a programmer. I'm talking from the point of view of a business manager who doesn't want to spend a huge salary on COBOL consultants when they could spend much less money on a java programmer if they re-write the software in a more commonly known language.

    I know tonnes of people at large companies who spend 40 hours a week doing 5 worth of work because they're the only ones who know the obscure mainframe lanugage. As soon as the company migrates to a more up to date platform and language they suddenly get much more bang for their programmer buck. That is profitable. Paying someone for 35 hours a week of surfing time is not. Making new extensions to an old language (such as adding .Net to Cobol or the laughable 'Visual Fortran') is simply perpetuating a non-profitable situation.

  61. .NET is for the server AND the desktop by Otis_INF · · Score: 2

    (NOTE: below, 'java' is the name for a platform, not a language.)

    Webservices? Are you running these on the desktop? I don't think so. .NET is a platform where you can build winforms based apps (client/desktop stuff), or serverbased apps (webforms apps, also clients!) or server based distributed (!) apps (webservices).

    The idea of java from 1995, where you could have all kinds of applets, running on servers on the internet, and working together as one big app (the 'The network is the computer' idea) is never delivered by Sun, but will now be delivered by MS.

    .NET is for the server mostly and for the desktop, but it will take off on the server in the first couple of years, since the runtime is big. Yapping it is targeted at the desktop only shows that you don't understand where the power of .NET really is located: in the ease to create distributed applications with flexible clients.

    Java is now 'a' platform of choice for writing server side businesslogic components. Together with JSP's, its like the VB/C++ - ASP combination on win32. Someone said 'On the server, Java truely rules', well, I hope he means 'it's awesome', instead of 'it 0wnz', because it doesn't have the majority of the servermarket, and with .NET on the market, it will not get that majority in the future also, mark my words.

    --
    Never underestimate the relief of true separation of Religion and State.
  62. Re:If you have nothing to add, just be quiet by Tony-A · · Score: 2

    Microsoft has hypothisized that their system is programming language neutral
    Rubbish.
    The rules of the virtual machine itself are expressable as a language. It must of necessity favor languages "closer" to itself.

  63. CLS has been done before with CP/M by Mandelbrute · · Score: 2

    But all it seemed to do was clear the screen!

  64. That's Exactly the problem! by los+furtive · · Score: 2
    It is going to be a very important technology in the future, whether you like it or not.

    Wether we like it or not it still gets rammed down our sensory input devices until it starts leaking out of our sensory output devices. Or at least, that's what people like you would have us complacently expect.

    Let me give you the following important reasons why we should all make a concerted effort to have CLR run into the ground:

    1. It creates a barrier between your code and the cpu which limits the potential for what anyone can do (can you say digital rights management?)
    2. When newer processors come out it will slow down innovation because either:
      • you'll have to wait for the CLR to be updated to take advantage of new processor features
      • you'll have to wait longer to get the processor because of the coordination involved in making the CLR and processor features work properly.
      And who's to say processor company A won't convince Microsoft that parts of the CLR's code should hinge on unique features of their processor that processor company B has yet to implement. Has anything been setup to make sure this doesn't happen?
    3. We all know about the speed diferences between running bytecode through the JVM compared to running it as native code, imagine how bad things could potentialy be using CLR? It boggles the mind!!!

    I hope this makes you stop, think and create an informed opinion rather than complacently acception whatever MS (or ANY OTHER ORGANISATION) dishes out as being the status quo.

    --

    I'm a writer, a poet, a genius, I know it. I don't buy software, I grow it.

  65. It is not about VM by eud · · Score: 2, Insightful
    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

  66. Re:And behind #2 is... Java! by SuperKendall · · Score: 2

    I think however that you will be less likley to be damned with Java, in that there are more open codebases to start with and Java certainly is running on a lot more platforms (like my phone and Palm).

    The other side of that comes from us KNOWING that if you felt like it you could easily just take all of the specs and implement a VM on any platform you felt like, as other people have done just that - if the cost was way to high you could have built a WinCE VM from scratch yourself.

    As there are no finished open .NET VM's, and there are questions around the published standards even spplying all of the details you need to produce a full working platform that can run any .NET code, I'm not sure you could say the same thing for .NET (although in your particular case I guess you can be assured it will be on WinCE - but will there be a palm .NET? I doubt it).

    I'll clsoe by noting that you didn't complain about cross platform not working, just about VM availiablity. The cross platform aspect of .NET has yet to be proven out, though a lot of that may come down to the same issues - lack of VM on a platform (.NET for Solaris and the AS/400 is when?).
    .

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  67. Eiffel# by SimonK · · Score: 2

    Actually Eiffel# has two deficiencies compared with Eiffel proper. It lacks covariance, and it has no multiple inheritance. These are two of Eiffel's most important features. The other two are design by contract and genericity.

    Design by contract was never going to be an issue, because "its just code". Generics they have implemented, but the only way to implement them is by type erasure (as Java does). Thats inefficient for primitive types, and will make Eiffel# generic types non-type-safe when they're used in code in other languages, or, indeed, in Eiffel# code that does not have the source available at compile time.

    The end result is a radically different language from Eiffel. One, in fact, that looks like C# with design-by-contract and Java-style generics, but Eiffel's *syntax*. This is true regardless of Meyer's genius (which I don't dispute). In fact, it is a language you could implement on the JVM just as easily as you can implement it on the CLR.

    So why does Meyer say the CLR is "truly language independent" ? This seems to me to be an extraordinary assertion. Now, maybe he has some assurances from Microsoft that the capabilities of the CLR will expand in future versions, but if he does he is probably being naive to believe them. If not, as an assertion it does not reflect at all well on his intellectual integrity. Sure: you can implement any language on the CLR, just as you can on the JVM, but some languages will require so much effort, and be so inefficient, it will not be worth it. I don't care how clever Meyer is: the CLR has a profound bias towards statically typed, single dispatch, single implementation inheritance languages. Only 2 such languages exist: Java and C#. To implement multiple inheritance of mutliple dispath would require very considerable efforts. He admits as much himself later in the article, so why is he pushing this ?

    Meyer's article does indeed make several good points, but on the "true language independence" he does not substantiate his case, and, indeed, undermines it is several places. The CLR is clearly not "truly" language independent.

  68. Re:LANGUAGE NEUTRALITY IS A STRAW MAN by sheldon · · Score: 2

    "But those teams DON'T WORK TOGETHER. "

    As I said, you have a very naive view of software development.

    Most software is built within companies for use in day to day internal business. It is not shipped out the door, there are no 8am deadlines where you are working by yourself.

  69. Re:LANGUAGE NEUTRALITY IS A STRAW MAN by sheldon · · Score: 2

    "I'm talking from the point of view of a business manager who doesn't want to spend a huge salary on COBOL consultants when they could spend much less money on a java programmer if they re-write the software in a more commonly known language. "

    Uhh, yeah... whatever.

    Look, you don't know what you are talking about. That's clear because you've taken a problem that is really quite complex and tried to simplify it down to "people are just lazy."

    Obviously you've never worked in a largescale IT environment.

  70. Java Generics by SimonK · · Score: 2

    There's a JCP standard now. Its slated for implementation in 1.5

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

  72. Re:Java is going bye bye by dstone · · Score: 2

    1. 80% of Java coding right now doesn't take place on Windows platforms.
    2. .Net only runs on Windows platforms.
    3. Thus, .Net is not in any way, shape, or form going to hurt Java.


    Check your rules of deduction there, friend. Assertion 2 is true now, but we've already seen signs of .Net running on non-windows platforms. So I'd assert:

    2a. .Net may run on non-Windows platforms in the future.

    Of course, I'd then suggest that you change your conclusion to:

    3. Thus, .Net may affect Java in the future.

  73. One answer: mental masturbation by denshi · · Score: 2
    I'm serious. Microsoft has an ever-increasing number of programmers with little to do. Their culture is noted as being obessive about being around the office, even when you're burnt out and contributing nothing. So every grandiose project that reinvents the wheel mitigates that. The 'grandiose' part is not to be overlooked -- it's so much better for marketing to be able to say "we're developing a comprehensive solution for language conformity" versus "we're solidly on the treadmill of building quality interfaces for languages calling foreign functions". One promise is resignation towards mature engineering, the other is a 'build once and forget it' christmas morning fantasy.

    Another reason is that the above is *hard*. It's simple to call functions across languages -- it's much harder to make languages agree on a binary format for data representation so objects can be passed between languages. Sure , if the computing world had grasped LISP back in the 50's & 60's we wouldn't have most of the 'design goals' needed to patch over Algol, but they didn't and we did.

    Oh, and MS needed another line item to crush Sun.