Monday, October 20, 2008

C# or Java?

In reply to my earlier post asking others how they learned C#, I received a message from a reader who thought that it would be wise for me to learn Java first.

I have to admit, I never really thought about learning Java. Most if my Java experiences have been as an end user and quite frankly been pretty awful. My current employer uses alot of Java based apps and we've had performance issues, issues with one version of JRE working with certain apps and another not working with others, bizarre cross platform incompatibilities and oddities etc...

From what I understand, syntactically C# and Java are very similar and skills and methods learned in one may easily translate to another.

I'm not sure I'm willing to change paths now. What would be that advantages or disadvantages of doing so?


George said...

If anything I would suggest learning C/C++ first. Since C# and Java are both derivatives of C/C++ I don't see the benefit of leaning Java first.

Vagif Verdi said...

Relax, for all purposes C# and java completely overlap. If you already know and use c#, there's no need for you to learn java (and vice versa)

The only reason i see: programming for other (non pc) platforms.

Anonymous said...

I've been working with c# since it's been around. It's a good language, actually my favorite language.

But, for a year or so I've been working with java. I think the platform as a whole is much more complete, design patterns are clear etc. .Net on the other hand is just a bunch of cool technology, which doesn't work very well when you try to put it all together.

When you learn the syntax of one of them, you will more or less know both. The problem is memorization of class library.

Oh and, lately, anything that won't run on virtually any platform doesn't really impress me. Common, windows only? That so 1995!

Anonymous said...

Java is inferior to C# in almost all important aspects. For instance: Java has no delegates, no getters/setters, no nullable types, no operator overloading, no namespace support, no decent generics and no closures. The only advantage versus C# is that Java has inner classes and more powerful enums (both of dubious usefulness). And that's only C# 2.0 versus Java. C# is currently at version 3.5 and completely reinvents the game with the introduction of Ruby-like functional constructs revolving around LINQ paradigm (inline non/anonymous classes, inline delegates, extension methods etc:). Plus it is a cinch to piggyback some VB.NET 9.0 code onto your existing C# project to solve types of problems VB.NET excels at (like XML manipulation via literals or dynamic WebMethods).