dotnet 2.0 final

Graham said:
Many people assume .NET is microsofts attempt to clone java. Well, no, not true. See it turns out Microsoft started the design of .NET approximatly 15 years ago. Hang on, java has been around about 12 years... hmm..
So, if .NET came out 2 years ago, does that mean that Sun started the design of Java approximatly 25 years ago?

Face it: .NET is a Java clone, plain and simple. It might be the better one, redesigned and improved from the original. That probably depends on who you ask. Having to make sure all Windows/Office/Internet-related/Service-packs/whatever parts of the Windows installation on the client have to match the development machine is definitely not scoring points with me. But it's probably very good for Microsoft's bottom line.
 
DiGuru said:
So, if .NET came out 2 years ago, does that mean that Sun started the design of Java approximatly 25 years ago?

Face it: .NET is a Java clone, plain and simple. It might be the better one, redesigned and improved from the original. That probably depends on who you ask. Having to make sure all Windows/Office/Internet-related/Service-packs/whatever parts of the Windows installation on the client have to match the development machine is definitely not scoring points with me. But it's probably very good for Microsoft's bottom line.

microsoft started promoting .net in 2000, and as far as I remember it was avaliable in beta form to msdn subscribers a good deal earlier. So 6-7 years? bit more than 2.

I'm sure the design of .net was modified in responce to java, but not to the extent of making it a clone. As I said, sun started developing java approximatly the same time microsoft started developing .net. It's just .net has taken a longer time in development, which has payed off.

A simple way to compare is using archive.org. www.microsoft.com/net/ has existed since early 2000, java.sun.com has existed since late '97 (and makes mention of public release in october 97). Thats not really that bigger a difference when you think about it, just over 2 years. It would take *far* longer than 2 years to design and execute a platform as large and reliable as either java or .net. It is simply impossible that .net could be a clone of java. The scale of .NET as a platform would be comparable in scope to that of windows. nearly 15 years beginning design through to now.

One of my old lecturers was part of the C# design group (forget the name exactly), he would get quite irritated at the mention of .net being a java clone. When you look under the surface they are fundamentally very different. Sure they use a virtual machine, but thats nothing perticuarly special. using a VM has a huge number of benifits to compiled code, to relitivly few downsides, it's a logical choice. Thats pretty much where the similarities end (remember, I'm not talking about C# vs java, I'm talking about the .net vs java platform - C# in many ways was designed to be very similar to java).

Once you activly use both for a significant period of time you will start to see how different they are.
 
Last edited by a moderator:
DiGuru said:
Face it: .NET is a Java clone, plain and simple. It might be the better one, redesigned and improved from the original. That probably depends on who you ask.
It's a fact that MS went ahead with .Net when Sun would not let them introduce delegates into Java. And it is a fact that Java started in 1991, by the time it was called Oak. See here for details: http://ils.unc.edu/blaze/java/javahist.html
BUT .Net is a not clone of Java. It's much more complicated than this. First of all, Java itself heavily borrowed from Smalltalk. So you might called it a Smalltalk clone by your own definition. Then .Net is a plattform that consists of three parts: VM, Lanuages, Libraries. The VM is similar to the Java VM, which itself is similar to the Smalltalk VM, which had it's own predecessors. When it comes to the languages, only C# is similar to Java, which itself copies from C and C++ and Smalltask. So Java isn't really an original design here. Finally, there are some parts of the libraries which share similarities, especially some common things like strings. But there are other parts, which do not share any similarities. So I think it's fair to say that .Net did borrow from Java but it's really not a clone.

DiGuru said:
Having to make sure all Windows/Office/Internet-related/Service-packs/whatever parts of the Windows installation on the client have to match the development machine is definitely not scoring points with me. But it's probably very good for Microsoft's bottom line.
:?: That's so absolutely not true. You just need to the same .Net runtime version (1.0, 1.1, 2.0) on both computers, they don't even need to be the same service pack. For the rest of the assemblies, just mark them as Copy Local in your project (References -> Properties -> Copy Local) and you can do xcopy deployment. You never ever even need to put an assembly into the GAC.
 
N00b said:
:?: That's so absolutely not true. You just need to the same .Net runtime version (1.0, 1.1, 2.0) on both computers, they don't even need to be the same service pack. For the rest of the assemblies, just mark them as Copy Local in your project (References -> Properties -> Copy Local) and you can do xcopy deployment. You never ever even need to put an assembly into the GAC.
I can't find that anywhere. Does it matter that I'm using C#?

If, for example, I use a reference to ADO DB -> Jet4.0 (to do SQL against an Access database), does that mean that it will place those DLL's in my output dir and I don't need to have all that installed (in the correct version) on the target computer? Or the XML reference that requires XP SP2 and IE 6.x? That would be great!

Btw, what is the deal with J#? Is that C# that uses the Java-compatible libraries on .NET?
 
You have to seperate the concepts of the CLR, the .Net Framework and C#.

C# is largely a Java clone although in many ways it's a better designed language. But it's easy to do a better job when you design anything with Hindsight.

The .Net Framework has been in development for forever and is really comparable to the Java Libraries although IMO with a more consistent design. Other than being utterly enormous in terms of entrypoints what I've used of it is well designed, the only real exception seems to be the managed D3D libraries where they seem to keep changing the names of things between releases.

The CLR is the virtual machine that .Net languages (yes there are many of them) run on, the big improvement in 2.0 is better support for functional type languages. It makes implementing efficient versions of languages like ML easier.
 
DiGuru said:
I can't find that anywhere. Does it matter that I'm using C#?
With Visual Studio, open the solution or project. In the Solution Explorer, open the references, right-click on the assembly, open properties, set Copy Local to true.
Note: It's not necessary to do this for the System assemblies, since they are part of the runtime anyway. But for third-party assemblies that install themselves into the GAC it makes xcopy deployment possible.
DiGuru said:
If, for example, I use a reference to ADO DB -> Jet4.0 (to do SQL against an Access database), does that mean that it will place those DLL's in my output dir and I don't need to have all that installed (in the correct version) on the target computer? Or the XML reference that requires XP SP2 and IE 6.x? That would be great!
Your problem is that you mix native and .Net components. Why don't you use ADO.NET instead of ADO DB? As for the XML stuff, why don't you use the classes from the System.XML namespace? They work on all plattforms where the runtime is installed.
DiGuru said:
Btw, what is the deal with J#? Is that C# that uses the Java-compatible libraries on .NET?
J# is the successor to VisualJ, which was basically Microsofts Java 1.1 Development environment. Back then they added a few things here and there. J# will let you run your old VisualJ applications on the CLR, which litte if any changes.

Let me tell you something. I really had my share of Java, I wrote several megabytes of source code for it. I started using it right when version 1.0 came out. I suffered through the numerous iterations of JDK 1.1, which was one of the worst pieces of software I ever encountered. (I was using VisualJ and Microsoft Java VM that time because it really was the only stable development environment at that time, Microsoft Java was much less buggy and they had a compiler that produced fast and correct code unlike Sun's which, from time to time, would not compile syntacially correct code and even produce incorrect code). Java 2 aka JDK 1.2 was a huge step ahead, but it was so buggy that you really could not use it until version 1.2.2. There are 10 bug-fix versions of Java 1.1, 17 for Java 1.2, 15 for Java 1.3, 9 for Java 1.4 and 4 for Java 5. Some of these versions fix very serious errors and security vulnerabilities. Now compare that to the number of .Net Serivce Packs. Notice the difference? And don't get me started on documentation. In the early versions of Java some of the documentation was so bad, I just started to skip the docs and looked straight at the source code. And finally there is no development environment for Java that comes close to Visual Studio, especially VS 2005.
I'm not saying that all is wonderful in .Net land, because it isn't. There are some things about .Net that I don't like. ASP.NET for instance can be a real pain in the ass. But still .Net is a much more mature, stable and productive plattform than Java is.
 
N00b said:
There are some things about .Net that I don't like. ASP.NET for instance can be a real pain in the ass.
Comapred to what? I ask out of curiosity whether you are comparing ASP .NET to other 'web' languages (PHP, Pearl, Asp 'Classic', CGI) or whether you are comparing it to writing (Windows) applications? I myself work primarily as a "web developer" and I have to say ASP .NET is by far the best development environment for the Web I've used. For instance, compare how simple it is to create a sortable, pageable, updateable table of data from a data source (which could be a database, XML or even an Object) in ASP .NET. To do the same in other languages could literaly take hundreds of times more code.
 
Diplo said:
Comapred to what? I ask out of curiosity whether you are comparing ASP .NET to other 'web' languages (PHP, Pearl, Asp 'Classic', CGI) or whether you are comparing it to writing (Windows) applications? I myself work primarily as a "web developer" and I have to say ASP .NET is by far the best development environment for the Web I've used. For instance, compare how simple it is to create a sortable, pageable, updateable table of data from a data source (which could be a database, XML or even an Object) in ASP .NET. To do the same in other languages could literaly take hundreds of times more code.
I still owe you an answer. I'm not saying that PHP, Perl or any other 'Web' lanuage is neccessarily better. ASP.NET is a good, solid system, but it does have its flaws and they make my life harder than it should be. (Please note that I'm mostly talking about .NET 1.1, some of the things I complain about may be fixed in .NET 2.0).
First there is documentation. I think ASP.NET documenation has worse documentation compared to the rest of .NET. Without Reflector I would be completely lost from time to time.
Then I don't like the default programming model of ASP.NET. It encourages developers to use postbacks all the time, even if unneccesary or inappropriate.
The API is sometimes inconsistent and/or confusing and/or buggy (try to remove an attribute from a control.).
You have to rebuild your whole control hierarchy to retrieve postback values in your control. This can be a problem when using dynamically created controls and/or controls creation is costly.
The compile/deploy/debug cycle is very, very slow if you have a large project (my current project is over 8 MB of C# sources plus several external libraries).
See what I mean?
 
Graham said:
The quality of the documentation in the .net class library I feel is far superior to that of java. Also .net documentation integrates with IDE's better.
For a comparison...

the String class:

java:
http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html

.NET:
http://msdn2.microsoft.com/en-us/library/System.String
and
http://msdn2.microsoft.com/en-us/library/system.string_members

compare something simple, for example the String(Char[]) constructors in each... There isn't really any contest, 2 sentences in java, about 3 pages in msdn...

I don't want to get into the rest of the java vs. .net-discussion (Both have their merits and weaknesses IMO), but if you chose he String(char[]) example on purpose, it's not a very good choice - quantity != quality:

The examples in the msdn doc are nice, but otherwise the multiple pages (much of which is taken by the different syntax..es(?) for the .net languages) don't offer me any substantial information advantage compared to the few sentences of the Java constructor description. In fact, the javadoc provides more useful information for me, in that it informs me that the array contents are copied.
And that is in line with my previous experience with MS language/API docs: they surely are quite good, but quite often too bloated for my tastes, and in my experience, they have more 'holes' than the Java-API docs, i.e. some specific information I would need for a certain method or class is missing. (But that last thing might just be me...:) )
 
N00b said:
I still owe you an answer. I'm not saying that PHP, Perl or any other 'Web' lanuage is neccessarily better. ASP.NET is a good, solid system, but it does have its flaws and they make my life harder than it should be.
Yeah, I can agree to that - but I would still say that it's a damned site easier than some other scripting languages.
First there is documentation. I think ASP.NET documenation has worse documentation compared to the rest of .NET. Without Reflector I would be completely lost from time to time.
The documentation has definitely been improved in .NET 2.0 The built in Windows Help file you get with 2.0 SDK (and Visual Studio products) is much better and covers everything from class references to "How do I...". It even searches online sites now for examples as well as forums.
Then I don't like the default programming model of ASP.NET. It encourages developers to use postbacks all the time, even if unneccesary or inappropriate.
That I can agree on. I guess one of the aims behind ASP.NET was to make it function very similairly to Windows forms but, of course, most Windows forms don't have to make round-trip to a server when you call an event etc. However, things like Atlas .NET (AJAX meets .NET) will eventually help. In the end, though, it's up to the developer to realise what is happening behind the scenes, as ASP.NET does abstract this a lot. I always say it's good for anyone to do some real CGI in C to remind themselves exactly what happens :)

You have to rebuild your whole control hierarchy to retrieve postback values in your control. This can be a problem when using dynamically created controls and/or controls creation is costly.
Yes, dynamic controls can be a pain and sometimes nested controls inexplicably become hard to reference. However, for the most part they work very well and do save a lot of time compared to using standard HTML and rolling your own session state stuff.

The compile/deploy/debug cycle is very, very slow if you have a large project (my current project is over 8 MB of C# sources plus several external libraries).
Yeah, I can imagine :) However, the efficiency you gain via a compiled lanaguage rather than a purely interpreted one (like PHP or PERL) can be enormous. It's also handy for tracking down bugs before run-time. Luckily .NET 2.0 improves things in this regard too. Other things like CodeBehind model are much improved. I have to say M$ have solved a lot of the annoyances of 1.1 (whilst introducing a few new ones ;) )
 
Does .NET 2.0 has a decent way to reference controls by name when you build them in the GUI? I always end up generating them all in code and dropping them in a container like an array or such myself. I really don't like all those switch statements throughout my code.

I would really like that.

But I guess I'm spoiled by Delphi. I do try to learn the .NET paradigm, though. But it's not easy. The languages itself are easy. C# is indeed a very nice language, although I would really want a more direct way to access library functions without having to go through a (static) class. And the API is very nice in some respects. But I really like the very direct Delphi way much more, where you can even browse the source code (one click away) for any part of the interface and API. I like the control and insight it gives me. You can REALLY see how it works.

And tracing bugs is a lot harder as well in .NET.

Ah, well. I'll get used to it or make more work of being able to use Delphi, I guess.
 
Last edited by a moderator:
Btw.

The new breed of PLC's from Siemens uses Windows XP as well, so much so, that we have to install virus scanners and the likes on them as well. The controllers that handle the robots and other machinery in a factory...

While I *MIGHT* try to install the .NET framework on one of those, I really, really rather write a program in Delphi and just copy the executable over. Much safer, IMO.


Edit: and I'm waiting with interest when the people working those machines figure out they can browse the internet with IE while working.
 
Last edited by a moderator:
Back
Top