Mercury Researchers Explain Microsoft .NET
Bob.Smart writes "Microsoft's .NET is clearly explained in
this article on the Mercury web site. The input from various important research
groups is also interesting."
← Back to Stories (view on slashdot.org)
.Net is built on an open source protocol SOAP. which enables anyone to write his own version on any language he please. It wouldnt be long before someone build the .Net framework for different platforms like Linux or Unix. Microsoft is just trying to pry the control out of Java's cold dead hands. It makes sense too.
.Net holds up against Java.
The world is not gonna communicate in pure java. Its not about one language, its all about interoperability across platforms. The Framework is pretty flexible so as to allow anyone to write the same framework for any platform and it wouldnt be too late before someone does.
Microsoft is attacking both Sun in its Server market (by pushing Windows 2000 Advanced Servers) and Java in its pedestal by pushing forward the notion of interoperability through diverse languages using the same framework. It would be interesting to see the benchmarks.
SOAP got me all warmed up, and I am looking forward to see how
Rapid Nirvana
Well, you're wrong. C++ that is compiled to run on native processors is generally unsafe but security is traded in for efficiency, but there isn't any 'unsafety' built into the language.
There are a few C++ interpreters that use a byte-code virtual machine similar to Java that are just as safe as Java (in both cases, you have to assume the VM programmers did a good job on implementing the security sandbox).
Of course, with interpreted C++, you lose efficiency vs compiled C++, but that's no different than with Java.
anyone with even less of a life than me (is such a thing possible???) should easily be able to find a list of international registrars and spend a few happy hours finding out.
What was the topic again?
~ppppppppö
If MS was able to get the Merc folks to cooperate, what about the poobahs of other languages? Have they been working on .net ports and we haven't heard about it because of NDA's. Were they approached?
Jonathan Moran
Oink, Oink!!
The reasons for the lack of working Java applets are simple: hubris on the part of Netscape and malice on the part of MS. When Java first appeared, Netscape thought they could write 22(!) different JVMs and have them all stay compatible, and easily updated when Sun updated the Java spec. Didn't happen. Then MS tried to hijack Java and basically killed the idea of easy applet portability.
Now that there are teams specializing in Java for different platforms (Sun does Win32, Solaris, and Linux/x86, IBM does IBM operating systems, Win32, and Linux, Apple does Mac OS and Mac OS X, etc.), the problems will sort themselves out. But the damage that Netscape did with their crappy implementations and MS did with their deliberate wrench in the works won't be undone for a long time, if ever. Java on the client is not doing so well, outside of in-house corporate applications.
Meanwhile, server-side Java is very, very portable. So, just start working on server-side Java and you'll see how good JVMs can be ;-)
-jon
Remember Amalek.
The stack architecture in the JVM is an abstraction; when the JVM compiles to native code, values that should be in registers are in registers (and register coloring and other optimizations are probably easier to do with live profiling information). If you think of the stack as an infinite suppy of registers, then it starts to make more sense. Using a stack-based architecture lets the VM pretend it has infinite registers, and then the native compilation step does the Right Thing.
-jon
Remember Amalek.
In the article at Red Herring, on the second page, the interviewer asks:
Bill Gates replies:
No. No. Dot.net is a Microsoft platform. Just like the Windows platform... Don't anyone kid themselves into thinking that Microsoft is interested in playing nicely with others.
One way to lead is to walk in front of the marching crowd. When the crowd changes direction you can either run faster in the new direction and get in front again or you can stop claiming to be the leader.
The software industry "crowd" has changed direction. Watch Microsoft run to be in front again.
The article is here: http://www.redherri ng. com/mag/issue82/mag-gates-82-home.html
PS: When is this damn little textarea going to be tweaked to a reasonable size?
OpenSourcerers
BUT this code only gets run once -- to generate the interfacing code. A few methods get generated on the fly, then they get JITed and run as native code from then on.
So you need to implement an API to plugin to the ASP+, but that's just to interface ASP stuff to your backend, once the code is actually running it all runs as native and that API is no longer used.
I hope that explains it better. There is no per-call interface to go through (although you are doing stuff over the web so of course things have to be turned into representations suitable for sending over the network).
For web services you don't even need to do any of this, you just mark the service as a web service and edit some configuration files.
For embedded languages you just edit some config files to tell it where to find your compiler.
Only ASP+ needs "real" work to be done.
Say again? We're writing a fairly heavy-duty AppServiceProvider-model application with JSPs and servlets hosted on IIS/JRun and I don't believe we've had any temptation whatsoever to use "native APIs" (whatever that is). Unless you want to count our assumption that lines are terminated with "\n".
Where did you get that 70% figure?
Oh, hold on, you just said .NET is a "wonderful and proven product which has been out for years". Dammit, I've been trolled ;)
.88 magnum -- it goes through schools.
--
It's a
--
It's a
-- Danny Vermin
Microsoft didn't come up with it. They just recognized a possibly good thing and are trying to be first on the bandwagon to adopt it.
What theese people have here sounds interesting. It needs to be studied more and explained better.
Besides, this thing _is_ GNU licensed. That's why I won't reject it out of hand and/or try to build a duplicate that is.
Need a Python, C++, Unix, Linux develop
Netcraft, has a service to find web servers with addresses matching an expresion like "*.microsoft.*"
__
__
Men with no respect for life must never be allowed to control the ultimate instruments of death.
GW Bu
actually, someone at the conf. mentioned that you could do this. Pretty neat. We use a lot of Delphi for our product here (I do web stuff, don't work on the actual software) and a lot of guys really like it.
---
DO NOT DISTURB THE SE
Right but the object model, data types, etc. is documented. All you would have to do is build your own. If you support the objects, methods, properties, and data types for those, it should work. As long as the program doesn't directly call the windows API (in other words, is completely .NET compliant).
---
DO NOT DISTURB THE SE
And those languages are C# (copy of Java), C++ (ugh) and VB (no comment necessary).
10. With Java, you have to learn Java. Plus, statistics show that 70% of all Java developers target APIs that are native to their platform.
That doesn't sound right, do you have a source? Most server-side Java is very portable.
With .NET, you can write in *any* of over 15 already-announced languages.
Languages for the Java VM.
If you actually want to speak intelligently about this, you really owe it to yourself to try it out.
Which I can't do, since I don't own any Windows systems.
The sad thing is, you'll be talking it down, when in fact, it's one of the coolest things I've ever seen in this industry.
It very well may be. But, at this point I don't see how anyone can trust Microsoft to put stability and sound architecture ahead of marketing concerns. Microsoft talking about standards compliance and cross-platform technologies has about as much credibility as Al Gore talking about campaign finance reform. Maybe in a year
How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
So all .NET code is supposed to use the common type system? But isn't the differences among type systems one of the main reasons for choosing a particular language for a particular job? This sounds like "use whatever language you want, just be sure to smoosh it into the .NET paradigm".
The evaluation of an action as 'practical' . . . depends on what it is that one wishes to practice.
You can't even quote from Sun webpages about this. How can you even begin to prove these outrageous claims?
"Ancillary does not mean you get to rule the world." --U.S. Circuit Judge Harry Edwards, speaking to the FCC's lawyer
Required: 5 years experience developing with Microsoft .NET
A few years ago when I was working on my MS, their head of Microsoft Research visited and asked our research group what he could do to help. They were extremely generous with software and documentation but as far was grants went they wouldn't even buy pizza let alone provide meaningful funding without specific strings attached. At one point they actually offered less than $2000 for code that took me an entire summer to write. Ugh...
Yup, and they gave IE away free for gods sake! why is everyone bashing MS??? (PS: for the hard of thinking, j/k) (PPS: altogether in fact, apart from the fact that it really needs more than my puny 128M of RAM W2K isn't that bad...) (PPS: ok ok I admit it I'm just going for the Greatest Amount of Karma Points Lost in 24 Hours world record)
~ppppppppö
Here's a go.
Microsoft .NET is basically a virtual machine, kinda like the Java virtual machine. The virtual machine works with several different languages. This makes debugging and development easier than before.
Of course the big problems with virtual machines are that you get a performance hit, and your code will only run on those platforms which have an implementation of the machine. I'm not holding my breath for Microsoft to port the .NET machine to Solaris or Linux anytime soon, or to release the specs so that others can do it, either.
Basically, it looks to me like a Java ripoff.
Hope this helps.
The Tyrrany Begins....
Finding God in a Dog
Ok, as applications, as computing in general, becomes more distributed, I see this type of "Grand Unification" stuff going on. We are no longer in a world of standalone, network independent applications. We're not even in simple client server. As Sun puts it, "the network is the computer", We are in a many to many world, many clients, many servers, many pieces of code which are both, in an arbitrarily teired environment.
.NET matters: migrating a humongous amount of legacy code to this new unified network-centric world, making this migration as painless as possible for C/C++, MSVC, and VB heads, and those already sunk to the waist in other Microsoft legacy crap. If you're in a Microsoft-oriented world, well, yeah, .NET is some hot sh*t because it now allows you to join everybody else. On the other hand, if you are starting from scratch building some core enterprise infrastructure, I'd go with J2EE. It supports (embraces but doesn't extend or extinguish!) pretty much every important standard out there, and is quick to support new ones (e.g., XML). And there is a lot of Open Source support for Java-oriented stuff (Apache's Java and Jakarta umbrella projects for instance).
I'm a full-time Java programmer, so I think J2EE is an excellent "unification". You have everything you need: full featured, cross-platform applications, RPC via RMI or CORBA, "mobile code" via serialization and reconstitution on the other side, full-blown web application support, (pretty) seamless database connectivity, message-oriented middleware, network-aware device capability, Java on portable or embedded devices, myriad well-written libraries and projects under review for addition (generalized preferences, logging, assertions...)...it just goes on and on. Sun's one fault, if it can be considered that, which Microsoft seems to be trying to take care of, is support for multiple languages *within* the VM. Well, technically there is nothing stopping you from writing a compiler for a language that compiles to Java bytecode, but the VM spec and the Java language spec are in some parts interdependent. But I can't blame Sun too much for this...after all, their ability to control Java is what has brought us these solid standards and libraries.
Here is where I think
Ok, I suppose that's enough of a plug from me. I just wanted to give the perspective of someone who is already where Microsoft wants us to go tomorrow.
It's 10 PM. Do you know if you're un-American?
On the other hand, .NET is their big enterprise play, so hopefully they will be using it to fix their security partitioning problems.
Interesting, but I think that Microsoft's track record has been to favor added features over security.
I've whipped up some managed code with Python, so there's more than 3 out there, with more on the way. It'll just be another tool. Similar hype with Java, right?
-beme
-beme
1971
Also, you can do full inheritance, etc. AMONG THE DIFFERENT .net languages.
Sounds like a complete maintenance nightmare.
In that case it would be:
koo-row-five-hin
Yep, I have seen scenarios like this, most often because a company adopted a propritary format in a vertical market. They are the only ones that know how to get your data out of their weird files, and the market is too small for anyone else to be motivated to break the system. Allows mini-monopolies.
-
I've had enough abrasive sigs. Kittens are cute and fuzzy.
Hehe, well when bandwidth gets as fast as your PCI bus is today, it won't matter much, now will it?
-
I've had enough abrasive sigs. Kittens are cute and fuzzy.
"It's Microsoft's groundbreaking new technology that lets any language call objects written in any other language!"
"Wow! So what's DCOM?"
"It's Microsoft's groundbreaking new technology that lets any language call objects written in any other language over a network!"
"Wow! So what's ALT?"
"It's Microsoft's groundbreaking new technology that lets any language call objects written in any other language so you perform do automation!"
"Wow! So what's an OCX control?"
"It's Microsoft's groundbreaking new technology that lets any language call objects written in any other language through controls that can be manipulated with a GUI tool!"
"So, what's
"It's Microsoft's groundbreaking new technology that lets any language call objects written in any other language through a virtual machine abstraction!"
Is it just me, or does Microsoft keep inventing the same thing over and over again trying to get it right? Soon enough .NET will turn out to be kinda like COM and DCOM and OCX but not really and then some hot, new, ground-breaking three letter acronym will come out and we will do it all again.
I'm a funny guy. I like it when things are thought out ahead of time so they can become a stable standard instead of yet-another-half-assed-attempt.
SOAP could be a good idea, but I'm not exactly sure that I like the security holes that it opens up. Counterpane points out that Microsoft's own security analysis faults SOAP for being able to "hide" protocol commands from firewalls. That basically means that you either prevent SOAP from at all functioning across your firewall, or go without a firewall. Granted, firewalls aren't the best security policy in the world, but I'd rather be assured that they'll work as advertised than have to worry about a brand new hole.
The Tyrrany Begins....
Finding God in a Dog
Unfortuntely, Mercury appears to be highly uninformed as to how the JVM vs .Net work. The JVM is first of all separate from a language. It can and does support other languages including COBOL, a Visual Basic implementation, Python, Perl, Javascript, and a host of others. The one major difference that makes the JVM not very suitable for languages such as C & C++ is that it has a security model that (intentionally) gets in the way. JVM code cannot access the underlying hardware, it cannot format your hard drive, it cannot infect you with a virus. These are all things that .Net is capable of doing. Plain and simple, Java is meant to be a secure web platform that is capable of running all the users programs without exposing them to unnecessary security risks. All M$ did is steal much of the JVM code for their vaunted C# and then expand it into .Net.
What does this mean to Joe Schmo? To put it simply, does anyone remember web-enabled ActiveX applets? I rest my case.
Javascript + Nintendo DSi = DSiCade
No, they probably won't, but this platform on top of .NET will be. And since it will be, you can look at it and see how .NET works.
Maybe they'll try to cover that with other forms of IP, like patents. I don't know.
All I know is that I read the article, and my brain wants to shut down into 'your subconcious is thinking hard about something' mode. Something about it is intriguing.
Need a Python, C++, Unix, Linux develop
This is a little tongue-in-cheek... but maybe the reason MS threw money at Corel was to distract it.
.NET is! Let's write our apps in C# and port our apps to it!
You know Corel: always fascinated by the latest gegaw. Ooh, look at how sparkly Java is! Let's write our Office product in Java! Ooh, look at how sparkly Kylix is! Let's buy the company! Ooh, look at how sparkly Linux is! Let's port our apps to it!
And now... OOOOooh! Look how sparkly
Corel, with it's attention-deficit disorder, could very well forget that they've got a Linux project on the go. D-oh!
Like I said, slightly tongue-in-cheek...
--
--
Don't like it? Respond with words, not karma.
Diskless workstations from Microsoft? When they put how much code on a hard disk for an OS install?
... and today's pet project has
Microsoft is brilliant at stealing other's work right away from them (I'm not neccesarily flaming them for this, mind you). Look at how well they poisoned any attempt at operability with their extended Kerberos by distributing the specs for it, allowing thousands of geeks to crack and distribute it and then send out a few weak letters saying "now, stoppit...". I'm sure they only had to seed /. by posting it once or twice, and we did the rest of it for them. Now anyone working on compatibility has to be completely sure that their work won't be called into question, and that they haven't even glanced at the 'stolen' IP before writing code.
Look for more of this type of "hiding in the open" as Microsoft begins playing with open source groups and companies. Hopefully we've learned our lesson on that last one, don't go being contrary about their restrictions just because they say not to. You'll hurt yourselves in the long run.
Fist Prost
"We're talking about a planet of helpdesks."
Fist Prost
"We're talking about a planet of helpdesks."
-Jaron Lanier
I can do better.
Microsoft FuCKiNG sucks!! In every thing this corporation does, not one bit of concern is shown for the end user - unless it means more money, power, and control for Microsoft. Why do people keep falling for it?
--
--
He lives in a world where those who do not run the client software of the omnipresent meme are unacceptable.
I saw a bunch of the .NET stuff at a recent conference. It's some cool stuff, and I was WAY impressed, especially on the ASP+ side, but as far as client apps, it's not a painless upgrade from vb6. Way different. This is in stark contrast with ASP+, which will run side-by-side with ASP pages (new file extension).
:)
.net languages. Write a form in C#, inherit it in VB, modify it, inherit the interface back into C#. Not only that, but when you run in debug mode in the IDE, it seamlessly steps into and out of the bits of code.
.NET language. Also linux, obviously.
Most interesting thing is definitely the CLR (common languange runtime). It gives common data types, and a (beautiful) common object model for system stuff. Also, common performance (it's the same runtime). As he put it "Microsoft (this guy wasn't m$) "Your language is a lifestyle choice" also "Microsoft has been putting 80% of it's R&D budget into it. If you think you can write better c++ garbage colleciton, go ahead, but early tests show even VB.NET and c#.NET written against the CLR outperforms the vast majority of C++ code today." Not sure whether I believe all that
Also, you can do full inheritance, etc. AMONG THE DIFFERENT
An old VB head had an interesting point too. By abstracting the API into an object model, it really paves the way for platform independence. After all, he said, if wrote a CLR for the mac, for instance, it would be trival to port a program from any
Anyway, those are my thoughts.
---
DO NOT DISTURB THE SE
Microsoft is trying to take over all of Java's functions without using Java. Why would they put forth such effort to reinvent something which already exists and is in use by virtually everyone? Because Microsoft wants to control you, your future, and the world. It is time for an end to Microsoft.
--
--
He lives in a world where those who do not run the client software of the omnipresent meme are unacceptable.
No part of the Java API has actually been REMOVED yet (except for the "private protected" visibility modifier, and I don't think that even survived beta). An applet written for JDK 1.0 will work just fine under JDK1.3.
I didn't know about the 22 VMs. Where did you learn that?
There were something like 22 different versions of Netscape for the different OSes (Solaris, AIX, Linux, Mac OS, Win16, Win32, xBSD, IRIX, HP-UX, I'm forgetting a few) and different hardware (Sparc, x86, MIPS, 68K, PowerPC, Alpha) Netscape ran on. There was no way to use any other JVM except for the Netscape one until the Java Plug-in.
Apple still gets complaints about the poor quality of Java under Netscape, even though Apple had NOTHING to do with the JVM, and has no way to fix it.
-jon
Remember Amalek.
This appears to be a way to get cross-language call compatibility without resorting to RPC ugliness like CORBA or COM/DCOM. Despite RPC protocol's attractiveness, they are bad solutions to the problems they purport to solve.
The 'R' in RPC stands for REMOTE it purports to solve the problem of calling a function in a different machine. Back in the early days of things like Xerox Courier, you would usually be using the same language at both ends.
CORBA is about DISTRIBUTED Object Based Computing. It purports to sove the problem of invoking methods in a different machine. They did this in a way that explicitly caters for different languages at each end, but that is not the primary objective.
The 'D' in DCOM stands for DISTRIBUTED, it is about doing COM between machines, and I would prefer not to talk about that.
RPC is inherently slow. It forces a process context switch, and it forces data to be mangled into a standard streamed format, and the worse thing is that it makes all this look like an innocuous simple function call. I've felt RPC was ugly every since I first saw it.
Doing anything between machines is slow compared with a function call. One reason why CORBA was invented was because old-fashioned RPC made you rewrite your code if you wanted to change which pieces were remote. The advance was to make it possible to get back some of the performance if the thing you were calling happened to be in the same place as you.
This takes a very different approach from RPC. Instead of literally sending messages to one another, languages hand eachother datatypes that they can mutually agree on the interpretation of. Much cleaner and quicker. A function call becomes a function call again. No context switch, no data mangling.
Except that if you want to be able to do "remoting" as MS calls it, you inherit from MarshalByRefObject, and all the stuff you hate comes back again. Fields and attributes automagically become methods (get/set pairs), and a whole stack of marshalling and transport stuff kicks in as soon as the object you are calling is remote. What looks like an access to a field of some object gets mangled into a streamed format, by default using XML which is verbose and expensive compared to your average RPC, but not standardised to that so you have no guarantee of interoperability (like CORBA before the customers screamed and screamed and SCREAMED and the vendors finally gave in and implemented IIOP).
Maybe we'll get back to the nice old days of C, FORTRAN and Pascal where you could call the other languages functions in the same address space.
If you want to limit your programs to one process in one machine then that's OK, but it is not what Microsoft are doing with .NET.
BTW, this is all a guess. The article is kind of vague.
The article is just one item in a mass of data about .NET that is sloshing around the web. The difficulty is in extracting information from that mass of data, acquiring knowledge from that information, and finally achieving wisdom in the light of that knowledge. Ill-informed speculation is the stone in your shoe as you tread that long and weary road.
You're confusing VMs and library implementations notably the AWT. Netscape did screw up the VM (that actually runs the bytecode) among other things by coupling it too tightly to the rest of their browser because they failed to understand that implementing a language runtime is really quite hard. This causes most of the crashes, especially when combined with glibc's rather over-sensitive malloc implementation. There are only small differences in VM implementations on different platforms (threading, mostly), and none of these should be user visible.
However, the cause of most of the incompatibility is the large number (actually its 3, Mac, Windows and Motif/Unix) of AWT and standard library implementations. Netscape tried to do it all themselves without licensing Sun's code. Given the speed Sun changed early versions of the platform at, that was fatal.
It's only a conspiracy theory, of course, but the suggestion was half serious.
CE is the only operating system that Microsoft has worked on (unless you count OS/2) which could be called truly "innovative". The only way that you can get Office (even if it is the cut down edition) to run on a palmtop is to use an OS with almost no bloat. CE has almost no bloat. All you need is a bloatless OS and the CLR and you have a nice framework for a new OS.
Besides, the issue as I see it is not "CE to replace NT", but "something new to try to kill off competing OSes". It might not be CE. CE would, after all, need some extensive modification (at the moment it is targeted to architectures without MMUs, for example) to compete. They might decide it's better to buy a company with a suitable microkernel.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
Stroustrup has always claimed C++ can use a GC, and it is almost true. There are conservative garbage collectors implemented by ignoring attempts to free memory, or regarding as mere hints, that will work both with C and C++. Its helpful to compile applications with a tendency to leak memory against these things, as it does reduce the problem.
However, most of the advantage of a garbage collector is that it saves developer time, and allows applications to have a structure more natural to what they actually do, rather than one twisted by the need to track memory usage, or by crufty reference counting schemes written by people who do not understand memory allocation (its rather a black art).
To be portable, C++ applications must assume they need to call delete, and that they need to take care of housekeeping. C++ programs written assuming a garbage collector are very unlikely to be portable. It must also be noted that conservative garbage collectors have rather poor performance characteristics compared to state-of-the-art GCs for languages without ad-hoc pointers.
Mercury is a research project at the University of Melbourne, not a company. The funding we got from Microsoft came with no strings attached.
.net. But it has also benefitted Mercury by enabling us to write a new backend with which we can easily target many other VMs, including the JVM, thus increasing the usefulness of our language.
Sure, it benefits MS to be able to say they have lots of languages supporting
I think it's a little late for that scenario. You won't need to explain to the newest of newbies more than once that no hard drive = no storing stuff that the man doesn't want you to. Diskless workstations are going to go over like a led zeppelin, and MS knows it.
More likely they will attempt to end piracy of *their* apps by slowly phasing out physical copies. Certainly you won't need to install 800 megs of bloat in order to use office, provided you maintain your subscription all the popular apps will be piped on-demand to your screen. Maybe an operating system kernel that immediately connects to the net and updates itself and vital system files to the latest version, provided your account is still active. Think Microsoft Windows Update around the clock. Of course companies that choose not to partner with microsoft.net could very well be patented away from adopting the same types of schemes, and will continue to distribute there wares in a pirate-freindly, copy to the hardrive edition only.
Fist Prost
"We're talking about a planet of helpdesks."
Fist Prost
"We're talking about a planet of helpdesks."
-Jaron Lanier
Basically, it looks to me like a Java ripoff.
He answered the question crackhead.
--
--
He lives in a world where those who do not run the client software of the omnipresent meme are unacceptable.
A couple things that I feel should at least be put out in the open:
.NET has been in development for over 3 years.
.NET application at http://www.ibuyspy.com/ where it has been running without fail for approximately 6 months.
.NET, you can write in *any* of over 15 already-announced languages.
1.
2. You can visit a sample
3. You can download the pre-beta SDK and develop in three languages *today*, and it all just works. I've played with it extensively.
4. The Common Language Runtime compiles only the functions that are called, and it uses an optimizing compiler to do it. When other functions are called, they are compiled just-in-time (saves a lot of system resources).
5. All languages are on equal footing. They all share the same GC and debugging features. You can spawn threads in VB just as easily as in C++.
6. You can inherit a VB class into C# into C++ and back into C++ if you want to.
7. Everything is strongly typed...no more figuring out what kind of string that function in C++ expects. Just call it natively. It just works.
8. The Common Language Infrastructure (which includes the CLR) is being submitted to ECMA (a standards body).
9. So is C#.
10. With Java, you have to learn Java. Plus, statistics show that 70% of all Java developers target APIs that are native to their platform. Thus, the "write once, run anywhere" promise never comes true except in the most simple of situations. With
11. Although I could go on, I have to mention that it just kicks major ass.
If you actually want to speak intelligently about this, you really owe it to yourself to try it out. Or, you can complain that the ".NET" term doesn't make any sense, thus, because of that severe brain blockage, you can't actually talk about the technology and its merits, because you've never even given it a chance.
The sad thing is, you'll be talking it down, when in fact, it's one of the coolest things I've ever seen in this industry. Linux or not.
www2.hursley.ibm.com/tc39/mins-28sep00.html has some minutes of a ECMA meeting that talks about the standardization of the CLI and C#. Obviously we don't know what they mean by open-source and it isn't clear whether they want to release their non-Windows implementation, but I think there's nothing in the platform itself that is Windows specific. The apps written on it might be a different matter.
I think the important thing to do when trying to guess Microsoft's motives here is try to understand how they are trying to improve on Sun's offering. And remember that Microsoft might not care too much about giving away a platform that runs on all OSs (after all, Windows earnings aren't the cash cow they used to be) if it means they can make money on the platform.
Of course this is looking on the bright side, perhaps their plan is much more nefarious and evil in intent. My point is simply that because Sun has been a bit closed and static with Java and the JVM, perhaps Microsoft has something to gain by being open with the CLR.
A Dick and a Bush .. You know somebody's gonna get screwed.
War is necrophilia.
I too fail to see how my question is insightful- *shrug*
At this rate I could be a real karma whore if I post more insightful questions such as ... Can someone please explain (in plain English) what the whole meaning behind the Natalie Portman and hot grits posts are about? ;-)
And why should MS care? They get to collect .NET subscription fees from everyone.
That alone sounds like a damn good reason to forget about this thing. I'll stick with Java for now. Don't like feeding the MS beast any more than necessary.
It's not enough to bash in heads, you've got to bash in minds. - Captain Hammer
This appears to be a way to get cross-language call compatibility without resorting to RPC ugliness like CORBA or COM/DCOM. Despite RPC protocol's attractiveness, they are bad solutions to the problems they purport to solve.
RPC is inherently slow. It forces a process context switch, and it forces data to be mangled into a standard streamed format, and the worse thing is that it makes all this look like an innocuous simple function call. I've felt RPC was ugly every since I first saw it.
This takes a very different approach from RPC. Instead of literally sending messages to one another, languages hand eachother datatypes that they can mutually agree on the interpretation of. Much cleaner and quicker. A function call becomes a function call again. No context switch, no data mangling.
Maybe we'll get back to the nice old days of C, FORTRAN and Pascal where you could call the other languages functions in the same address space.
BTW, this is all a guess. The article is kind of vague.
Need a Python, C++, Unix, Linux develop
Microsoft invited programmers from Melbourne to Redmond without having them sign contracts; only a NDA which is commonplace in any software company. So, from now on, if I catch anyone else blindly claiming that Microsoft is evil, I will show them this evidence!
One argument that Microsoft is evil is that they "tainted" Sun's Java source. The truth is, they optimized it for speed and performance. It seems that Microsoft was only trying to take Java in the right direction.
"Ancillary does not mean you get to rule the world." --U.S. Circuit Judge Harry Edwards, speaking to the FCC's lawyer
There's an accessible description of .NET in the MSDN magazine.
I think this would be a tremendous boon for free software.
I know many people who would be much more likely to try out Linux/Star Office/Gimp etc. if they actually had to pay for the software that they use.
If MS's tactic is to allow piracy until they own the market, then try to stop the pirates and soak up the profits, it may just backfire on them.
Meanwhile, there already exist cross-language network object-model environments , some of which support far more languages than Mercury mentions .NET supporting. No, GNOME isn't VM-based, and for good reason; however, it doesn't need to be to support C, C++, Objective C, Perl, Python, Guile, Ruby, Ada, Eiffel, Dylan, Pike, Pascal, Haskell, et al.
Disclaimer: I'm a former Mercury developer. I left the project before Microsoft approached the Mercury guys, but after a fairly scary dinner with James Plomondon, whose job title at the time was "Principal Java Evangelist, Microsoft Corporation". It's a long story, which can be told some other time.
Anyway, .NET has, as part of the system, a common language runtime (CLR) for different programming languages (and I mean very different programming languages; C++, ML, Perl, Haskell and Mercury are about as mutually different as languages can get). This distinguishes it from COM/CORBA where objects must be "marshalled" and "demarshalled" (i.e. serialised and deserialised) when communicating between different languages, even on the same machine. With .NET, different languages use the same binary layout and so can just share the memory.
This represents a unique opportunity for language researchers to get their language used. Software is increasingly being written based on a component model, but implementations of technologies like COM and CORBA impose a significant overhead when moving from one language to another. The .NET system means that you can mix and match languages without the associated performance impact. If you think it's easier to write your GUI in Java, your AI engine in Mercury and your time-critical data logging stuff in C++, you can do that, and you don't pay such a huge price for the mix. This means that programmers can try out new programming languages in their projects without having to go "all the way".
The Open Source community must take note of this! Admittedly we haven't seen much in the way of actual technical detail about .NET yet, and Microsoft's implementation might turn out top be hopeless, but the CLR is a good idea.
And now, the obligatory conspiracy theory for the day: As operating system kernels get smaller, moving data between OS components efficiently becomes trickier. The Hurd uses the Mach IDL, which is not unlike the CORBA IDL only much more lightweight, to marshall and demarshall data for the various components, for example. The CLR might represent the first part of a new operating system from Microsoft; one which will eventually replace NT, because it provides a way to build an object oriented OS in multiple languages without the serialisation costs.
Microsoft already has a suitable microkernel which could support CLR. It's called Windows CE.
They also have a motive. As we all know, Microsoft only "innovates" when they're trying to kill off competition. (For example, IE to kill off Netscape, Win9X to kill off OS/2, NT to kill off Netware and other similar systems.)
Watch carefully.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
--------
Bleah! Heh heh heh... BLEAH BLEAH!!! Ha ha ha ha...
ML programs are hard to compile to Java bytecodes, since Java functions aren't tail recursive. There exists ML to Java byte code compiler (MLj) but it suffers from this limitation. The MLj Compiler
I also question the need to abandon platform independence in order to get some perceived language independence. MS has absolutely no motivation to implement an architecture that would provide BOTH language independence AND OS indepence and guess what JVM already does that!.
Of course all the MS shops will use
A Dick and a Bush .. You know somebody's gonna get screwed.
War is necrophilia.
But that cross-platform bit makes me wonder how any of this is an improvement over the JVM. Code for the JVM compiles to JVM bytecodes which are turned at runtime into native code. How and when this happens depends on the JVM (HotSpot, JIT, TowerJ, etc.), but the net result is the same.
People have ported other languages to the JVM (JPython being the best known example), and it's pretty easy to hook Java code up to DCOM (Take a look at J/Integra from Linar Systems). Granted, it sounds like MS added VM opcodes to .NET's VM to improve performance for languages besides C#, but that's just a nice addition.
So, can anyone give me an objective reason why this is better than the JVM? Or is .NET only MS' version of the JVM with C# being its version of Java?
-jon
Remember Amalek.
Can someone explain (in plain english) what .net is all about?
The real question is, how stable will it be? Every software vendor out there is rushing to develop new architectures, technologies, etc., but they don't spend nearly enough time testing. True, garbage collection should improve stability, but that's only if garbage collection is implemented properly. People are likely to just jump on the .NET ship and hope that it will cure all their problems.
.NET, Java is a mature technology, yet it's still not very good. I'd rather see developers put their energy into making Java mature and bug-free, even if .NET is technically superior (not saying that it is).
When will people realize that there is no silver bullet? More than all these fancy technologies and buzzwords, we need good software engineering and extensive testing. Customers share part of the blame for not shunning companies that produce crappy software. Capitalism only works if customers use their brains.
Here's a quick question for you: How many broken Java applets have you seen? How many have you seen that work perfectly? I almost never see Java applets that work perfectly (may be my JVM, but what good is the cross-platformness of Java if you can only get a working JVM for one platform?). In comparison to
This is my rant for the day. Yes, good architectures help, but good software engineering and thorough testing will always be most important. Too bad they aren't sexy enough to get the attention they deserve.
Yet another example of how immature the slashdot audience is. Microsoft has come up with a winnning technology here, it's going to be the future of computing as we know it. Just because its not GNU licensed and powered by Linux doesn't mean that we can't appreciate their work. Microsoft has plenty of programmers who have the same ideas as we do, and they're implementing them, better. If the Linux side of things wants to bash MS, they should at least find some real problem of theirs, such as Bill Gate's alleged affair with an intern, rather than bash a wonderful and proven product such as .NET which has been out for years and is succeeding beyond Microsoft's wildest dreams. MS's Windows Terminal Server performs over 30x as quick as XFree does, while providing even more functionality, such as a way to save files on Microsoft's core server with the touch of a button. Linux lovers watch out, the future of computing is already here, and its name is .NET
Shine on, you crazy diamond.
What this comes down to is that Microsoft is giving money to a research group and getting feedback on the language independent features of their runtime. That's good because it helps support programming language research, a chronically underfunded area. And if .NET ends up being a good, usable, open runtime after all because of the feedback, even better for everybody.