What is .NET?
CyberBry writes "There's a great technical overview of Microsoft .NET over at arstechnica: "In a remarkable feat of journalistic sleight-of-hand, thousands of column inches in many "reputable" on-line publications have talked at length about .NET whilst remaining largely ignorant of its nature, purpose, and implementation. Ask what .NET is, and you'll receive a wide range of answers, few of them accurate, all of them conflicting. Confusion amongst the press is rampant. The more common claims made of .NET are that it's a Java rip-off, or that it's subscription software. The truth is somewhat different.""
I haven't seen this mentioned here yet, but they actually released the dev stuff for .NET. Article here
...where MS is going with this initiative. They seem to be touting portability, but what kind of portability? Certainly not inter-OS portability, that's for sure. No doubt that their Common Language Runtime is so heavily patented, encrypted, folded, spindled and mutilated that it will be quite difficult for someone to make it run on a non-MS platform. I know that quite a few Linux-heads are working on it. Prediction: if they ever get it right, MS will sue them about four microseconds after they post it on Freshmeat.
.NET have similar limitations, I wonder?
That being said, it does seem like MS is trying to wean themselves out of a strictly x86 world, and portable binaries is a good way to do that. What about performance? Java used to be well known for crappy performance because of the abstraction forced on the code. Will
In the end they will lay their freedom at our feet and say to us, Make us your slaves, but feed us. - Fyodor Dostoyevsky
Bwahahahahaha...
"I will take the Ring," he said, "though I do not know the way."
Unfortunately, no one can be told what the .NET is. You have to see it for yourself.
There are some good .NET development books coming out now. Even O'Reilly has had one out for a while (which I have), so the publishing companies seem to be eager to sell .NET.
.NET framwork development tools, and it seemed much faster (probably because my hand-written code was much smaller).
.NET runtime and classes for FreeBSD. I have talked with the lead engineer of this project over e-mail, and he said that it's due to be out in late Spring. I asked him about the Windows Forms stuff, and he said it will be based on Tk (could someone explain the implications of this?). He also said that there are going to be very few UNIX-specific classes, but they hope people will develop those on their own.
Right now I am downloading the seven CD Visual Studio.NET Enterprise final version (yep, already warezed), a $2500 program. It even has a version of Visio bundled for doing application modeling, and that somehow automatically starts producing code, from what I understand. This is going to be interesting to try.
I have had the VS.NET Beta 2 for a few months, and it's generally easy to use, but very slow. I mean, a general "Hello World" application takes several seconds to compile, and also at least 3 seconds to execute! I have done the same thing using the raw
Microsoft is developing a version of the
language neutrality, but based on what I've
read so far, it's only language neutral if
your language is c# or close to it.
However, maybe they should repeat
the claim another million times; it worked
with getting people to think Windows
was secure.
(currently testing something about signatures here)
When your friends ask, just tell them "It's a language-neutral Java knock-off..."
Why do people try to make it more complicated? Ok,
Others like to confuse the application that can be written by
The Platform != It's Applications
It's Simple: It's a Java rip off!
"Communism is like having one [local] phone company " - Lenny Bruce
IMHO, that is probably pretty darn accurate. Nobody knows exactly how just yet. Yeah, it sounds like I am paranoid, I have good reason to be.
Microsoft^H^H^H^Hpoly
My beliefs do not require that you agree with them.
Stability before performance, every time.
Or he'd rather be writing, "The JIT produces fast code, but sometimes crashes."? Or, ".NET is vaporware, still three to five years on the horizon."?
The reviewer should recognize and applaud the focus of the developers. Because you know they were sitting around saying, "Wouldn't it be nice if we did this fancy optimization...". Instead, they put first things first.
"Premature optimization is the root of all evil," D.E. Knuth. Learn it. Live it.
Just coincidental that Windows XP drops default Java support.
First, Java works fine in XP -- you just have to (automatically) download the VM or get it from Sun.
Secondly, the real advantage of .NET is that you can write in whatever language you want to and use components from other languages in your .NET programs. Those are hardly minor advances. Java has had a six-year head start, not to mention a vast amount of hype, and if it's the better technology, it'll hang in there. If developers like the .NET stuff better, they'll use that. In all likelihood, there will be a lot of different competing languages which will be good at different things. Nothing wrong with that, IMHO.
You can't believe it? It's a natural part of their onslaught on the "viral" GPL. And it makes a Mac version just moments away.
Yours Sincerely, Michael.
> Anyone who wants to develop for .NET needs to shell out at least $1,079 for Visual Studio
.Net Framework Software Development Kit for free (*connection charges apply) at this link
.NET Framework Software Development Kit (SDK) includes the .NET Framework, as well as everything you need to write, build, test, and deploy .NET Framework applications--documentation, samples, and command-line tools and compilers.
Or... you can go out to MSDN and download the
From the description:
The Microsoft®
I'm excited about
And really, Microsoft.com is the only one that could manage to make this a reality. As much as I hate the company, I can't help but feel grateful that I'll finally be able to write apps in a nice high-level type safe garbage collected language and have that be the most well-supported method. (And if others start using high-level languages, maybe my computer will not crash so much, or have so many buffer overflow sercurity holes.)
(As an aside... I fucking hate when people (like the author of this otherwise good article) use the word 'whilst'. Just say 'while'. It's not like we live in Medieval Britain.)
Well, you can use any language that happens to look very similar to C#, and which has a CLR compiler. Take a look at some of the languages that have been ported to .NET, and you'll see what I mean. They are modified to look like C# with different syntaxes. Example: Smalltalk# (or whatever it's called). Forget about dynamic typing anymore. Basically, you can use any language so long as it's mauled to look like C# (static typing, etc.) This multiple-language thing is not a big win, really.
Well.
The GAC is reference-counted -- if you no longer have any applications using an assembly in the GAC, it'll get removed (there are some provisos, but that's more or less how it works).
And the GAC does have shared libraries -- it just provides a mechanism for having different versions of those shared libraries. If a bunch of applications all use the same version of the same assembly, then they'll use the same file. So there's still a benefit over static libraries. It just also fixes the problems that have ocurred with dynamic libraries. When they *can* be shared, they will be, but unlike Windows' previous DLL implementations, it doesn't _require_ them to share the same version, even if they're not compatible.
I don't think they ever gave a straight-forward definition that clearly stated that .NET is this and this. If they did then I missed it. .NET could do. He introduced and chatted with several MS employees on some of the things .NET could do. I especially liked their comparison to Sun's J2EE Pet Store sample application. They've got this comparison available on the web at: .NET. After three of these we broke for lunch and I went home, still not being clear on what .NET is, exactly.
The show started out with a welcome message from the Microsoft Technology Evangelist...no, really, that was his title.
Next came Steve Ballmer who came out to work the crowd into a frenzy and tout all the things
http://msdn.microsoft.com/net/compare/default.asp
(I hope Sun posts a followup on Microsofts claims in this comparison)
After this they worked the crowd into another frenzy by randomly giving away three of the XBox games. Then they brought out some folks who gave success stories on implementing
All in all it seemed like I heard mention of several different items:
.NET
Visual Studio .NET
.NET Framework
.NET MyServices
.NET Server ...and probably some others I missed. I'm going to visit Microsoft .NET Defined and see if that helps clear anything up...
And Microsoft has provided the answer: Here is the runtime model, here are the APIs you call, here are some tools you can use, here is how to get help if you have problems.
Now substitute a web of connected personal computers -- the Internet -- for a single one, and developers are still asking, "How do I write an application?" And Microsoft's answer is, .NET.
DOS provided very few services to application writers, but with the Windows APIs, things got more sophisticated: support for graphics, for printing, for various other input and output devices, and eventually for networking. These were filtered through a standard Microsoft-provided operating system to various third-party devices, each with their own device driver, which performed the actual work.
In the .NET world, the "API" will handle Internet-related issues such as password verification, price calculation, payment, and so on. The "operating system" will be a set of always-available Web sites that may then dispatch the actual work to third-party sites -- the "device drivers" in the .NET model.
That is an excerpt from a longer article which I wrote back in November 2000.
- adam
They are developing a FreeBSD port of that incomplete and nearly useless portion that they are submitting as a standard. Real .NET apps will in fact be confined to the Windows platform, unless Mono is much more successful than I suspect it can be.
The author is confused about JIT compilers and virtual machines. A virtual machine is just a piece of software that executes programs in some machine-code-like language. It does not necessarily interpret the instructions. Indeed, almost all virtual machines compile to the local machine's instruction set at some point.
A JIT compiler is a technique used in virtual machine design to speed execution. Technically, a JIT compiler ought to compile code as it reaches it on the execution path for the first time, but thanks to some sly work by Symantec, its become acceptable to call something a JIT compiler even if it actually compiles all the code at load time regardless of whether it is executed or not. Hence the complaints about Java's startup time. Microsoft's efforts in this direction seem faintly bizarre to me. All previous evidence is that keeping compiled code around between runs is not worth it. However, I suppose since they only really support one platform, it won't really cause any problems.
C# is very much not "C++ for rapid application development". It's a completely different language, much more closely related to Java. While C# and Java share C++'s syntax, their underlying semantics are more closely related to Beta or Smalltalk.
As I would expect from someone who obviously doesn't know much about VM or language design, the author also makes far too much of the CL?'s cross-language abilities. While it has good support for implementing functional languages, as far as the much more important OO features are concerned, it is only going to work well for statically typed, single inheritance, single dispatch languages that don't need to do any code generation. Its is my contention that any OO language that can be implemented on the CLR can be implemented equally well on teh JVM.
But it's not "any language". It's a collection of languages that are nearly isomorphic with C#. In fact, there are currently many more languages, and more diverse languages, targetted to the JVM than there are to the .NET VM. See, for example, this list, which contains about 160.
The progress apparent in Java had mostly already been made by 1980, around the same time C++ was being created. The problems with C++ are a result of either ignorance or a deliberate decision to ignore those advances.
Just coincidental that Windows XP drops default Java support.
.NET is that you can write in whatever language you want to and use components from other languages in your .NET programs.
.NET is about one and only one thing. Network enabled apps to take the place of Java. The details are different, but the motivation and niche in the marketplace is the same. All the rest is just clever marketing from Redmond, as usual.
First, Java works fine in XP -- you just have to (automatically) download the VM or get it from Sun.
That is precisely what I said. XP drops default Java support.
Secondly, the real advantage of
Look, this is a load of bull and you should know it. Any language that maps onto C# cleanly is the reality. Similarly, there is nothing to prevent you from writing a java bytecode compiler for just about any language, so this is no different either. But simply, java is structured a lot like C or C++ without requiring its programmer to micro-manage memory. So, it is just not that hard to program in.
Also, it won't matter much whether developers like it. Microsoft will practically pay them to write C# apps instead of Java apps, and Microsoft has the bank to do it. Default Java support is gone, which effectively kills it for recreational computer users (client end support, anyway).
No,
This reminds me of something...
One of the early premises behind the Guile project was that all languages are essentially Scheme, modulo their different syntaxes. Guile was thus to become a Scheme interpreter with various syntax front ends on it to translate from Perl, Tcl, etc. Essentially achieving language independence in a unified runtime. The Guile team has largely abandoned these efforts, however, and concentrated on making Guile a practical workhorse Scheme for standalone use or embedded in a larger program.
I'm a big Scheme and Guile fan, and a part of me is disappointed... Scheme, being self-extensible, would make for a much more robust base upon which to construct a language-neutral runtime than the C# and VB-oriented CLR.
N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
Funny, I don't remember the x86 opcode for tail recursion. Or the 68K, SPARC, or PPC one. Would you care to remind me what it is? I guess since there isn't one, it's impossible to run Lisp on Windows, Mac, Sun, or IBM boxes.
Every computer language in existence is Turing-complete; they product code that runs on Turing machines. Some of these Turing machines may be faster or more efficient, but they're all equivalent.
-jon
Remember Amalek.
Microsoft is developing a version of the .NET runtime and classes for FreeBSD. I have talked with the lead engineer of this project over e-mail, and he said that it's due to be out in late Spring. I asked him about the Windows Forms stuff, and he said it will be based on Tk (could someone explain the implications of this?). He also said that there are going to be very few UNIX-specific classes, but they hope people will develop those on their own.
I wonder why Miscrosft is developing a FreeBSD implementation? Could it be because substantial portions of Hotmail still runs on FreeBSD? If I remember correctly, MS has yet to successfully port all of Hotmail over to Windows. That being the case, I'd hazard a guess that it's a REQUIREMENT for them to do the FreeBSD thing.
I could be wrong, though. Anyone?
$0.02 (CDN)
I was surprised how often the main article preached .NETs language neutrality. .NET is certainly not language neutral. Heck, Microsoft had to neuter their own primary development languages in order to get them into it.
.NET. I mean, you can't be making the wrong decision if it supports all languages equally, right?
I can understand why they would restrict their framework to a single inheritance, single dispatch in order to be easily used from more languages, but they forbid both multiple inheritance and multiple dispatch in the virtual machine.
I suspect we are seeing the "language-neutral" lie pushed so heavily right now in order to convince people to choose
Yes, Roger Sessions' article does make that point, and the guy running that JVM languages page is quite honorable to link to the criticism.
However, saying that the JVM isn't a suitable substrate because a lot of the language tools written on it are experimental is sort of a non sequitor.
- jon
Ganymede, a GPL'ed metadirectory for UNIX
I'm sure a lot of us slashdotters have queried what this dot-net thing was. Anyone with a Hotmail account was aquainted with the chintzy logo in the upper-right corner. eBay is starting to suggest a 'Passport login', which so far has been the most that em-cash has seemed to provide. I've been to trade shows, Microsoft (free hardware swag for false info? that's a steal!)and non-Microsoft pitches and antipitches, and no one has provided an answer.
;)
:)
At least, a good one.
This overview is great from a technical angle (the one me and most slashdotters usually have interest in) and decent from a more mundane perspective (the one you pose as in an em-cash or other sales-derived presentation
It's hazardous to your health as a hacker. It looks like a great way to encapsulate any data in a format which is sufficiently protected under the DMCA. (Yet another reason for that law- and the 99 senators who ayed the vote- to be burned at the stake.)
It's also bad for anyone on a non-MS platform; two of the languages are extremely MS-centric, Visual Basic and C-hash (something that should only be done right before you smoke it).
It's bad - all right, worse - for Java fiends. Bad enough Microsoft feels Java is the worst thing to happen to it since the Wicked Witch of the West was introduced to the business end of a water gone, now they're pulling out all the stops with the theoretically embraced and extended J-hash.
Right now, I just wish there was a way to stop those pricks at Microsoft.. besides a HERF bomb in Redmond, WA
I used to be someone else. Now I'm someone better.
Real life is underrated.
This is Slashdot... who's producing commercial code? ;-)
Seriously, though, your point about legitimacy is well-taken and something was cavalier about originally. IF you're eligible, it's a great deal. If you're not, then it's illegal software.
Anyone who wants to develop for .NET needs to shell out at least $1,079
The Software Development Kit (all necessary dll's, compilers, etc.) is free. There are also a handful of free IDE's.
There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
Look, we're splitting hairs here about what "drops default Java support" means. To say that it drops support implies that the OS no longer supports Java. It does as long as you have a VM installed (which, again, happens automatically the first time you hit an applet).
Secondly, it's hard to argue that Java was particularly relevent to "recreational computer users" anyway. Very few desktop apps that "recreational" users depend upon are written in Java and applets are less common than ever, so what's the big? Look at it another way -- you get to choose your VM, and isn't choice a Good Thing?
I'm not sure what's "bull" about the fact that you can use multiple languages in the .NET CLR. You CAN. Yes, they have to be .NET aware, but isn't that kind of obvious? It's still a good idea and, by all accounts, it's implemented well.
Sweet jumping savior, how the hell did we get here?
I managed to get two pages into ArsTechnica's explaination of what .NET is, what it isn't, and why it will be used before my brain rebelled: "Great fuck, if people would simply stop schlepping shit around in proprietary binary formats, data could be imported or exported in any damn application that wanted to write the translation".
This would be different if .NET was talking about eliminating the concept of an application (document-centric computing). Hell no, it's a bunch of pointy-head nerds and pointy-haired MBAs adding another goddamn layer of nerd-cruft to everything under creation.
".NET has three packets of information: the IL, the Metadata, and the fuck-this-where-can-i-find-nudie-pics"... please, for the love of Mike (God wouldn't have anything to do with this, it's purely From the Other Side), let's not stop everything and reinvent the wheel. We had the chance to carefully think things through and do it right, back in 1990. We missed the opportunity, we're now stuck with what we've got. Hasn't anybody learned anything from Be? You can't go home again.
If .NET makes any fucking difference before it gets replaced with the Next Big Thing, I'll eat my damned crusty underwear. So far, I could grep for .NET and replace it with "Java", and timewarp my pasty white ass to 1997 when it was going to Save Us from platform-specific languages and Microsoft at the same time. I cut my balls off and drank the poison koolaid, but the fucking UFO hasn't poked it's nose out from behind Hale-Bopp yet, the shy fucking bastard.
Spare me the fucking story. You wanna know what the next great savior is gonna be? Sumbitch, he's already here, and Tim-Berners Lee is his prophet. It's the Church of the Holy Hypertext, and it's vessel is Mozilla. The Web lit up the world because it's simple, it's easy to learn, and it's powerful... and, sin of all sins, it's accessible. Nerds and secretaries are building web pages, because it's easy to do. You think Sally Secretary is gonna benefit from .NET's programming language independance? It's wonky new IDE?
Pfft. Thicker and thicker layers of cruft will not make programming less hard. Thicker and thicker layers of cruft will not change the way we access information. Thicker and thicker layers of cruft will only slow down the spread of knowledge, because everybody's chasing down the next security bug in .fuckingNET instead of sharing what they know.
Potato chips are a by-yourself food.
No, I disagree.
.Net. Back in 1996 when Sun was promoting net development and JITs and the whole concept of a better programming language, Microsoft was still knee-deep in C++ and COM (or was it OLE then?). Six years later, Microsoft looks at the progress Sun has made, copies the most successful parts and bastardizes the rest (again).
Microsoft ripped off Sun the same way it ripped off Apple (who ripped off Xerox) when designing Windows. Yeah, you can say they helped develop the first apps for Mac, etc. etc. but the main idea was still Apple's who pushed the GUI concept and standardized the idea and then Microsoft came along six years later and launched Windows 3.0 based on those concepts developed at Apple.
Now Microsoft is doing the same with
Yes they added some good ideas - just like they did with Windows vs. Mac - but they still ripped off the general concepts and tech gains that were made from Java.
Sorry, a ripoff's a ripoff.
-Russ
Me
Or you can use Brainfuck.NET :)
.NET.)
(I didn't make this, but I find it highly amusing. Yes, Brainfuck is an actual language, and this is an actual package that makes it compile to
Can I use BrainFuck.Net to write webservices?
No. Well, probably not.
Does BrainFuck.Net use the controversial Microsoft Passport system for authentication?
No. The Brainfuck language has only 8 commands, and none of them are related to authenticating remote network users.
Win dain a lotica, en vai tu ri silota
Sad, but true. C# and VB.NET are so close to isomorphic that choosing between them is mostly a matter of whether you prefer symbolic or "natural language" syntax. Notice the number of long-standing VB developers who are trying to work out the relationship between the tool they've been using until version 6, and the new .NET version.
In fact, from the article itself:
I think the key thing is that .NET really only supports one paradigm properly: single-inheritance OO. C# fits that description, VB.NET has been moulded to match it, managed C++ is forced into it. You get the idea. I know it's theoretically possible to use other programming paradigms from this foundation, but surely the question is how well they are supported and how efficiently they can be done, not what could be done with infinite time and resources available. (Insert obligatory reference to the thread about functional languages on .NET the other day here.)
Consider an obvious example: if .NET is reasonably language-neutral, where is the support for generics? C++ has had templates for years, and they are one of its most powerful features. Java has a proposal that doesn't go as far as C++ templates, but does add parameterised type support to a fair degree. (Anyone know if that made it into 1.4 in the end, BTW?) In ML, functions are implicitly generic unless you specify otherwise. If .NET doesn't support such a fundamental feature, then it's immediately dropped an important aspect for all these languages.
Of course, how important the omissions are depends on your programming style. If you don't use generics, then this particular example is no loss to you. But it should be noted that the current trends in programming-language research are considerably ahead of single-inheritance "pure" OO designs. If .NET can't cope with multiple paradigms and newly developed idioms, it's not going to be leading edge for very long. The power of generic programming, functional programming and other completely separate idioms is being exploited in research already, and has been for some time. I don't think it will be long before they start hitting the maintsream, and then the limitations of .NET's architecture may be its undoing.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.