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. "
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.
But how do you put it on your finger, does it hide your slashdot surfing from your department head? :)
...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.
There are a few articles at Microsoft on this topic here and here.
--Metrollica
Comment removed based on user account deletion
"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
Comment removed based on user account deletion
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.
Will it be possible to decompile CLR/MSIL like it is possible to decompile JAVA applets? Applets you find online don't really contain any top-secret code, but being able to decompile something like a complete commercial applicatin is something different...
I think that CLR is the way to go.
Observ! even through there exist many languague environment and school, there is only few types of physical machines that run them!!!!
Moreover, that programs and systems were built by people, and they were very adaptave.
All the problem will be sovled when the time is right. But CLR gives what we need: FREE!
i wonder if the CLR can handle punch cards?
... 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.
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.
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.
... 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".
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.
.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.
Personally I think that those strongly familiar with Java are probably the most qualified to write on the subject of
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
is that .Net's component languages are primarily BUSINESS languages for putting together BUSINESS applications...and for their primary purpose they are going to have HUGE benefits. VB programmers WILL be able to deal with C# and vice-versa, the languages are so simplified that their should be fewer bugs and productivity should be increased. Does ANYONE REALLY like multiple inheritance or use it frequently? (yes I know!!)
I pray that universities/ colleges etc DON'T teach C# as their language of choice though - it is totally inappropriate for many projects and that is part of the skill that we acquire as developers - right tool right job. A broad view is very important.
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?
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.
the point is not use multi languages on one project but across many different projects. i know where i work there are many different programming groups who use different languages. they write a library in vb that we, a C# team, can use no problem.
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!
"...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.
I guess the reason why all these Java advocates are complaining so much about the CLR and C# etc. is that it's so similar to JVM/Java, and actually quite useful for any programmer that has to write stuff for the windows platform. Remember: Sun == Microsoft wannabe.
Quoting the article: "This scenario will severely block innovation in the programming language field because a whole generation of programmers may be educated by CLR-compatible languages, and what they will learn is that all languages are identical. They will know only one model for inheritance, typing, frameworks, etc. They will be much less likely to experiment with truly different alternatives."
If anyone lets a single framework be their programming language education then they deserve so!
I can't believe he even brought that up. It is like saying oh now that they've invented the mouse innovation in the user interface field will be crippled since a whole generation of UI architects will be using the mouse for input and double-left click for yes, right click for options, etc....
This is very common, a good technical article drawing the wrong social conclusions. Actually technicians are very bad at drawing human or social conclusions, see Oppenheimer and Einstein.....
(Being only a programmer perhaps I'm drawing the wrong conclusion myself.....)
Broken Hearts are for Assholes. - Frank Zappa
Java folks have gotten quite prickly lately over .Net. Hard to blame them - Sun is telling open source programmers to go screw themselves, and Microsoft is delivering a technically superior alternative (while SUNW heads into the dumpster). Since 1995 this is the first time that Java has been on the defensive. Its amusing.
I almost forgot to watch the olympics as I was trolling!
Seems the site is down. Netcraft reports it running.
The site www.javalobby.org is running Orion/1.5.2 on Windows 2000
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
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?
Comment removed based on user account deletion
I think the subject says it all ;-)
Comment removed based on user account deletion
Comment removed based on user account deletion
Comment removed based on user account deletion
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"
Comment removed based on user account deletion
Comment removed based on user account deletion
Comment removed based on user account deletion
You stupid idiot, any program can be decompiled.
Duhhhhhhhh
Comment removed based on user account deletion
then we'll see.
all "popular" languages suck.
and so do the guys who wave the flags.
One nice thing MS got right.
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
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.
I'm sorry, every time I think of C# I can't help but think of that infamous video clip of Steve Ballmer flopping around onstage in front of thousands of halfheartedly applauding employees, screaming.. 'Developers Developers Developers..'
i didnt read anyone else's replies or articles, but i searched the html for "gnome" and it didnt have it. from what ive read, Miguel de Icaza says that genome will have .net integration. so now microsoft will have integrated into linux.
i cant wait for microsoft to own all your bank info, grocery stores, and souls. when you die, you will be standing at the gates of hell, and it will say, "to enter hell, please enter your .net username and password"
unfortunatly, there IS a spoon.
Comment removed based on user account deletion
Comment removed based on user account deletion
(with apologies to Tolkien)
One runtime to rule them all,
one runtime to find them,
One runtime to@#$@($*#($!#(&%@#$&%
The application POST.EXE has performed an illegal operation...
"Whata mak'n?"
:-). Balanced, informed, with just enough detail for those conversant with the issues. Thnx muchly, it's why I incesstantly check in with Slashdot.
Bill Gates who is now Chief Software Architect with MS has said the .NET initiative is a make or break deal for MS. Although I think this is a good part hyperbole. With no experience with C# and still deep in the learning curve of C/C++ from a MS DOS, VB background I'm decidedly not qualified to post in this thread so of course I will ;-).
My critcism goes to software development in general and the paradigm of the desktop specifically. The idea of "skins" and write once run anywhere development tools are great ideas but they still leave endusers with the same old GUI which both Windows and Linux use because, well uhm, we always have. But the daily complaints of many users suggest the 2D desktop model may not be as intuitively friendly as might be possible. I think users would like the benefits of OOP and 'skins'. Just throw an object up on the screen and name it an X file then right click to throw in a pie chart from Y database. I'm suggesting the same Mr. Potato Head approach for end users as developers seek in terms of Java and C#. My reborn interest in programming is geared toward developing just such a "Mr. Potato Head" approach to the GUI. If any one can guide me to a 3D widget conglomeration to file development I'd be appreciative of any guidance. If it's just to tell me I'm hopelessly lost and Quixotic and to go to hell. I know and as far as hell goes. I've been there, know some short cuts, have fiends there I can stay with and speak the language fleuntly.
"A mouse trap"
"But we already got a buncha mouse traps"
"Ya but this is a better mousetrap. It can catch all mice or any mice anywhere with no need for any other kinda mouse trap"
"Wow, uh why do ya wanna catch mice for anyway?"
What a pleasure to read
heuristic algorithm seeks stochastic relationship
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
Your argument is that if Java is so successful, how come something like WinAmp, Corel Draw, Turbo Tax isn't written in it.
The physicist Enrico Fermi asked if ET's are out there, and since our civilization is just at the threshold of space and nuclear power, and while there may be cave man ET's, there should be an equal number of ET's who are at least 10's of millions of years beyond us, we should have been contacted by now if we are not alone.
So if Java is so good, why are there no major shrink-wrap packages using it, especially because it would simplify making something run on both PC and Mac? I think the answer is that Corel tried to reimplement Word Perfect in Java, and the result was such a performance pig that it never saw the light of day.
I do know that Star Office uses at least some Java because it needed to do a Java install. It does not seem particularly pokey except when using the Help system and there are some excruciating delays typing in letters to an index word in that dialog that tries to complete your word for you in suggesting index entries. Do you know how much Java is in Star Office (I'd like some cherry tart without so much rat in it), and what is your take on its performance?
I agree. From neutral perspective here is a summary of the article:
... .Net doesn't behave exactly as I would like it and I am sure MS has no good reason for choosing the design they did ... blah blah blah
blah blah blah
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.
.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.
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
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
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
Nobody really gives a flying fuck :\ Poor Microsoft. Their hopeful "shot heard round the world" will be a dud. Goliath my friends is about to fall. ;)
The whole point of Science is to be an instrument that will always overcome bias. Because there is always bias, you create a dialog which employs the scientific method. Microsoft has hypothisized that their system is programming language neutral, the author of this article disagrees.
To reject either viewpoint as biased is pure laziness. You are unable to analyze the arguments yourself, so you are asking someone to do your thinking for you. I suppose if they are smart enough they can hoodwink you into thinking they are unbiased!
How long you think it'll be before everyone figures out we're the same pathetic geek in his mom's basement?
~~~
~~~
Now here comes the fun part. Where the grand-pappy post gets modded up "+1, Interesting." Watch and learn, dumbass.
- The Death of Computer Languages, The Birth of Intentional Programming (1995)
- Transformation in Intentional Programming (1998)
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 orExactly who gives a shit? You think you little weenies here on slashdot know about real world programming and such because you recompile your kernel? hehehe.
Gosh, it's no wonder the open source communitiy is such a huge joke.
Right-o. Don't forget the poppers and KY (oh, gawd, especially the KY)!
'"intentional language" language' in the parent should be '"intentional programming" research'. Excuse me.
.Net is going to be the final nail in Java's coffin. Bye bye Java. Scott McNealy, it's time for you to grease up.
.Net technology to become the most widely used development environment for programmers, but it will happen. .Net is going to make not so good Windows programmers into adequate programmers and so on. It will happen.
Microsoft has 90% of the Desktop market. Most good developers are Windows Programmers, without question. C# will entice most, if not all of the Windows programmers who went the java route back over to Microsoft tools. It will likely take 2 years or more for the
This is the death knell for linux and java.
Meanwhile, linus is still trying to convince himself a monolithic OS is a good thing.
Cheers.
C# open standards? That's bullshit.
.NET? And which has been standardized? Our use of language is very revealing.
.NET or Windows, or making as much reference to Mono, Linux, and OS X, I'll be satisfied.
Anyone who thinks so has already been screwed over by MS's PR machine.
Think about it: do we talk about C# or
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
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.
Are you trying to say desktop software written in java dosn't run on Linux?
autopr0n is like, down and stuff.
Suppose I know someone, better off than most, who is always being caught up in one lie or another. Maybe not an outright lie, maybe just a little exageration. He claims to have given me a birthday present, when it actually came from someone else -- and everyone knows that. His proof that he owns a Ferrari is an obviously doctored picture. He takes advantage of others bad luck by loaning a small amount of money for lots of collateral, then finds excuses for not redeeming the loan later. He's always got some new investment scheme, takes people's money, then always has excuses for why the scheme failed and you don't get your money back.
I'm sure most of us know people like that.
Now this acquaintance comes along with yet another great investment scheme. Do you believe him?
Once burned, twice shy.
Burn me once, shame on you. Burn me twice, shame on me.
And if you can't read between the lines, well, you will some day.
Infuriate left and right
Ocaml is as fast as c, object-oriented, has garbage collection, and isn't proprietary by anyone's standards.
I'll just have to convince everyone else and get used to those damn floating-point operators:
+.
-.
etc.
Everyone keeps talking about C++ as if it is halfway to extinction, I think the commitee should do some pseudo advertising of what is going in behind the closed doors, to inform us of the future of the C++ specification and to give light to the fact that C++ is mature. There's a long road yet before its frozen in ice. Someone support C++, I know I will!
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.
.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#?
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
"There is more worth loving than we have strength to love." - Brian Jay Stanley
C++ is the best programming language ever!
Cross-language programming is nothing new, and M$ is pulling the same stupid trick of re-inventing yet another wheel with .NET.
I was writing mixed-language C and Fortran programmes as early as 1985, since you had a common object format for fortran and C on most unix systems.
On the Mac, people were writing mixed language C, Pascal and Fortran programs around the same time with the MPW. And no performance hit from a VM either, since it was all linked at the object level. Today I write cross-platform programmes, Python and C with SWIG wrappers, and Python/C++ with Boost.Python. So who gives a flying toss about M$ reinventing mixed-language programming? Same crap, different bucket.
And the fact that they're getting it with a VM is even more laughable.
The point of having a VM and bytecode is cross-PLATFORM compatibility (which dates back WAY before Java -- take a look at UCSD Pascal), so comparing JVM to .Net is completely missing the point
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.
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
worms.
I don't think there is anything about Java that is "neat" or "little".
Java runs SLOW for me. I don't know if it's because of the GUI implementations of what, but every medium sized Java app i have ever tried, ran slow and ugly.
.NET will probably use MFC for Windows so everything will look just display fast, integrated to the OS and similar to every other app. already installed.
I don't think it's a design problem, but JAVA failed on the desktop because of the OS integration at the GUI level. Nobody wants to use an ugly app that looks different from every other app in their GUI and that doesn't integrate well.
And that is why it didn't fail so horribly in the server market (disclaimer: some people will argue it is a success).
unfinished: (adj.)
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?
The area where Java wins isn't going to be GUI apps. Just because Sun tries to sell it as all purpose tool, it doesn't mean it is appropriate for all cases. There are other more light weight Java gui API's, but it's still going to be slower than something native. Having direct access to the graphics API isn't going to be beaten by pure Java or C#. Is it possible to use a mix of native and some VM language? Sure, but again you loose the flexibility of cross platform support. People who bitch about Java being slow and that is sucks are right and wrong.
Does GUI speed matter for a server app which manages stateful financial transactions. Anyone that has developed serious server applications knows that speed is not the most important thing. Reliability, consistency, solid design and flexibility are far more important to a server app than running GUI API's fast. Your typical enterprise transactional application is memory and I/O intensive. Large companies usually have a mix of platforms and databases. Doing things like inserts, and updates across a variety of databases with varying data models is what application servers do best. Does an stateful transaction server need to access native API for graphics? What would be the biggest concerns building a real time trading application which goes out to other systems and places orders for trades? Sure speed is important, but not at the cost of loosing a transaction. Alot of systems still use batch jobs to process buy orders. Moving money around takes time, because it goes through several layers of validation and authentication. If running 100ms faster isn't going to affect the reliability or stability, then great. The only way to make sure transactions are handled properly and persisted are not rapid fire processes. Would you want to risk loosing a 3million dollar buy order because some piece of code has a memory bug?
GUI applications are completely different than enterprise back-end applications. C# is microsoft's effort to move into the enterprise application field. The biggest annoyance is Microsoft tries to paint a picture that development will magically become so much easier with C#. Since managers will buy into marketing, microsoft's PR will create unnecessary grief in the early stages of C# for developers, until managers realize it's just like every other language and has no magic. The magic is that people actually work together to build a product.
"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.
to name anything ".net" is a punch in the eye to anyone who enjoys the ease of grep, search engines, and even for the windows people, ctrl+f.
naming something ".net" is like naming a male child "boy"
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.
Yes. parrot.
.NET plans to have a reversal of roles in the security scheme. Since data that is on your harddrive is more trusted then data anywhere else, virii, worms, and other "anomolies" can occour (duh). So .NET plans on having everything on the server scanned, to look for the aforementioned anomolies.
.NET sifting and picking through all YOUR information, and code?
"With code access security, this scenario is reversed, executing the code as remote code provides significantly more security using default security policy." (http://microsoft.com)
Won't this put a new strain on the server? What about mail servers and news servers with almost ever-shifting information.
Moreover, this takes responsability off the user. What if a company configures the security wrong, and a virus is then sent to thousands of users, with no virus scanner because they were told the servers took care of that.
Finally, do you REALLY want
Just some thoughts.
unfortunatly, there IS a spoon.
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.
I don't understand your point.
.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...)
.NET language... also from the MSDN)
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
(oh and C is NOT a
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...
Comment removed based on user account deletion
Microsoft's CLR is actually based on Colusa Software's CVM, which Microsoft got when they acquired Colusa. Read about it here
Comment removed based on user account deletion
Comment removed based on user account deletion
FYI, It was sold for quite a bit of money.
what are multiple inheritance of implementation and genetic programming?
Thanks in advance....i have no idea what these are
(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.
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".
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.
Java? Oohhhhh that's that cross platform language isn't it? The one I spent 8 months developing a product on with the intension of it running on X, Windows and WinCE. The one that my clients bought into having seen the beta running on WinCE..... The one that Sun quietly DROPPED support/development for the WinCE VM leaving me with a bill for several thousands $ in licensing fees for a proprietary VM.
Point is it may be an open standard but I haven't noticed Sun releasing many of their products as open source. Not that MS is likely to either - they will both make decisions for commercial reasons and you could find yourself damned whichever beast you choose to side with.
Java mind share is already too entrenched on the server. Why choose a programming language like C# that locks you into a wintel server configuration? Java allows for many more options - mainframe/linux, intel/linux, Sun/Solaris, HP/HPUX/Linux, Intel/Windows, Hell, Apple/OSX servers for that matter. And after the fiasco MS created this summer forcing business to upgrade with a gun to their head... well that was the eye-opener that cinched the deal. Load on top of that all of the security problems and the callous way MS handles them...well you may be amused, but I don't think the rest of the world is.
I want to be alone with the sandwich
Think from the business point of view:
.Net from Passport because Passport is a particularly dangerous idea)
.com days are over and if you aren't thinking about your company's profitability you are wasting your employers money.
If you are a paying for programmers, do you really want them all speaking different languages? Obviously not. You want them all to be able to read each others code. This makes it so you can pull people from one project and put them on another project without having to teach them a whole new language.
The very first thing any company or project does is pick a language. Before that point, language neutrality doesn't matter becuase the company hasn't picked a language yet. Beyond that point language neutrality doesn't matter because everyone has learned the language of choice. In a legacy, language-hetrogenous environment language neutrality does not matter because everyone has to be trained in CRL.
.Net has no selling point because no business wants language neutrality and every feature it intends to offer can already be done in J2EE. (I'm seperating
The fact that language neutrality is 'cool' doesn't matter. The
...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.
.net and Java is about productivity, not about how all software will be written in the future. Those programmers, whose work will improve the most, consider this a revolution. This happened with Visual Basic, UCSD Pascal, Java, and now .net.
.exe file, that includes everything from the database engine to all widgets.
.net. Remember, that most PCs out there run Windows 98, a 4 year old operating system, and that Windows 98 is still one of the most sold operating systems on brand new computers. There is no doubt that the first versions of .net will be unstable and faulty just like everything else in version 1.0, which leads to the conclusion, that:
.net is too late.
But when you compare Delphi (a native compiler) with Visual Basic (a P bytecode compiler), there is no doubt which one delivers the best end-user products. Visual Basic requires a runtime and separate OCX-files etc., whereas software made with Delphi is often just an
I believe Java has problems for the same reason: How do you create a program that runs well on Mac OS 8, 9, X, Windows, Linux etc.? You definitely don't use the latest Java version, because that is not supported on all platforms! And somehow I cannot make some of my browsers run java apps in a stable way.
The whole idea of having a runtime is pretty troubled, and so it will be for Microsoft
.net will not be widely supported on deployed desktops in a stable version before year 2008, and maybe even later if Linux gets widespread use on the desktop.
That's in 6 years. How did the world look like 6 years ago? Well, Windows 95 was gaining market share from Windows 3.x and Linus Thorvalds could go unnoticed on exhibitions.
Personally, I believe
Dybdahl.
(NOTE: below, 'java' is the name for a platform, not a language.)
.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).
.NET really is located: in the ease to create distributed applications with flexible clients.
.NET on the market, it will not get that majority in the future also, mark my words.
Webservices? Are you running these on the desktop? I don't think so.
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
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
Never underestimate the relief of true separation of Religion and State.
But all it seemed to do was clear the screen!
>> And if three things happen - MS sticks to the 1.0 format, Mono finishes within a reasonable period of time, and VS.NET catches on- then most developed apps will run on multiple platforms without modification.
Just one question: why MS can be interested in that? You are insinuating that high quality business applications will run unmodified on linux, thus making buying NT Workstation&Server licences unnecessary.
Why would MS be interested in this happening?
At a more general level, I hardly see how the management team who (for 10 years) refused to ship VBasic for Macintosh and prevented an OpenWin32 standard to be created, will be the able to execute any multiplatform strategy. It doesn't seem to fit the management's culture, unless the whole top is replaced by different people.
But maybe I am missing something?
Language Neutrality is also important to big enterprises running Mainframe Applications. Most of the their code is STILL in Cobol, and will remain there. Providing Language Neutrality and multiple Language support is very smart of Microsoft. That Sun has not done much is very DUMB of them!
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:
- 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?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.
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:
- 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?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.
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
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).
.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).
.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?).
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
I'll clsoe by noting that you didn't complain about cross platform not working, just about VM availiablity. The cross platform aspect of
.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
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.
why do people keep floggin this? its been hell to deal with.
There's a JCP standard now. Its slated for implementation in 1.5
Wow, someone actually thinking about the requirements!
I'd like to stick my neck out and say that, if we're starting here in 2002, we should definitely avoid bytecode and go for an intermediate language based on ASTs, i.e. a representation of the actual program structure.
The reasons for this would normally be considered rather deep - stuff about reflection, meta-level programming, LISP-style macros etc. - but one angle is obvious to any Open Source hacker the code is the source! Just distribute the semi-compiled form and bingo! anyone else can read it, change it etc. Surely an "Intermediate" Language to warm the cockles of RMS's heart?
There should be references to this approach in LISP/Scheme research - if anyone knows a good paper I'd appreciate a pointer.
Assuming .NET apps compiled in Windows can be run on Linux, what happens to the role of the registry? Virtually any sizable program written for MS Windows makes use of the registry; will Linux implement something similar just to support .NET apps? If not, will programs written for Windows really run on Linux without problem?
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.
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.