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. "
...under the this thread...
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.
.net is pretty much just a ripoff of java, there are some 'evolutionary' enhancements like XML serialization and that sort of thing.
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
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.
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).
Try this article by Bertrand Meyer.
This isn't that hard people. Go download the .NET STANDARD, and go find the documents that Sun publishs about their technology.
Now look at the VM. Clearly Microsoft wins this one. The design goal of the JVM bytecode was obviously "design the easiest to implement VM that we can compile Java to."
As for the libraries; they both suck.
C# vs Java the language; C# is Java, just with most of the lessons painfully learned from Java applied, and a few of the more ridiculous design mistakes hidden slightly better (automatic boxing).
The question isn't "Is C#/.NET better than Java" because everyone who isn't a MS hater or a one-language-programmer J2EE hack can see the answer. The real question is: "Is the superiority of C#/.NET enough to offset the costs of moving to it from J2EE."
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.
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.
.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.
.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."
The author is saying pretty much what I figured, which is that
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
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."
We're on the road to Tycho.
I'm no Microsoft fan but .NET is not as bad as the author makes it out to be.
.NET is in its infancy. How great was Java when it first came out?
.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.
He lists numerous limitations of the CLR/CTS/CLS. Lets remember that
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
The race isn't always to the swift... but that's the way to bet!
TWW
"Encyclopedia" is to "Wikipedia" what "Library" is to "Some people at a bus stop"
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"
With all the talk of .NET and C# killing Java, I decided to take a look at Visual Studio .NET for myself.
.NET when it is as messy to program for as Windows is?
.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?
.NET would have absolutely nothing to offer to the developer community.
.NET and the dev tools that go along with it, I still think Java and the JVM are better for cross-platform development.
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
Mono may support
I think if Sun's JVM supported other languages like Perl, Python, C, C++, etc.
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
Comment removed based on user account deletion
"CLR lacks continuations" ... so does JVM
... so does JVM
... etc
.NET, including haskell and scheme.
"CLR requires static single inheritance"
"CLR lacks multiple dispatch"
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
I've finally had it: until slashdot gets article moderation, I am not coming back.
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.
Comment removed based on user account deletion
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
Tutorials on ASP, ASP.NET and JSP.
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>
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
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.
Yes. Just like I want Java's sandbox picking through my applet data and code, to stop it doing bad things.
Are you 15?
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.