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.""
...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
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)
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.
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.
An interesting read was linked off of that Gnome guys discussion about .NET that was all rage for a bit.
.NET.
.NET or his training course?
Interestingly, I didn't know he (Bertrand Meyer) has created a training course on
Who knows which came first, his interest in
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
Except it doesn't.
The restrictions are imposed *by the CTS*.
If you want your class to be exposed to other classes it must conform to the CTS's rules.
If you merely want to make use of .NET's features -- compiling to IL, a nice class library, and so on -- you can use MI and case-sensitive identifiers and all that lovely stuff. Provided that your compiler supports it, of course. The C++ compiler does, and it works just like it does in native code. The CLR has no problem with multiple inheritance (it doesn't really *know* about it, but it doesn't really know a great deal about single inheritance, either, so that doesn't matter at all).
If you want to use those features but also expose them to other languages (thus, you need to conform to the CTS), you can wrap your non-compliant code in CTS-compliant code.
What you see as a major problem is seen as others by a major benefit. Some languages are more suited to some kinds of development than others. .NET levels the playing-field somewhat, by ensuring that they have equal access to a fairly rich class library -- it means that the *only* distinguishing feature is the language, rather than the choice one used to have to make, of "which language and library do I want to use?".
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.
- All in all I like it.
.Net stuff together with MS's patent on a "secure" computer that only runs DRM enforcing applications is all starting to come together. Perhaps they really are developing a .NET processor and a hardware public key hash checker making running non .NET stuff next to impossible. People will buy it because of the speed increase in applications.
- Will future processors be able to run the IL in some sort of protected mode?
- What scares me is all the public/private key signing. While this is good for preventing viruses, it makes hacking software (almost?) impossible. I am thinking of hacking a DVD player to play all DVDs from all regions (of course in DMCA free zones LOL), or just in general being able to make versions of a program work with an alternative library.
The more I think about it, this
Visual Studio - Enterprise Architect. Sounds like I need my PE.
erm..anyhow..
The past two days at work, I have been using that version of VS which comes with this month's MSDN subscription.
Most of the time I have been trying to figure out what happened to their data access...It used to be quite simple to hook up some data to a grid or control, but - jeez - I still haven't figured out how to do it simply, and I have built my own data provider controls before so I figure it shouldn't be this difficult.
As one poster mentioned, the compilation and execution of just a simple 'ello World program, with one form and button each took a couple seconds.
I tried out the WebForms for their new ASP.NET, no doubt this stems from experience in the last ASP, but it didn't seem intuitive to me. In fact, I could probably port existing ASP to PHP in a quicker fashion... On a side note, however, I attended a conference where they claimed to be running this on Apache instead of IIS.
I am not too impressed right now with this product... IMHO the best part about the product is the new VISIO. You can do database modeling/reverse engineering and it will generate the scripts, etc like ERWIN or Embarcadero.
I doubt we use this product for awhile at work, if ever.
help fill in hidden movie endings @ End of the Credits
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)
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
So... am I missing something, or is the whole idea of .NET to take away native software? Replace everything we currently run with a virtual machine? Yeah, write-once-run-anywhere _seems_ nice but am I the only person left on the planet who still wants software that's optimized and tuned to run on my hardware... not a generic VM?
I dunno. This just seems crazy to me. There has got to be a better way to do cross-platform software than what basically amounts to emulation. And in this case it makes even less sense... MS is naturally targeting this mostly at Windows, which is still pretty much a single-platform deal. So where's the benefit in using slow(er) bytecode as opposed to petal-to-the-metal, optimized native code? Argh...
Hi... I'm Larry... the shivering chipmunk... brrrrr!... I'm cold... I need a sweater...
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.
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.
And where are you getting this data?
I, in fact, also work at M$. Certainly, there are some people who are Ra-Ra, Microsoft Rules in all ways, etc. Perhaps more than another company, perhaps not (certainly I imagine many of the folks over at RedHat or at Sun proclaiming the absolute dominance of their products as well.)
However, a whole lot of folks at the company, I would claim to the majority (of devs anyway), are a little more agnostic as to these issues. Many of use for our own devices whatever technology makes the most sense (I use some Linux and some WinXP, some web sites I've written in PHP/MySql, some ASP.NET/SQL Server, depending on which technically made the most sense for the given purpose). Many of run Linux at home for some boxes, WinXip in others. Of course, at work for work projects you usually use the M$ solution (imagine telling people at RedHat that they had to use Outlook/Exchange in place of Linux servers- I'm not arguing that this would be a better solution, I'm just saying it would be out of the question).
Feel free to disagree with the company. I disagree with a big part of the way that the company does business. We talk, at work, about how certain MS business practices and technologies suck. I work there because I think some of the technology they do there is pretty cool. But certainly don't make generalizations about the employees, for which you obviously have little experience.
<rant>
There are so few people left who legimitately and objectively assess technology. The bias is ridiculous, reminiscent of the old Mac/PC flame wars. When you stretch that political bias from companies to generalizations about individuals (making them the "Other", a little psychological trick that allows us to feel ok about judging people), you've truly crossed the line.
</rant>
the one thing about that is, you lose language function if you are not using a .NET language.
.NET language like C#, and C#/VB are not suficiently complex to give you the power of C/C++ you pretty much are stuck to little programs.
C++ you lose mutiple inheritence, other languages I am sure have similer problems......yes it is cool for getting your stupid little app compiled to run anywhere, but since it restrics the complexity of your program when not using a
I am the Alpha and the Omega-3