Click to See Complete Forum and Search --> : C# versus Java
July 6th, 2000, 10:41 AM
So what will c# offer more than Java? It seems to be offering less : it's just a language [no complete platform like Java], there's no explicit commitment to cross platform development, it's not open source, ... ? Don't get me wrong, I'm not a Java lover (I'm a C++ developer), but it seems like Microsoft is (again) repackaging someone else's idea....
Akademos
July 6th, 2000, 10:46 AM
c# seems to build up of stolen java-ideas. I think it is meant to be a weapon against Sun.
July 6th, 2000, 10:53 AM
Don't forget it is meant to ease the building COM objects. By definition it is not cross platform.
July 6th, 2000, 05:00 PM
CrossPlatform -> VM -> Sacrifice on Speed, etc
Curtis
July 6th, 2000, 07:32 PM
I'd REALLY like to see a cross-platform language. it would be really nice if someone made a C# compiler in *nix, and maybe mac... which means implementing COM+ on these platforms. BUT, IMHO.. a cross-platform compiler would be great.. but it'd have to include a cross-platform gui library, etc. C++ cross-platform libraries just don't cut the bacon.. (www.zinc.com, etc)
Many might say to just build a better C++ cross-platform library. I say no, because C# has a great built-in event system, and solid guidelines on how things should be done. C++ is wide open, which makes it difficult.
Anyway.
gap
July 6th, 2000, 08:50 PM
When you read the announcment, it is clear that MS want's C# to be a language for client/server and dynamic web programming, i.e. the same fields in which Java starts to play an increasing role. After beeing unable to kill Java by introducing proprietary elements, MS now tries the same again by introducing a new language which is closely tied to the Windows platform.
I can't see any innovations in C#, just another attempt to make Windows the one and only OS in the world (not only on the desktop, but also on the server) :-(
sqrly
July 7th, 2000, 12:58 PM
Repacking someone else's idea (legally) and making it commercially viable is bad?
Seems like it is something that Bill has done very well. Are you using a mac to read this?
sqrly
July 7th, 2000, 01:03 PM
This isn't a tea party. Everything MS (and every other publicly traded company) does is to make money. Anything else would, by law, be illegal as not in the best interests of the stockholders.
Again, is that bad? I have nothing against Sun, I owns Sun stock and just got back from a meeting with them regarding Jini. I just believe this is perfectly okay.....
weaver
July 7th, 2000, 01:10 PM
You want to see a cross-platform language? That is what Java was designed for.
-------------------------------------------
weaver
icq# 64665116
Please rate this post.
http://weaver.x7.htmlplanet.com
Curtis
July 7th, 2000, 01:37 PM
Sorry, i didn't clarify.. i DID say i want a cross platform LANGUAGE. Java isn't a cross platform language. Java produces a cross-platform EXECUTABLE, which is then interpreted when executed via the VM. I would REALLY like to see a cross-platform LANGUAGE (including GUI library), which would allow you to compile a PLATFORM-SPECIFIC executable for linux, windows, etc.
Thanks,
Curtis
ALM
July 7th, 2000, 03:19 PM
A cross platform language? Hey, any language is cross-platform. If I copy my VB files to a Linux box now they're technically on another platform, so doesn't that make the language in those files "cross-platform"? :-)
Seriously, I guess you want to be able to write a program in a language and then compile it on different platforms without changing your code; the end-result being a platform-specific executable. Sort of like writing a program in ANSI-C. In theory such a program should be compilable under all platforms with a C compiler.
I think the C and C++ languages are close to that today. The problem is that they don't come with a complete library (for threads, GUI, networking, etc.). So a lot of companies have attempted to provide such libraries. Microsoft has it's MFC library which companies like MainWin and Bristol have made available on various UNIX platforms. RogueWave has a lot of portable C++ libraries that run on Windows and UNIX. And there are others providing complete cross-platform libraries.
Java is another language which has come close to that "language + complete library" offering. I believe that today there are compilers that will produce platform-specific executables from Java files. I'm not talking about .class files that are then executed via the VM, but actual executables that can only run on the platform on which they were compiled.
If you think about it though, what you're asking is close to impossible, especially given the differences in all the platforms out there. I mean, can you imagine having to keep track of all the differences in the platforms and the different OS releases? What if a OS, like Windows 2010 comes out with a feature not available in Linux, or viceversa? How do you handle that?
What'd be really nice is if all operating systems would converge on the set of features they offered. That would be incredible. Then it'd be so much easier for language and library writers to create cross-plaform products.
Regards,
Alvaro
July 10th, 2000, 04:42 AM
To me as a developer, commercial repackiging without adding something new, and, at the same time attacking a clean cross platform development environment (Java), is bad, yes. I believe in constructive competition, but you can hardly call Microsoft's strategies constructive ....
whbloodworth
July 10th, 2000, 10:03 PM
To me as a developer, commercial repackiging without adding something new, and, at the same time attacking a clean cross platform development environment (Java), is bad, yes.
Read the C# documentation and you'll know it is far from Java. It does share similar properties with Java however. And Java is only cross-platform independent on machines that have a JVM.
I believe in constructive competition, but you can hardly call Microsoft's strategies constructive...
Seems to be working for them. Seems to be making a lot of software developers a lot of money. Survival of the fittest! And MS is the fittest.
- W. Bloodworth
Great Success REQUIRES Great Effort!
whbloodworth
July 10th, 2000, 10:22 PM
When you read the announcment, it is clear that MS want's C# to be a language for client/server and dynamic web programming, i.e. the same fields in which Java starts to play an increasing role.
You made an interesting point and mentioned the word "server" in that ever-so-drawn-out sentence. C# is more suited to server-side programming because it is a compiled language.
After beeing unable to kill Java by introducing proprietary elements, MS now tries the same again by introducing a new language which is closely tied to the Windows platform.
What would you expect them to tie it to? Get the chip off your shoulder. If you owned a company, you wouldn't start developing products that ran on your competitors platform without a really good reason would you? Sun pissed and moaned because MS wanted to add extensions to Java for their platform... and they won. So let's move on.
I can't see any innovations...
Well stated. But to be fair, here's the rest of your quote:
...in C#, just another attempt to make Windows the one and only OS in the world (not only on the desktop, but also on the server)
Just read the documentation and you'll see the inovations in the proposed language. If you don't, it's probably because you don't want to.
- W. Bloodworth
Great Success REQUIRES Great Effort!
July 19th, 2000, 02:36 PM
Why does everyone assume that because ms announces a new language that they are ripping off java? I'll be the first to come out and say that Java is not that great. Show me one full enterprise application written in java and maybe I'll change my mind...From what I saw at the pdc, MS has written literally millions of lines of C# code for the .NET platform and it appears to be extremely powerful. The only thing I have ever seen from Java is those stupid little applets with maybe a **** cat running across the screen or something. Maybe I didn't look hard enough, but I never found any tools that could enable me to use java for a large scale project.
After reading the "Presenting C#" book and the language reference, I realize C# is a very elegant and powerful language that is only slightly similar to Java. WIth the new Winforms system library, writing big apps will be easier that ever...I have seen it first hand.
July 20th, 2000, 06:16 AM
Well, if you don't even see the connection between Microsoft's Java liasions and C#, I guess you're way out of range for an objective discussion.
>>The only thing I have ever seen from Java is those stupid little applets with >>maybe a **** cat running across the screen or something
I know several big scale projects written in Java here in Europe (healthcare, banking apps, etc..). You can get a good idea of how much Java development is currently been done, by doing a Jobserve search for "Java" (www.jobserve.com). Says 8261 Java positions (compare with e.g. 8383 C++ positions). I'd say that's a lot of 'cats running accross the screen' applets that are being made right
>> Maybe I didn't look hard
I guess so
cmocanu
July 20th, 2000, 08:33 AM
How can you be so limited my good friend. I think that you should do a bit more research before you make such amateur afirmations.
>The only thing I have ever seen from Java is those stupid little applets with
In what distant corner of the universe are you living ?
Just look at the Internet.Why are all the major sites using Java technology (servlets & JSP just to name some of them!). Does
this also fall in the "stupid little applets" category. Does Amazon.com mean anything to you ? Do you know what platform they are using.
Do you know what the Daimler-Benz concern are using or is this no "full enterprise" enough for you ?
July 20th, 2000, 05:13 PM
Hi,
Why discuss legal issues? Compare technology. I personaly liked what MS did to extend java (delegates, wfc). Their framework is easy to use. Why spend lots of time writing simple window? So, I think c# is the reply on sun's legal issues: if you don't want our (MS's) extension to java - get our new language. That looks more honest to me, than violating sun's specifications.
July 21st, 2000, 02:40 PM
what about pointers in c#, refer with c++ please?
(Replies at kailash_s@usa.net or ocean@sguild.com please);
July 23rd, 2000, 05:05 PM
If you know Java, and look at the specification of c# you have to laugh. They claim it is not an answer to Java but they basically copied all of Java. It runs on a VM. main and all code now goes in a class like Java. All objects derive from a base class except for primitives like float,int,etc. They even added garbage collection to make pointers less complicated.
Except like C++ did with C they remained compatable with the previous language. Most people know that this weakens the language, however makes it more popular to switch to. The fact that they allow unsafe code blocks anywhere completly defeates the purpose of safe, easy to write code. To me this project looks not only rushed but has nothing innovative. About the versioning they added, compilers like Visual Age have long handled this, and it is better if the compiler handles it then the code.
And C# is cross-platform. Between NT and 98 that is. Don't buy any BS that it will run on anything else.
I don't dislike new languages, but I think they must be innovative. My biggest complaint is why didn't M$ beef up their baby VB or even ActiveX? Because they are going to use the CLUT to make C# run better then Java hence hurting Java. My question would be I see a lot of C+ programmers who don't know Java saying "It looks cool I think I'll learn it", but to someone who already knows Java what are the advantages? I only see disadvantages.
Also
"
You made an interesting point and mentioned the word "server" in that ever-so-drawn-out sentence. C# is more suited to server-side programming because it is a compiled language. "
Java is compiled and is more suited to server-side programming. Networking power aside, Java servlets can run on any Server OS while with c# you will be forced to take a all M$ route, probly a NT server running SQL server.
Erik
ErikNilson@yahoo.com
whbloodworth
July 23rd, 2000, 05:17 PM
Erik,
Java is compiled and is more suited to server-side programming. Networking power aside, Java servlets can run on any Server OS while with c# you will be forced to take a all M$ route, probly a NT server running SQL server.
That statement alone nullfifies all of your previous opinions by its shere ingorance. Don't confuse fact with opinion; Opinions can be supported by facts but facts cannot be supported by opinions. Once you've compiled the Java source, it is no longer portable thereby defeating the entire purpose of its existence (or at least one major one).
You also suggest to "beef up" ActiveX. What suggestions do you have?
You also stated that C# is bound to one O/S. What basis are you boldly stating this fact upon? Once again, there is no documentation supporting this claim.
- William Bloodworth
Great Success REQUIRES Great Effort!
July 24th, 2000, 10:47 AM
Visual C++ 6.0 Takes Developer Productivity and Power to New Level
REDMOND, Wash. - June 29, 1998 -- Microsoft Corp. today announced version 6.0 of the Microsoft visual development system…
C# is just the tip of the iceberg. It rests upon a foundation that changes the way Windows programs are written. It is goodbye to IDL and see you later memory leaks! Now, its hello garbage collection, come on down language interop. Got e-commerce? How about an entire framework for web development? Copy ASP will you? Here is ASP+. Had enough yet? Blam here’s Security! Java had a little library, bite me! Try the entire API from one of the most successful platforms in existence at your disposal. Where do you want to go today? Any client, any device, anywhere there is only one condition, you are going to want the Windows platform in your back corner running your enterprise. Don’t worry, its ok. I’ll understand if you don’t get it. Can’t blame a person for being slow or blind. Your just living a 16-bit dream when your worse 32-bit nightmare woke you up and said, “Back to reality, *****!” Praise on Java, Praise on Linux… What? Do you really think Microsoft has been sitting on their thumbs since the last release of their development products?
July 24th, 2000, 04:21 PM
Can you make your opinion more clear and detailed?
July 24th, 2000, 06:12 PM
Java IS compiled down to bytecode which is still portable to any machine with a Java VM, of which there are many. c# will run the same way. However, I seriously doubt M$ will bother making c# VM's that run under Linux,Mac,etc. 3rd parties could, but IMO c# will be generally be too tied to different Windows API's that porting will be tough or impossible. And there's already Java.
My suggestions to beef up their existing products are because VB is considered weak when it comes to big and complicated problems. I don't use VB, but they look to be doing good on the server side with ASP. But there is an increasing need for a client program that can execute in a browser to talk to the server(like a applet). This is where I see VB lacking. I have heard you can do this with ActiveX but it is unsafe and probably a pain in the butt so nobody does.
Anyway I have heard a (possibly)good thing about c#. All the new Visual Studio products will be compiled to the same bytecode making it easy to mix VB,C++,c#,(possibly Java), in a program. This also forces them to give VB polymorphism and inheiratence and some other things it has been lacking for many years. Another plus is there will probably be a kick-*** compiler for c# that is VB/Visual C++ style.
Also about that post above that says
"Try the entire API from one of the most successful platforms in existence at your disposal"
I will praise M$'s software products like Windows and Visual C++, but I shudder to have to work with their countless API's. If you've only worked with Windows API's, try Java to see that life can be much more fun.
unsafe
{
#define C#
}
Erik
ErikNilson@yahoo.com
rsekharj
July 26th, 2000, 01:49 AM
As good as it seems that C# has removed or handled itself the concept of pointers and memory allocation it is still going to support pointers. In the white paper that was published it was clearly mentioned that the programmer would still be able to use pointers if he would declare his class unsafe.
July 26th, 2000, 10:17 PM
>> Except like C++ did with C they remained compatable with the previous
>> language. Most people know that this weakens the language, however makes
>> it more popular to switch to.
Not true! C++ supports multiple implementation inheritance and C# does not. C# support inheriting implementation once plus 0 or more interfaces (abstract classes). C# does not support global functions, variables or constant. There is no doubt about it. C# was designed from the ground up. There are many similarities to the language part of Java. As for the C/C++ aspect, they borrowed most if not all of the control flow, statement syntax, keywords from C/C++.
>> And C# is cross-platform. Between NT and 98 that is.
At the moment I definitely agree with you. In fact, as far as I can tell it only runs on Windows 2000. However, I don't think that it would be that hard to develop a C# compiler on another OS. Remember C# is a language and is not inextricably tied to the .NET class libraries, which is a separate thing. Of course, you could also argue that the language isn't really that useful without the rich class libraries. Would Java "the language" be that useful to you if you didn't have access to the Java class libraries?
>> My biggest complaint is why didn't M$ beef up their baby VB or even ActiveX?
They are beefing up VB. It gets inheritance, true structured exception handling via try/catch, and multi-threading support. As far as ActiveX goes, the new .NET represents a new way to write reusable components, including GUI components that is vastly simpler compared to ActiveX controls. Furthermore, the CLR sports a security subsystem (much like the Java sandbox) that can prevent downloadable components from wreaking havoc on the computer. Also for those that use VBScript in ASP pages, in the future you will be able to use VB or C# and it will get JIT'd to native code. Performance should be much better compared to interpreted VBScript.
weaver
July 28th, 2000, 10:27 AM
Just take a look at Sybase's products. They are developed with Java.
-------------------------------------------
weaver
icq# 64665116
Please rate this post.
http://weaver.x7.htmlplanet.com
weaver
July 28th, 2000, 10:38 AM
>>>> Except like C++ did with C they remained compatable with the previous
>>>> language. Most people know that this weakens the language, however makes
>>>> it more popular to switch to.
>> Not true! C++ supports multiple implementation inheritance and C# does not. C# support
>>inheriting implementation once plus 0 or more interfaces (abstract classes). C# does not
>>support global functions, variables or constant. There is no doubt about it. C# was designed
>>from the ground up. There are many similarities to the language part of Java. As for the C/C++
>>aspect, they borrowed most if not all of the control flow, statement syntax, keywords from
>>C/C++.
Ha! C# supports single (not-multiple) inheritence and also interfaces. Gee, where have I seen that before. Maybe it would be from Java. Everything I've seen on C# is that it is practically identical to Java, except for the fact that it can only run on Windows based Operating Systems. Try a unix or linux box, yeah right.
-------------------------------------------
weaver
icq# 64665116
Please rate this post.
http://weaver.x7.htmlplanet.com
Jerome Bonnet
September 27th, 2000, 01:26 PM
>>Java IS compiled down to bytecode which is still portable to any machine with a Java VM, of which there are many. c# will run the same way.
As far as I understand, programs written in C# DON'T run in a virtual machine.
The C# compiler produces IL (pseudo-machine code), which is then compiled a second time into native code when the program is launched.
Am I wrong ?
dk1
September 27th, 2000, 05:25 PM
You're absolutely right. IL is only there for the interop capability. There are lot of misinformation out there that confuses many people. Way I see it, all languages get their ideas somewhere else, and improve upon it. Java borrowed its ideas from C,C++, Smalltalk, Basic, etc. And C# borrowed its ideas from C, C++, Smalltalk, Basic, Java, etc. True, C# has the features that Java has, but it also has more. The truth is that Java took its ideas from elsewhere and improved on it, and C# took its ideas from elsewhere and improved on it. And don't forget what Java aims to achieve is very different from what C# aims to achieve. Java is platform independent language, C# is not and is not intended to be platform independent language. C# is more like the language for .NET framework. .NET framework at least in any reasonable foreseeable future will only be on MS Platform. The bottom line is this, there will still be Java programmers and C++ Programmers, but now there will be C# programmers as well. If you want to do platform independent coding, you still need Java, if you write drivers or performance sensitive programming, you still need C++, if you want to develop .NET Application, you use C# or VB.
Here are some difference between Java and C# that I can see:
1. C# has more primitive data types.
Also, in Java the primitive data types are in a separate from the oject based types. In C#, primitive types are stack-allocated as in Java, but they are also considered to derived from the ultimate base class, object. This means that the primitive types can have member functions defined and called on them.
For example:
int i = 4;
string name = 4.ToString();
2. There are no pointers in C# and types can be
defined as value type or reference type and even be converted from value to reference at run time via boxing/unboxing.
3. C# has readonly type for constants where their values can't be determined at compile time.
4. C# has versioning support, which means method overloading is done by name rather than by signature, which means addition of classes in a base class will not change program behavior.
5. C# has propertybag (VB) feature.
6. C# has delegates and events; which basically makes class to class messaging hella easier. Compared to pointer based messaging of C++ and interface base messaging in Java
7. C# has attributes; attributes are annotation written to convey declarative data from the programmer to other code. Here's the sweet part, the other code can be runtime environment, a designer, a code analysis tool, or some other custom tool.
and so on.
So, as you can see, C# borrowed many ideas from other languages and improved on it; Java borrowed many ideas from other languages and improved on it; But C# is not Java. The fact that C# has many features that Java has just proves that Java is a very well designed language. But, C# and Java have very important differences in them.
Hope this helps,
Dan Kim
tapir
September 29th, 2000, 03:27 AM
(windows) delphi = (linux) kylix
not really a universal language as a whole..but i think the technology should be sufficient
to assist in developing cross-platform application between the
two os. I think it is 'write once compile anywhere' ( between the two that is..)
program written for windows should compile just fine under linux.
(un)fortunately is not microsoft's..:)
both belong's to good old Borland..
in fact Delphi and C$ ..opss.. sorry C# originates from the same architect..Andres Harls..( i forgot how to spell his name :) )
if you prefer C++, considerable work has been done on wxWindows
sort of a framework for cross platform developement. I think you should
be able to get PLATFORM-SPECIFIC executable from these tools.
btw, kylix is due to be release sometimes this year. It is not commercially available yet.
-tapir-
Frank Moore
September 29th, 2000, 06:04 PM
I think that the fact that M$ is willing to submit "their" language to the ECMA while Sun was unwilling speaks worlds of the future of the language. If C++ would have stayed in Bell labs and not been sent to ANSI, i don't think many of us would be using it today.
Just a thought,
Frank Moore
MLS Computer Services
The Direct Marketing Computer Service Specialists
Variant
September 30th, 2000, 02:33 AM
I don't think Microsoft initial goal is cross platform development. Maybe in the future, but I think that right now they are trying to fill the large gaps in performance and ease of use that exist between C++ and Visual Basic. Currently they are targeting only the Windows platform. In the perfect world, I think that every business would want the performance exhibited by C++ components coupled with the rapid development nature of Visual Basic. C# blends a lot of both and I think this will make it a very attractive option for building middle tier components for Windows based applications.
Most companies that implement Java based solutions do so because they must operate in a heterogeneous environment and they don't want to tie their new applications to a single platform. At this point C# is not even a contender in this market.
VaRianT
sbmuscle
October 3rd, 2000, 06:53 PM
Very good... I could only wish I had a mac or even better yet a SUN !!! (more to follow... )
sbmuscle
October 3rd, 2000, 06:56 PM
Cross platform => Good Design => Good Coding Practicies => Ease of Maintenance
sbmuscle
October 3rd, 2000, 07:24 PM
But this is not about good business decisions BUT rather about good technical choices. We (the geeks) should be united in trying to bring all platforms together so that any app can run anywhere. Why doesnt anyone else think that is a neat concept? Don't you like the way Browsers work? Where do you think the internet would be if we didnt have standard protocols??? (I'll tell you -- some of you would be running windows with Novell, others running Unix and TCP/IP).
Why is it so difficult for people to see that standards are a "good thing"? Microsoft's definition of a standard is something that someone decided in a meeting yesterday. And its only good until someone else holds another meeting on the same standard.
Aren't you tired of writing applications that are only good until Microsoft changes either the OS or the interfaces? Why do you think Windows runs so slow? Can you say compatibility issues?
Ok. I will try not to flame too much more about MS. I just ask that everyone wake up and smell the coffee!
Liquidrage
October 14th, 2000, 08:33 PM
Microsoft ripped off Java just because Sun made an OOP language?
I guess since Sun makes a language that tries to force OOP techniques and tries to help coders with some of the more confusing and annoying aspects of development that no one can do something similiar without ripping off Sun?
C# seems to be (for us web developers that have to touch a Windows box) a rather nice language for our COM objects. Possibly a nice language for ASP+. And for anyone a nice language for application development.
Now tell me when I would have EVER used Java for any of the above?
C# is a easier to use version of C++ IMO. And thats it. I would never use Java to write anything for a Windows Box. Never ever ever. Like someone else mentioned it appears CSharp bridges that gap between C++ and VB.
akagan
October 18th, 2000, 11:35 AM
Checked they stock price lately (LOL)
Ghannodahn
November 14th, 2000, 12:56 PM
There are differences between C# and Java. First off, Java is a language and an environment. C# is a language, and nothing more. If you want to compare the totality of Java to C#, then you're comparing an apple orchard with a bag of seeds. That's a pretty piss-poor metaphor, but I'm tired.
C# uses a delegate event model. This is a major difference between them and Java. All .NET assemblies are self-describing (whatever language they are written in), and are intrinsically component-based.
Java fulfills an important purpose in software development. I don't use it, and I'm not particularly crazy about their approach in some cases, but there is major software written on the Java platform and in the Java language, and as much as a fan of MS as I am, I would not for a moment say that it sucks.
C# is a language, and that's all. .NET vs. Java is an interesting topic to debate, and really is a far more apropos comparison.
Ghannodahn Kirrel
Librarian, The Infinity Citadel
http://www.icitadel.com
Ghannodahn
November 14th, 2000, 01:08 PM
I am at a loss here. Why has this debate between C# and Java turned into a cross-platform vs. discussion? The .NET platform, like Java, will run on any Operating System that supports the respective Virtual Machine. Do people think it's coincidence that MS has a) formed a 3rd party company with Apple to port all MS API's over to Macintosh, and b) invested $135 million in Corel, a company that markets a Linux operating system?
The difference between the .NET VM and Java's is that in .NET, every single assembly only is compiled the first time it is run. After that, the machine code is saved and executed every time. From my understanding in Java (without a 3rd party tool), only Applets and JSP's have this capability.
If you like MS, then understand that MS recognizes the value in supporting other Operating Systems. If you hate MS and consider them spawn of hell, then you should also understand this aspect. Know thine enemy.
Ghannodahn Kirrel
Librarian, The Infinity Citadel
http://www.icitadel.com
Ghannodahn
November 14th, 2000, 01:38 PM
Woah!! Java uses that inheritance model, so MS must be ripping them off? Delphi uses it too. So do several other languages. Java and C# both use a . to separate an object from a property... come to think of it, so does VB.
Just because something makes sense from one point of view doesn't make it true.
Java and C# have some similarities as languages. Delphi and C# have some similarities. Java, C# and C++ have some similarities. Innovation and improvement is accomplished by building on past accomplishments, not from reinventing the wheel. It's called evolution, and it's the way the world works.
Ghannodahn Kirrel
Librarian, The Infinity Citadel
http://www.icitadel.com
AmitaK
November 16th, 2000, 01:19 AM
Platform independence wont be important in future, people will select only those platforms which support .NET!
That's it!
Mike Maddux
November 16th, 2000, 10:47 AM
I think it's a little misleading to say that C# is only a language and nothing more. I don't believe C# could run or do anything useful without .NET. Also, C# was designed to run on .NET and to take advantage of its object model and services. It IS the language of .NET.
I'm a big fan of C#, myself.
Also, I don't think there's any shame in being Java 3. This has the effect of putting the good things about Java into a standards committee, which wasn't going to happen with Sun. To my mind, Java dropped some very good C++ things, and C# put them back in, plus it added some nice original touches.
Mike
**********************************************************
In reply to:
There are differences between C# and Java. First off, Java is a language and an environment. C# is a language, and nothing more. If you want to compare the totality of Java to C#, then you're comparing an apple orchard with a bag of seeds. That's a pretty piss-poor metaphor, but I'm tired.
C# uses a delegate event model. This is a major difference between them and Java. All .NET assemblies are self-describing (whatever language they are written in), and are intrinsically component-based.
Java fulfills an important purpose in software development. I don't use it, and I'm not particularly crazy about their approach in some cases, but there is major software written on the Java platform and in the Java language, and as much as a fan of MS as I am, I would not for a moment say that it sucks.
C# is a language, and that's all. .NET vs. Java is an interesting topic to debate, and really is a far more apropos comparison.
Ghannodahn
November 16th, 2000, 01:58 PM
C# is being submitted to ECMA as a standard because it is not explicitly tied to .NET. Microsoft makes use of the language in such a way that it produces .NET assemblies, but you could say the same thing about any language when taken in the context of a single development tool (not counting cross-platform compilers).
Ghannodahn Kirrel
Librarian, The Infinity Citadel
http://www.icitadel.com
tcabanski
November 21st, 2000, 04:10 AM
Does anyone remember that the key techie behind Delphi now works on the .NET team as a senior architect. The C# language combined with the .NET framework really feels like a grown-up, Internetized version of Delphi. It has all the bits I like about Java along with a sophisticated framework to make it all work well across the Internet. I've always felt like cross-paltform run was alot less important than cross-platform connectivity anyway.
Ghannodahn
November 21st, 2000, 01:41 PM
I agree with you 100%. As an experienced Delphi programmer, I've been able to learn C# with incredible ease. At the .NET In A Day class, myself and one other programmer (also experienced with Delphi) were the only ones who didn't need delegates explained to them.
Ghannodahn Kirrel
Librarian, The Infinity Citadel
http://www.icitadel.com
viju_bachimen
November 22nd, 2000, 01:28 AM
U r absolutely right.Most of the software people think C# will be the better option then java.But i think this is wrong.Microsoft people are trying to make a combination of OOPS and Visual Basic but it is not a contender to java.
vijay
Ghannodahn
November 22nd, 2000, 02:17 PM
My.... OOPS and Visual Basic. What an incredibly well-researched and thought out opinion. Would you care to elaborate on this? I'm assuming that you're intimating that C# is VB with OOP capabilities.
Ghannodahn Kirrel
Librarian, The Infinity Citadel
http://www.icitadel.com
TraceCobur
November 24th, 2000, 02:55 PM
First off,
Dan, you are correct in regards to all the things you listed.
When I started to work for my boss on a C# book, he warned me that C# was similar to Java, he was correct. Similarity does not mean that it was stolen, unlike what some people on this thread have been saying.
C++ was designed for performance, java was designed for web-based applications and working it into web-pages, Visual Basic was created for simplistic programing. C# being a combination of all three languages, seems like the best of all realms. It was only time before microsoft combined the best that the top languages had to offer, not rip the languages off.
Working on this book is alot more interesting than any program my TA's create for us to do in CSE where most people have no clue what they are doing
I'm all for what microsoft is doing.
That's just my opinion :)
Trace
UCONN Freshman/Deitel&Associates Employee
elias142857
February 11th, 2001, 04:23 PM
In response to your assertion that MS copied Java in it's specification of c#:
You state that " It runs on a VM. main and all code now goes in a class like Java. All objects derive from a base class except for primitives like float,int,etc. They even added garbage collection to make pointers less complicated."
C# does address some of the stickier issues of C++ in the same way as Java, but this is not necessarily copying:
* Garbage collection has been around for several decades, Sun did not invent the technique.
* The reason all objects are derived from a base class is because it is an Object Oriented language. Again, this is not a Sun proprietary idea - Smalltalk has been around for many years and uses the same type of object hierarchy.
* As for putting main in a class, how else would you do it? In OOP everything is an object.
* Multiple inheritance from base classes (as opposed to interfaces) has always been questionable...
As for innovation, I see evidence of a number of wise language design decisions present in C#:
* User defined enumerated types
* Parameter arrays for variable length argument lists
* Requiring explicit method overriding
* Operator overloading
* Indexer members that allow array-like access to data structures
* The availability of structs as user-defined value types (think efficiency)
elias
elias142857
February 11th, 2001, 04:28 PM
"All the new Visual Studio products will be compiled to the same bytecode making it easy to mix VB,C++,c#,(possibly Java), in a program."
It's better than this - compilers are being developed for a number of other languages (Haskell, etc.) that will allow developers to compile to the .NET framework. What this means for us, as developers, is that we will be able to choose the appropriate language for a given task. Furthermore, existing components will be easily integrated with C#... Looks promising.
elias
narsu
February 13th, 2001, 07:39 PM
Take a look at http://www.hytes.com.
rathakrishnan
June 18th, 2001, 06:12 AM
...it's not just seems, but it's 100% true that Microsoft has stolen in an ugly manner and reproduces the content to the external world,
as if it's a new programming language. But, I wonder why it has taken 6 years for them [since the date of release of Java, April '95], to
duplicate the same!
If you want to know the full details about the way Microsoft has copied things in a non-professional manner visit:
http://www.swynk.com/friends/perron/wakeup.asp
-RK.
rathakrishnan
June 18th, 2001, 06:14 AM
...COM IS ALREADY DEAD, AND C# CAN DEFINITELY NOT GIVE IT A LIFE, AGAIN!
rathakrishnan
June 18th, 2001, 06:21 AM
In Microsoft's point of view, if they say CROSS-PLATFORM, it's implied that, they mean, obviously and only,
Window 3.1
Window 95
Window 97
Window 98
Window 2000
Window NT Server
Window NT Workstation
Window Millennium Edition
Window XP
...and sometimes they say that DCOM is LANGUAGE-NEUTRAL! In such cases they mean,
VB,
VC++,
VJ++,
C#
--------
RK.
rathakrishnan
June 18th, 2001, 06:43 AM
Well sqrly!
I'm using, or I can say most of us are using, Windows to read your message!
But, there is no point in saying "re-packing someone else' idea leagally'! ...because, as
far as the 'Microsoft-JAVA-Sun' is concerned the term legal simply denotes that Microsoft is
a 'Criminal'!
But, we the Java programmers or the Open-System supporters or the Ethical people accept that
Microsoft's Windows OS is an excellent and user-friendly one [ignoring it's unexpected
crashes and hang-outs]! At the same time, Microsoft and it's supports should be in a
position to appreciate the other side, and not just trying to take over it's rivals thru'
the so-called criminal sorts of activities.
The moment, Sun revoked the license to use JDK/JVM/JAVA from Microsoft, they started doing
the cut-copy-paste the JAVA technology source codes and then do CTRL+H [replace] the names'
with different one [for e.g: System -> Console], and then change the naming conventions
[main -> Main]. And after Sun having released the source code of it's JVM, etc., there is
no point in Microsoft claiming that they created everything new!
...and when I first time got to know the exact difference between Java and C#, at the
macrolevel is only the name, I didn't get stunned, because, it's not new to Microsoft!
They've already done the same thing, 3-4 years back very beautifully! And that's when
Netscape released JavaScript, Microsoft was forced to support the same in IE. At the same
time Microsoft didn't want to say that 'their IE would support JavaScript'. As a result they
did the cut-copy-paste of 'JavaScript' and renamed to 'JScript'.
And another example is the way they brought COM/DCOM [all I could do is just laughing about
the way they hiped it and the way it drowned down!]. During the initial stages of CORBA
development, Microsoft didn't bother to put its hand into distributed computing, and the
moment, CORBA was gaining acceptance from the industry, they joined the OMG and learnt the
technology from there, and did the same cut-copy-paste job and then the ctrl+H job to result
as 'DCOM'!
And there are hell a lot of things like that!
Their aim is just being the No.1 position!
Well We can appreciate that in business it has to be there!
But, there needs to be some Ethics too!
Otherwise, there is no difference between a genuine business person and a prast*****!
And if anyone argues that doing 'prast*******' is also a kind of business, for their kind
information, we're not doing such a kind of business!
-RK
rathakrishnan
June 18th, 2001, 06:52 AM
You already have it!
The C++.
Yes, from your point of view ...
'a cross-platform LANGUAGE (including GUI library), which would allow
you to compile a PLATFORM-SPECIFIC executable for linux, windows, etc'
...it just fits into your definition of cross-platform!
But, it's not at all possible to produce a language compilation to result in executables that would get
executed in any platform without putting an additional operation like converting from bytecode to machine-code! and Java is
doing that!
-RK
rathakrishnan
June 18th, 2001, 07:14 AM
>Read the C# documentation and you'll know it is far from Java. It does share similar properties with Java however.
>And Java is only cross-platform independent on machines that have a JVM.
Yes, Moreover JAVA will work only on a system/thing/object that has a 'chip' embedded on it! Just because the term cross-platform,
you can't expect Java to run on air! It's possible to run Java program in your t-shirt, belt and shoe, provided you embed a chip to it
and provide a battery-power-supply! In the same mannor, tomorrow when my neighbour invents a new operating system called
'Ninx', I do expect that 'Ninx' to run Java! But the fact that 'Java' didn't know that somebody is going to develope a new OS called
'Ninx'. And hence, it can't interpret itself and behave the way 'Ninx' expects it to behave! Ultimately it hands over the task of handling
that new OS to the JVM! And that's why it's called as 'VIRTUAL' machine! Java is, yes, DEPENDENT on JVM, but NOT ON
THE OPERATING SYSTEM! Ultimately Java has to run across all the platforms, and that's the idea and vision!
>Seems to be working for them. Seems to be making a lot of software developers a lot of money.
>Survival of the fittest! And MS is the fittest.
Yes, every Java programmer who has understood the technology is working FOR SUN, JAVA AND THE OPEN-WORLD OF
TECHNICAL COMMUNITY! But you must note one thing that SUN DOES NOT ASK MONEY FROM YOU FOR DEVELOPING
USING JAVA technology! If Microsoft would have invented JAVA [Thank God, James Gosling was with Sun Microsystems], I swear,
there would have been no alternative for the entire world to come out from the mouth of that dragon!
>Great Success REQUIRES Great Effort!
That's true, but ALONG WITH LEGAL AND ETHICAL APPROACH!
-RK
rathakrishnan
June 18th, 2001, 07:26 AM
Well, it seems that u've understood JAVA only as a language for running on cross-platforms! and not for connecting!
That's wrong! Java can well connect to any systems using it's 'java.net' package and with it's enhanced capabilites like RMI, JNDI, CORBA-MAPPING,
JMS, etc.
If that would have been the case y should the whole world go behind that technology!
It's just clear that VB/VC++ themselves had all the capabilities to connect to almost all the systems, but not to run on any!
And that's the reason, why they were KILLED LIKE ANYTHING BY JAVA!
-RK
rathakrishnan
June 18th, 2001, 07:33 AM
If that is the case only 'Windows' will be selected!
And u mean to say that other platforms like 'Unix', 'Solaris', 'Linux', 'Mac', etc. will no more!
Never!
When u say people, they must be of those who're crazy of just the Microsoft Technologies, mesmerized by their free-CD offers and the drag-and-drop features!
And the enterprise level architects and good analysts!
I wonder if only .NET is the solution and if only Windows is the solution, why should the 'HOTMAIL' be run on a UNIX system?
.NET itself has not proved to be a matured product nor scalable nor problem free nor enterprise-wide support for all sorts of systems including legacy systems!
Under such a situation one can't decide to choose the platform that supports .NET!
-RK
rathakrishnan
June 18th, 2001, 07:51 AM
Well, it seems that you've only seen the applets running the 'cats' and 'rats'!
And not the real foundation that is supporting rather enhancing the whole server side of big enterprise systems that are mission critical!
For example of what else Java could do on the earth, I can give u one example: NASA used JAVA for controlling it's Satellite!
You may not be aware of the fact that there are hundreds of products written entirely in JAVA, and they're tagged as 100% Java Program Certified.
From your statement,
>"C# is a very elegant and powerful language"
...that's true, and that's how Microsoft implement things, but the question is how much reliable is it?
How much of interoperability is going to be supported?
You must just look into:
java.sun.com/a-z
and see where they're!
The person who wrote the comparison doesn't know much about C#. First, C# *does* have pointers, and it never has interpreted code.
Here's a list of C# features:
1) Properties
2) Indexers
3) User-defined value types (lightweight, stack-allocated types, like int).
4) Boxing (no wrapper classes)
5) Multicast delegates (hold a reference to many methods)
6) Events (protected delegates)
7) Operator overloading
8) Explicit overriding
9) Explicit interface implementation
10) Variable-length parameter lists
11) Embedded XML comments
12) Attributes for design-time information
13) foreach
14) switch on string
15) verbatim strings
16) unsigned types
17) enums
Does C# look like other languages in the "C++" family? Of course; if it didn't, it wouldn't be in the "C++" family of languages.
You can find the details of the language at http://msdn.microsoft.com/net/ecma
saifikhan
June 25th, 2001, 12:31 PM
Hi Folks:
Can one legally develop and distribute GPL'd software using C# on .NET platform?
regards
Saifi.
Ulberon
June 29th, 2001, 04:52 AM
Hey!
Well, i am one of those c++ programmers that doesn't know java and will probably learn c#, but this is not because it is "cool". I will learn is because it is made for windows OS, just like vc++. I have to learn is because everyone else is, and they are using it. For instance, how many people use c++ builder?, i do. Have you ever tried to exchange code with someone that used vc++? Doesn't work.
You have to admit that most computers have a M$ OS. Because of this, this will be the only appeal I can really see of C#. I'm sure M$ will help this process by making it as incompatible as possible with mac's and linux. And if you really think about it, this is why you are all using Vc++ and not the builder. It is far easier for "most" people to use vc++ than the builder, in addition to the fact that "most" people already have vc++.
All this is is M$ squeezing out the other languages one at a time, like they squeezed out other operating systems, and most software for that matter.
class person
{
public:
virtual void aPerson()
{ cout << "I program in c++, java, and VB";
}
};
class future: public person
{
public:
virtual void aPerson()
{ cout << "I now only program in c# and work for M$!";
}
};
Ulberon
June 29th, 2001, 04:59 AM
Hi, i am one of "the geeks"
The reason i dont want M$ to take over has nothing to do with compatibility and standards and making programs that last and run on everything. It has to do with money. The only reason m$ is doing this is for money. They dont care one bit about any of what you just stated. All bill gates wants is more and more money. For what, who knows? Maybe he wants to buy another idea from xerox, say buying a 3rd world country, and name is something random and stuiped like, "shoe".
Welcome to Shoe. Hope your stay is enjoyable.
-Ulberon
mpultz
July 10th, 2001, 04:07 AM
I'm interested in the differences in the execution models behind Java and .NET. There is one thing that has come to attention. I wonder why JIT compiled bytecode is not cached. The CLR with .NET apparently cached MSIL code so successive executions (program restarted) doesn't have to do the JIT compilation all over again. Why is this approach not used by the JVM? I would think it would give a considerable performance burst, but maybe that is not the case?
OldCoder
July 10th, 2001, 07:03 AM
C# is about "9% better" than Java.
What I mean is, I like many of the changes, but they aren't huge. C-sharp is not a great advance. I used delegates in MS Java and was impressed. Delegates are good for events. I like the notation for accessing properties (uh, member variables with accessors). Indexers are cute. Interface declarations long overdue. The override keyword is for children, but nobody's perfect.
A lot of the advances in C# could have been submitted as suggestions the C++ or Java Standards Committees, instead.
Homework: Make a list of C# features that make sense for C++, and another list for Java.
MS spends hundreds of millions on software research. They have research labs in Redmond and in Cambridge. The customer community at large will spend maybe a billion dollars to change the world to C#/.NET. Couldn't they come with something better?
Bjarne Stroustrap came up with C++ pretty much by himself. It has flaws, mostly in some ugly syntax choices. Microsoft should be able to make an advance as large as that. It didn't.
In retrospect, C++ was a research language that made good. As was "C". Languages, computers and software companies are much larger now than they were 20 years ago. Can poorly-funded standards bodies and individual researchers compete with industry giants? It is obvious that an individual researcher can be 100 times more productive than MS. But MS has 10,000 times the resources.
They built on the shoulders of giants and got their measly "9%" improvement. It's clearly time for the next step after Object-Oriented Programming. I guess we'll have to wait for the next research language (from Bell Labs?).
The time of one-person languages might be over. MS can afford to make an effort like C# every 8 or 10 years. Since MS controls the C# language and the platform, they can tweak it significantly every year or two, without waiting on a committee far away. This means that the language can evolve faster than a purely commitee-based language.
Languages historically succeed or fail based not only on the language itself but on the support libraries and data handling features. C# has .NET, which is an awesome support library.
The IL in .NET/C# has a different purpose than Java byte-codes. .NET code will soon be targeted to the Intel Itanium family (IA64). This series of processors has explicit parallelism that requires the code to be compiled differently for each variation of the CPU. The .NET system provides exactly that. "Installation is Compilation". It is interesting to speculate on why MS would have such an addiction to Intel hardware.
.NET has a different purpose than the JVM. MS badly needed to upgrade/replace its whole API set with something much better organized than the Win32/COM family. The Java system was designed for cross-OS and cross-hardware portability, for web development, and for some embedded development. Sun also hoped to lead customers away from MS.
In fact, this is a good time for all of us to reflect on exactly how much Object Oriented Programming and COM component programming has simplified our lives. I want each of you to count up the times you've saved coding time by using pre-existing Objects and Components. Now compare that to the cost of switching the industry over to these "New" technologies. I am sure we can count on a similar profit result for the .NET family of technologies.
<hr>
Innocent
August 2nd, 2001, 03:30 AM
1) Multiple inheritence in C#
2) Speed is alot higher with C# apps than with java apps because not running in virtual enviroment.
3) .Net offers a complete package where you can develop the whole marketing model and business strategies in a single project. Java is 'only' a programming language.
Innocent
August 2nd, 2001, 03:35 AM
You cannot compare .Net and Java because Java is a programming language and .Net is a strategy development tool.
The closest thing is to compare Java and .Net's programming language; C#.
If you want to compare .Net with anything, Sun's BRAZIL is closest.
Innocent
August 2nd, 2001, 05:06 AM
Everybody is ripping off everybody:
1st OOP: SIMULA (Norway) How many today?
1st RT strategygame: Dune (there was 1 b4 but I dont remember its name) How many today?
1st commersial PC: Mark II (by Ferranti Ltd, Great Brittain) How many different PC brands with minor variations exists today?
1st C++ was made by danish Bjarne Soustroup, now we have several (VC++ and Inprice is biggest)
1st GUI operating system were apple (?not 100% secure), after that came several (i.e. Amiga, OS, Windows) Actually Windows ('95) is one of the latest - if not the latest.
And not to mention that Sun is creating their own .Net: BRAZIL (emergency project by Sun to not loose customers, about 1 year behind Microsoft)
Innocent
August 2nd, 2001, 05:34 AM
It is possible to use pointers and handle memory in C#, though you might get memory leaks just as in C++...
By using C# properly you leave it to Microsoft to clean up after your application, much like Java.
Innocent
August 2nd, 2001, 05:36 AM
CoelDraw is written in Java. That's the reason why it's so slowww...
Innocent
August 2nd, 2001, 06:36 AM
I agree that Microsoft using copy-paste on alot of things, but don't think that Sun or any other of the huge companies are any better.
The last time I checked, Sun's BRAZIL looks alot like Microsoft's .Net ...
Btw, why does most ppl only use non-Microsoft applications or Microsoft all-the-way?
The world is only black-and-white if you let it
Innocent
August 2nd, 2001, 06:43 AM
I agree that Java is more than just the language and that C# cannot be compared with the Java enviroment, though it's the Java language that is discussed, not the Java enviroment.
The Java enviroment cannot be comapred to .Net because .Net is so much more than just an enviroment. Sun is currently developing a competetor to .Net called Brazil.
Innocent
August 2nd, 2001, 06:47 AM
>I think it's a little misleading to say that C# is only a language and nothing more. I don't believe C# could run or do anything useful without .NET.
Not correct.
C# is a part of .Net and can be used to i.e. develop a part of a larger system, but it's still 'only' a language. You can use C# to develop stand-alone applications also.
Innocent
August 2nd, 2001, 07:23 AM
>But, it's not at all possible to produce a language compilation to result in executables that would get
executed in any platform without putting an additional operation like converting from bytecode to machine-code
It is possible in C++ if you use #ifdefs, you will have to compile a version to each OS (not realistic for larger apps cause of compleity of GUI)
Innocent
August 2nd, 2001, 07:35 AM
Java seems like a bad rip from C++ (they forgot the include files)
C++ language logics is stolen from C and C++ OO is stolen from SIMULA
Innocent
August 2nd, 2001, 07:46 AM
Hmmm...
You don't like Bill Gates, do you?
Facts:
- Bill Gates is worth more than any person on this planet!
- Bill Gates worked his way up. He is extremely good at marketing and he got one shot, took it and... BOOM
- There is not a single person in this whole world that have given as much money to charity than Bill Gates. Over the last years he have given a few hundred millions!
- Steve Balmer is another story...
- Larkin (Apple) too...
- Sun makes money, they must come from somewhere.
Don't get blindfolded, open your mind. There are good and bad things in Sun just as in M$, and C# is not the ultimate language, neither is Java
Innocent
August 2nd, 2001, 09:18 AM
>> And C# is cross-platform. Between NT and 98 that is.
At the moment I definitely agree with you. In fact, as far as I can tell it only runs on Windows 2000.
No, .net (and C#) runs on Win98 and Me too.
Innocent
August 2nd, 2001, 09:20 AM
Ha! C# supports single (not-multiple) inheritence and also interfaces.
No! C# supports multiple inheritence of interfaces. Multiple inheritence is not yet implemented (not secure M$ going to but rumors state that they will).
Innocent
August 2nd, 2001, 09:41 AM
A tiny mistake:
2. There are no pointers in C# and types can be
defined as value type or reference type and even be converted from value to reference at run time via boxing/unboxing.
C# uses pointers. When you define something with new
lMyClass = new MyClass()
you create a pointer.
You can i.e. create a linked list similar to those in C++. The difference is that you in C++ refers to objects/attributes/methods in classes through pointers with -> instead of .
and that you don't have to delete pointers when done because C# does that for you.
mpultz
August 2nd, 2001, 10:29 AM
Java is not just a programming language, it is also a platform. .NET is a platform and C# is a language designed specifically for .NET. So in my opinion are .NET/C# and Java comparable because of the similarities in the execution models behind .NET and Java and the similarities in languages C# and Java.
Innocent
August 2nd, 2001, 01:58 PM
Java was actually a programming language with a virtual machine. Nothing more, nothing less.
As time passed it was enhanced with a.o. BA and Scripting and people called that Java too. For simplicity and to avoid confusion Sun calls it all for Java.
Therefore it is possible to compare the programming language Java with C#.
Java is not a platform. Windows and Unix are platform. Java the Java you try mean) is more like an enviroment. Actually Java cannot be compared with C# because C# is a language and it cannot be compared to .Net because .Net is a strategy.
mpultz
August 2nd, 2001, 03:09 PM
Lets keep it simple. Java is partly a platform, and so is .NET. I can't see why you argy with me on that point, but you might have another interpretation of the word platform than the rest of us.
Strategy, do you find that to be a enlightning term for .NET. I guess you can call every product, tool, language, environment and so on for a strategy if it has a big part in your business strategy. For example Java/J2EE.
bayard
August 8th, 2001, 02:05 PM
I agree with mpultz on this one.
The Java Virtual Machine is a virtual platform. The Java language is a language.
The Sun ONE architecture is a direct mapping and response to .NET. J2EE forms a part of that.
To say that Java is not a platform is to be blind to the existence of Java operating systems.
The same logic could be applied to Windows and Linux, both are just virtual platforms sitting
on top of a set of assembly platforms.
There are lots of other posts on here venting their spleens. And some good ones pointing you to language comparisons between Java and C#. The summary of those is that C# is a superset of Java, all of Java's language features are copied accross and a bunch of old C++ are reintroduced. A few cool new ideas are added.
This means that you have more power (not wearing Sun's strait-jacket), less security (not wearing Sun's strait jacket), and slightly better integration into IDEs.
The language itself is a repackaging of Sun's idea, which was at least a lot more original than C#, however the .NET idea is doing what Sun failed to do with Java, create a language-independent virtual machine. The Java Virtual Machine has many languages which can compile to JVM bytecode, but they don't get as much press as the main language, Java.
Java is also not open-source, but Sun are having to be more open in the current business environment. MS don't have that to hold them back.
When MS' JVM was current, it was the fastest on the market. Their IDE J++ was the best to use, ignoring its problems with creating platform-specific.
C#'s major offerings to you are going to be the same. A superb IDE, fast performance, a high price tag, a closed-market and very good integration to Windows. It doesn't really compete with Java at all, its true competitors are the other languages which will compile to CPL(?-.net bytecode). Delphi, Perl, Python, VB and VC++.
Indeed, if C# is as successful as Java has been, and there's no reason to think it won't be, the coding world will probably become Java on the server, C# on the client, C/Assembly on the OS and a mixture of the three in the embedded market.
If you are a Windows application developer, I would advise you to embrace C#. Or go for Java, wait until someone creates a clever java_dot_net_compiler.
This means that you have more power (not wearing Sun's strait-jacket), less security (not wearing Sun's strait jacket), and slightly better integration into IDEs.
I do not agree that you have less security in .Net. You can actually implement Microsoft's security much easier and you can still add your own security protocolls with ease.
If you are a Windows application developer, I would advise you to embrace C#. Or go for Java, wait until someone creates a clever java_dot_net_compiler.
I agree that you should go for C#, but you should learn about the other apps., languages and enviroments in .Net. And it would not be a total waste to learn some Java as well. Though it's slower than C++, VB and C# (in Win), Java's still one of the most used languages and it will not disapear in the nearest future.
Innocent
August 9th, 2001, 05:01 AM
C# is not a revolution it's a modernisation to current languages to get them "Up-To-Date". What is a revolution is the deveopment enviroment and versability in .Net. C# is just a small component of the whole package.
MS have lots of developers to create .Net (and C#). Bjarne Sostraup developed C++ on his own. I'm certain that most readers know which issues arrises when a development team passes 5-6 people. More administration, more paperwork, more routines slowing down the process, less time to development and so on.
When passing 15-20 you have to implement strict routines for several processes like version checking, communication routines and strict quality assurance. It also become neccesary to go "The-Long-Way" with suggestions of changes. It's not just to set up a hand-written model on a piece of paper and go to it. You'll have to take the whole round with acceptance from management, adaptability checks thowards other components and planned components and so on.
And this just skim the surface. Multiply this by 100 and put a management of a multi-national company on top and you'll start getting closer to what Microsoft faces.
I agree that they should've done a better job but it's not fair to compare an extremely brilliant danish genious with a single over worked Microsoft employee...
Innocent
August 9th, 2001, 05:06 AM
Hmmm...
I surrender to the suppremacy of higher knowledge.
Time to find my books and read some more :-)
Innocent
August 9th, 2001, 05:11 AM
No, you'll have to register .Net Beta 2 at Microsoft if you're to develop release products with it.
Try http://msdn.microsoft.com/vstudio/nextgen/beta.asp You'll find where to register from there.
bayard
August 9th, 2001, 09:42 AM
By security, I'm not implying the ability to do encryptions etc. That's generic to any language.
It's harder to do in Java I would say as most security implementations are in C, and porting a low-level
piece of C to Java is harder than it will be to goto C# (I think).
By security I meant security of language. Java gives you a strait-jacket, this means that you can't mess up and blow chunks out of memory. C# gives you a strait-jacket, but it doesn't actually tie the sleeves, plus it's a more complex language than Java, so based on the language alone, I would consider C# to be a more expensive solution in terms of time wasted due to developer mistake. That doesn't take into account maturity of language or power of IDE though.
As to learning languages, knowing lots of languages is a very good thing. Being versed in only one language means it's unlikely a coder will be able to think outside the box and do something that's not usually done in that language.
If someone is new to Windows, I would suggest they try to ignore VB, concentrate on C# if they can get the oppurtunity and then learn some C++ as and when they need to. In terms of a C# programmer picking up Java, or vice versa, I would suggest that only people with solid experience will gain anything. Until you have a few years in either language, looking at the other will be a waste of time. Once you have some experience, it should be pretty easy.
My reasoning for that is that inexperienced programmers tend to view a language as a bunch of syntax to learn. Java and C# are so similar that the exact same concepts apply, so it would make much more sense to learn those concepts before viewing the other language. ymmv etc.
In terms of Java not dissapearing in the future, I think that's an understatement. The MS desktop is losing market %, and although that is slow and starting from 98% or so, I think Java will see a resurgence in desktop programming, be it PDA, phone, home computer etc.
MS is still the underdog in the server market, so at the current time I'd rate Java's future higher than C#. I'm sure that situation will swing a lot now MS have a stable product and once C# hits the production lines (is it released officially yet?).
Now that I do understand you I agree to most of the text. What I don't agree with is that newcomers to Windows should leave VB. VB is one of the easiest languages to learn and absolutely the best to get a feeling for Windows API. Also VB offers rapid development if you are developing small applications - something M$ managed to transfer to C#.
Anyways, I beleive that Internet programmers should learn VB and Java scripting and XML basics.
I don't think that Java will disapear. It's a good language with many users. What I do beleive is that XML and C# will take most of market on client side from Java. One important issue here is that M$ can only use Java for another 6 1/2 years in their applications - and only up to Java 1.3 - and they will most likely try to block all Java (even scripting) if they don't get an agreement with Sun within a couple of years.
C# actually looks like M$ rushed into it and it might be just because of this.
.Net is currently in Beta 2, and it's just released. I'd guess that it's still at least 4-5 months until they release VS.Net and the reason for this assuption is that their new .Net based OS needs a bridge-OS between Win XP and the .Net based OS.
bayard
August 9th, 2001, 03:08 PM
My reasons for advising against VB, at least once C# is commercially viable, is that I see it as a poor future choice.
For this discussion, the important languages are VB, C++, C#, JavaScript, Java. Of those, four are C-based syntax, whilst VB is Basic syntax. I imagine that C# will most likely replace a lot of the VB usage so for a new programmer it seems less useful.
I don't agree that VB is of use to an Internet programmer, unless you have the luxury of an intranet for activeX and vbscript. It's obviously of use in doing ASP, but the argument for C# replacing it comes in there too. I would hope that there is a C#SP tag system, probably copying heavily from JSP in the works.
On the subject of XML and C# taking most of the market on the client side from Java, XML is not even in the equation, except that it provides a simpler version of CORBA in its SOAP form. Generally I think the client side will remain exactly the same. If windows-only is desired, then MS language of choice is used. If more than windows is required, then 90% will choose Java. The major thing hindering this up til now was in fact the Mac, and not Windows. Usually a client program was written for Mac and Windows, Java on the Mac was a pretty poor partner, so it was in fact cheaper to have two separate projects. OS-X has a love-affair with Java, so people releasing multi-platform applications have every reason to choose Java now.
So the Java vs C# market share on client side will be completely linked to the Mac/Linux/Other vs Windows market share. Once the Mac/Linux/Other platforms start to grab 15 or 20 percent of the client, then Java usage will overtake/challenge C# on the client. If they fail however and MS continue their desktop dominance, then Java will shift slowly to the edges.
The recent Sun/MS Java arguments are pretty inconsequential, except that they force Sun to side with the Mac/Linux/Other platforms. Up til now Sun were a bit unsure about Linux due to their battle for server dominance, but if Linux represents survival of Java on the desktop, Sun will have to decide. The decision by MS to stop packaging Java in Windows is a god-send. JView was a cruddy piece of software and although it makes it a touch harder for MS coders to start coding Java and harder for old Applets to survive, it makes it a lot easier to deploy applications to Windows. You no longer have a buggy, out of date, MS JVM wanting to interfere. The worst thing will be if MS still provide JView from their website and somehow make it so their users get that instead of the latest versions from Sun.
A last note is on your use of the word 'scripting'. From the context I assume you're referring to ECMAScript (JavaScript/JScript). Bearing in mind this is mostly an MS language, they will not even dream of stopping this. 'JavaScript' has next to nothing to do with Java.
Sorry to ramble on so much, I'm enjoying the discussion. I had wondered if moving from the Java forum to here would throw me into irritating flame-thingies, especially after seeing some other posts. Is nice that things are civilized.
.NET is a complex subject. I've been trying to catch up on the readings but it will take some time. Anyway, I'd like to give some input.
It seems that .NET is a service. What they really want to do is offer software as a service. I believe this has to do with the development of software security and their distributed model. Apparently SOAP and XML are open standards. Microsoft wants to offer a service to the global online community, regular end users, where they will be able to have more control and power over their personal information instead of having that information all over the internet. This is a new concept, it will in turn require developers to write software that borrows objects from the .NET framework classes. Esentially the greatest change from VS6 to VS.NET is the adaptation of OOP design. This is why VB.NET gets a facelift and C# was created only because it would be the first language with seamless integration with .NET framework classes and because C++ was not a managed language. In time perhaps all languages will have seamless integration. I don't think that Microsoft owns C#, because it is also an open standard. More people should make a note of that because this is critical. What JAVA is complaining about is that many existing languages are included by .NET but at this point JAVA is not one of them. Because all .NET code compiles to the same intermediate langauge, clients can be written in many different languages and objects from different languages can be borrowed among themselves.
Microsoft has taken the burden. It has built the low level functionality into the operating system so that the developer can integrate tested and secure objects into his client programs and concentrate on the top end of design which is where most developers make all their profit. But .NET gives you the choice.
I use Visual Studio.NET (Beta 2)
Innocent
July 30th, 2007, 11:43 AM
.NET is a complex subject. I've been trying to catch up on the readings but it will take some time. Anyway, I'd like to give some input.
Microsoft has taken the burden. It has built the low level functionality into the operating system so that the developer can integrate tested and secure objects into his client programs and concentrate on the top end of design which is where most developers make all their profit. But .NET gives you the choice.
I'm not quoting all, just the part I answer on.
It is not entirely true that developers make profit on top end. If you intend to sell a product widely to lots of customers, yes, a good and intuitive design sells the product and have alot more to say than background code and functionality. For most business systems, functionality and business design (back-end) is much, much more importaint than good looking screens. I've been working on both sides of that fence for some years now, and take my word for it: Poor application or system performance, bad queries and little flexible designs is a killer for enterprice applications (some of my work is actually cleaning up after porly designed systems with good looking screens).
Aurrin
July 30th, 2007, 01:39 PM
Wow. That's probably the longest pause in a conversation that I've ever seen on a forum. (Approximately 6 years)
Though, it's funny to go back and re-read the posts of 7 years ago. Especially the ones about cross-compatibility being limited to Windows. Who knew? (One couldn't be blamed for not having seen this one coming from Microsoft.)
Mutant_Fruit
July 30th, 2007, 02:57 PM
Just another thing i'd like to point out before this thread (hopefully) goes the way of the dodo:
c# seems to build up of stolen java-ideas. I think it is meant to be a weapon against Sun.
Guess where java stole generics from...
codeguru.com
Copyright WebMediaBrands Inc., All Rights Reserved.