AS ONE WHO IS NEW TO PROGRAMMING, I WOULD LIKE TO GET AS MUCH INFO AS POSSIBLE AS TO WHETHER JAVA OR THE UP AND COMING C# IS THE BEST LANGUAGE TO LEARN. I'VE HEARD SO MUCH ABOUT C# AND HOW IT TAKES THE BEST OF JAVA AND C++ AND "COMBINES" THEM TO GET THIS NEW LANGUAGE. BUT I'M NOT CONVINCED YET ABOUT C# AND NEED HELP TRYING TO FIGURE OUT WHAT LANGUAGE IS THE BEST TO LEARN. THANKS FOR YOUR TIME.
First, I'm moving this post to "Jobs Discussion", since that is the place the "Java vs.C#" threads are usually discussed...
Now... on to the ranting...
Since you are posting this to a site called "JavaRanch", what do you think the answer will be? But here are some pro's and con's ( at least those that I can think of... I'm sure there are more... )
Java is platform independent... it will run on Unix, Linux, Mac, Windows, and any other platforms for which a JVM has been written... C# only runs on Windows...
Java has been around since the early 90's (1994?) and has gone through several improvements, getting most of the "bugs" out of the language... C# is a new Microsoft product, and we all know how Microsoft is with bugs...
As far as "taking the best of Java and C++" garbage... this is all M$ tripe... it's more like... "We took Java... castrated it and tied it down so that it only runs on windows... changed 1 or 2 commands to look more like VB, VC++, or ASP commands, so we wouldn't get sued again like we did over M$J++"
Ok, Ok... I admit that last one was a little over the top... but in addition to the above... you stated that you are new to programming, so I would recommend Java yet again because of the wealth of resources ( books, and sites like JavaRanch ) that will help you learn Java... I think I've only seen 2 books on C#, one was a M$ reference manual, and one was a book on why you should migrate to C# (again... obviously by M$)... so yet again I would suggest Java.
Just My $0.02... -Nate
Write once, run anywhere, because there's nowhere to hide! - /. A.C.
If c# is the equivalent to Java then Micro Soft is too late, Java is in the market from 95 and Microsoft has come out with product equivalent to java after 5 years and it will take another 2 years to develop commercial product from c#, Mr. Gates its too late now
MicroSoft is merely trying to split up the development base and make things more confusing by introducing proprietary standards, yet again. This is a part of their business strategy. If you want to take a look at an internal memo that was leaked in '98-'99 about how MS should respond to the threat of Open Source projects (such as Linux, Apache and Mozilla), go read the Halloween Documents at: http://www.opensource.org/halloween/index.html Halloween #1 is the most telling. You can rest assured that the API for C# will absolutely NOT be fully documented just to make things more difficult for you so that you couldn't ever "hijack" the language (it is ironic that this is precisely what MS is trying to do, earlier with MSJ++ and now with C#: hijack Java). Pay special attention to the proposed tactic of "embracing & expanding upon" the existing protocols to make them MS proprietary... to wipe out any competition. This memo was put out in 98-99, and MSJ++ and today's C# are obviously connected attempts to carry out the tactics proposed in this, and many other MS memos. As far as you, yourself as a developer are concerned, having anything less than a 100% documented API is something you would want to steer clear of. Also, think about portability issues, and MS's dismal record on bugs and support. They want to sell you their eternal support package. In the end, as a consumer of computer development software, IDEs, and languages, remember that MS has solely their business interests in mind at all time, not your needs as a programmer. Sun, on the other hand, is providing everything for free, and encouraging suggestions, modifications, and general involvement. In the long run, they are competing with MS, but at the moment, and for a good many years ahead, Sun will be thinking more about you than how much money they can make off of selling you Java. You still also must look at portability. C# is timed to release at the height of MS's .NET strategy, which is to try to unify the net and all personal computing under their creepy slogan "one world, one web, one program". This C# will definitely NOT be fully portable (if at all) to Linux, and if you plan on doing ANY server-side programming, you'll have to write Linux-friendly code at some point. If you wanted to have anything at all to do with the web, then you would have to learn C++, and Java. I'm still learning myself, and so far, I've found an immense amount of support and expertise from the Dev-C++ (by Bloodshed software) and Java communities...and Java and Dev-C++ are 100% free. And both of the C++ compilers that Dev-C++ is designed for exist in Linux and Windows, and only very minimal alterations to code need be performed to run on both systems (the compilers are MinGW and Cygwin). The URL for Dev-C++ is: http://www.bloodshed.net Investigate some of this stuff, and make up your own mind! Even if MS was being honest and trying to help people by putting out C#, you'd surely have to know at least some C++ and some Java in the end anyway, so why worry with C#? -Ender [This message has been edited by Ender Everett (edited June 01, 2001).]
Don't sweat the petty stuff, just pet the sweaty stuff.
from whatever i saw the api looks more like java's. + primitives can also be used as Objects using Boxing and Unboxing. They have enums as well. Overriding is'nt automatic as in Java, u have an option t specify wether u intend to override ..and more stuff like that. As for the language desing is concerned , my personal opinion is that there's nothing out there to criticize it when compared to java!. It's but natural that they w'd've looked at java , c++ etc and tried to fix the problems whatsoever. It's also garbage collected..operator overloading is also allowed..so u kind of literally have everything u can think of except multiple inheritance( i mean implementation inheritance is'nt allowed) From my limited knowledge, i did'nt like the exception handling strategy though in C#..everything is "unchecked" which is'nt good. So if a guy does'nt look at the api he w'dnt make sure that he catches some important exceptions and do something about it. Well their argument: "java code looks ugly bcos of numerous try/catch" :-) Yes from job opportunities, i don't think u w'd get many if u r doing c# now. U have to wait for .NEt to come out..and people to start evaluating/ using it. It will be sometime before that starts. So learn java and if u feel like u can migrate to c#, if not anything migration w'd be a lot easier. Ok i had this question about platform independence, someone mentioned it can't work on other platforms but i guess they also have the concept of IL which must be getting interpreted by a virtual machine kind of thing?? Then if someone can provide that layer for linux, it s'd also work on various platforms??? Am not sure if they have given out the IL specs and stuff like that. But i guess nothing stops the IL code from executing on a linux box w/o recompiling if the interpreter is there. MS probably w'd'nt provide the referne implementation :-) but someone else sure can. ASP was thought to be slower than JSP but now i guess they will write C# on server and it w'd'nt be vb script that w'd get interpreted, instead the compiled IL code that w'd be interpreted. So no difference there again. Just my thoughts..yes i work on and love java :-) "C# as a language" (no reference to MS tactics/whatever here) looks better equipped than java. No big deal, they just had to look at both the langauges and fit in things from here and there. Who knows gosling too might change some java lang specs to accomodate somethign more?. But i really am not sure how easy/difficult such things are. But C# as a language has no problems whatsoever Just my opinion atleast when compared to java. I like java but i think we need to look at what the other guy has to offer and it's all there. I guess even c#'s architect is supposed to be brilliant. was c# not supposed to be submitted to a global body ? then in that sense it's more open than java? I guess IBM's (one of the greatest java supporter) complain against Sun is it's reluctance to submit it to a global body. I read an article which says that future of java is with IBM and BEA and Sun is irrelevant!! had some good points to support that too. I think it w'd be a co-existance rather than someone pushing the other guy out. As for a C# book look out for C# and the .Net Platform by Andrew Troelsen i think it w'd be good. I liked the sample chapters. or even Inside C# (language introduction) learn java and concentrate on design patterns, OO and stuff like that. They never change. Learning a language is about learning to use the libraries it comes with...just my feeling. Syntax can be learnt in a short time. good luck, karthik.
last week i attended the seminar on the .net platform and c# conducted by the product manager india(Microsoft.). I'am convinced that c# is just a bit modification of java.Infact i would say that it has really got nothing new to offer.What really was impressing-the .net platform. c# is still in beta version and microsoft plans it to enhance it! Well let's wait and watch!
Girish [This message has been edited by girish rateshwar (edited June 02, 2001).]
So, Can we safely conclude that C# is never going to replace or even challenge Java from its first position in development market? Microsoft does have a real penetration and impact all over the globe as of now.. And if the well-known complaints(like performance etc.) about Java is not resolved, will Java remain the King? Sorry for being so skeptical.... Ashok
Originally posted by J Ash: So, Can we safely conclude that C# is never going to replace or even challenge Java from its first position in development market? Microsoft does have a real penetration and impact all over the globe as of now.. And if the well-known complaints(like performance etc.) about Java is not resolved, will Java remain the King? Sorry for being so skeptical.... Ashok
I don't think you are being skeptical. If u check out the C# specs , it has'nt sacrificed any thing from C++, plus it has taken java features as well. Language independance is no mean achievement either (.NET). It's somethign we so often encounter in our projects. I guess, there's a feeling in the java world that all smart guys in the world are with Sun and everythign from MS is bad :-). wheareas the reality is that something like MTS existed when J2ee/EJB specs were nowhere around! Anyone who does windows specific development w'd obviously prefer C# to java...and others w'd prefer Java. It w'd be a great competition though! karthik.
I think the two languages will continue to co-exist. I don't think C# was created to be a Java killer. I think it was mostly to patch up the huge divide between VC++ and VB programmers. Microsoft was tired of patching VB and trying to make it OO and and the same time, VC++ though powerful still was not backed by people because it lacks the simplicity of VB. To top it all both VC++ and VB were created primarily with a standalone exe file model in mind or client/server model at best. They don't (up until now) easily lend themselves to creating web applications.
I think supporting multiple languages and doing enhancements on both would be a huge financial drain and a management headache for Microsoft. Not to mention versioning/backward compatibility of VC++, VB and making sure they both talk to each other through a version of COM. To me it sounds like a big mess. I am surprised that a company like Microsoft that likes to keep things simple had to make things complicated for the programmer. They created the mess in the first place to have 10 ways to do one thing. They saw that Java filled that gap between C++ and VB. Java was created with web based applications in mind (Remember Applets were the first thing introduced and heavily publicized in Java). Java has always been consistent in it syntax. I use the same syntax to access the database, write messaging systems, create servlets. Its consistency is amazing and I think that appeals to the developers (at least to me, I would rather learn Java then learn 6 languages to do one thing.. ASP, VBScript, JScript, VB, COM, DLL.. wow!) They wanted to come out with something similar to Java to fill that gap but something that would not piss off VC++ & VB developers. C# to me does not come as a surprise, in fact I was surprised that a company like Microsoft did not think of it before Sun did. In its current form C# is not a competitor to Java and it will never be because C# was created to keep VC++ and VB programmers happy and as long as that is the intention they will have to keep some level of inconsistency in that language to keep both the camps happy. java does not have that problem. IT Managers and developers are sold on the ease of use and consistency of Java more than anything..
Joined: Mar 07, 2001
Oops, I did not answer the original question at all. True C# has enhanced Java and C++ and added some constructs and features here and there. But those enhanceents are to the core langauge. The true power of any language especially for RAD is in its libraries. Most of the libraries of any use in any serious enterprise application are on the .NET platform and are accessible through C# not necessarily using the same syntax. Chances are that to use those libraries you will need to have prior knowldege of that library (classic case is database access) To use database access in C# you will need to know ADO.NET because unlike Java (which has JDBC built into the language API), ADO.NET is not part of C# its part of .NET. What that means to you as a developer? Yet another learning curve yet another syntax. *Its not all in one place as you would like it to be*. Java does not suffer from that problem! To a programmer I think that is a huge issue. It would hamper my productivity if I had to jump to different books and libraries and learn new syntaxes to get stuff done. *With Java its always Java and no other library somewhere else and top it all that somewhere else is not publicly accessible (so typical of Microsoft). C# may have hooks to access components in legacy COM components, but is that of use to a person who does not know COM and wants to learn C#? So when you are set to learn C# you should ask yourself is that the only thing I will have to learn to get *stuff* done. And as one of the javaranch member pointed out, MS has a history of not being truthful about its API. With Java I can read up on GC, JVM anytime and its publicly accessible all the APIs that I would need to develop any application in Java is freely available. How many C# wannabe developers can claim that? I would stick with Java.