• 0

Java VS C#


Programming languages  

108 members have voted

  1. 1. Which language should I concentrate on?

    • Java
      19
    • C#
      89


Question

Hi guys,

I am planning to learn and certify myself with one of these languages. I am wondering which language you guys think I should concentrate on. Which language are there more jobs/opportunities/higher salary out there right now. I am living in Toronto, Ontario if that matters. The company I am working for is using a lot of Java applications which I have to support. So I was thinking if I concentrate on Java this would help me support the applications better. But I have a feeling that C# may be more popular than Java. I am asking programmers who have much more experience than me for their advice. Thanks :)

Link to comment
Share on other sites

Recommended Posts

  • 0

C# has LINQ.

Okay, debate over, nice talking to everyone. There is a lot more, but its not even worth getting into, when you have LINQ.

Yes, I am a Software Architect specializing in .NET but no I am not partial to a language. I am partial to productivity and code maintainability.

Link to comment
Share on other sites

  • 0

Operator overloading? Really? Most people probably never even need to use those so called "features". If you are one of them, then good for you, but I certainly wont miss them, and many professionals seem to agree. Those kinds of things are more of a check-list to say "yes, we have that". Not every design pattern needs those.

Most of those so called "features" are actually used to a very great extent. Just because Java doesn't have them doesn't mean they aren't used within the industry.

We use both here and C# is the better language, has better features. One of the biggest pain points we have is versioning with Java. We still have some systems running off Java 1.5.2 which is full of security holes and bugs which we can't update to the latest release because the vendors don't support them.

Don't have that problem with .Net.

Visual Studio is currently the best IDE available (and yes I use Eclipse).

Java has better cross platform support but you really have to write to the lowest common demoninator for it to work properly. Java UIs on the whole look fairly terrible because of this.

Since Sun took over Java, Java IMO has went downhill.

At the end of the day what most people are saying is basically true, learn one and it's fairly easy to switch to the other.

Link to comment
Share on other sites

  • 0

C# has LINQ.

Okay, debate over, nice talking to everyone. There is a lot more, but its not even worth getting into, when you have LINQ.

Or you can just use an industry wide standard called SQL. Yes I'm aware SQL is domain specific, but really, I don't think LINQ is going to be a deciding factor for choosing a language.

Yes, I am a Software Architect specializing in .NET but no I am not partial to a language. I am partial to productivity and code maintainability.

That made me chuckle.

Link to comment
Share on other sites

  • 0

Or you can just use an industry wide standard called SQL. Yes I'm aware SQL is domain specific, but really, I don't think LINQ is going to be a deciding factor for choosing a language.

Not sure how you would go about using 'SQL' to extract a sub grouping of fields based on some arbitrary criteria from an in-memory collection of objects into a strongly typed resultant object...

Me, I'll use LINQ.

Link to comment
Share on other sites

  • 0

Or you can just use an industry wide standard called SQL. Yes I'm aware SQL is domain specific, but really, I don't think LINQ is going to be a deciding factor for choosing a language.

Hah, that is so funny. Why are you assuming that I'm using LINQ to query a database? LINQ can query any object. It is intensely useful. You have misunderstood the gap betrween Java and C# if you think LINQ is only for databases.

Link to comment
Share on other sites

  • 0

Or you can just use an industry wide standard called SQL. Yes I'm aware SQL is domain specific, but really, I don't think LINQ is going to be a deciding factor for choosing a language.

SQL only works on databases. LINQ can be used on any object in code.

Good job for missing the point.

Link to comment
Share on other sites

  • 0

What about a nice C# 1.0 feature over Java....

Properties!!!!

Seriously, how do you java guys deal with writing methods get_blah() and set_blah()!

Link to comment
Share on other sites

  • 0

Hah, that is so funny. Why are you assuming that I'm using LINQ to query SQL? LINQ can query any object. It is intensely useful. You have misunderstood the gap betrween Java and C# if you think LINQ is only for databases.

Even though I favour Java, I'd marry LINQ if I could.

Something like

select Drink from  TheBar where Drink.Color = Blue

vs

for(each drink in thebar) {
if(drink is blue) {
 addToMyList()
}
}

and that was just a VERY simple example of how much easier LINQ is than traditional code.

Link to comment
Share on other sites

  • 0

select Drink from  TheBar where Drink.Color = Blue

Personally, I would rather use:

 TheBar.Where(drink => drink.Color == Blue)

...but the way you did it is just the same. I just heart lamda's :).

Link to comment
Share on other sites

  • 0

Personally, I prefer C# as my work place is a Windows server environment and I find the framework (libraries) easy to comprehend. Both are C syntax base, so learning one after the other would not be that difficult.

Link to comment
Share on other sites

  • 0

Ever heard of OpenGL? Well that works across all platforms, not just Microsoft ones like DirectX does. If you want to be tied to a single platform, then DirectX is your man ;)

XNA is a brilliant framework for indie game projects. It also uses C#. OpenGL and DirectX are using C++ (yes there are wrappers and stuff, but the don't do justice to them), so that's kind of out of the topic. ;)

Link to comment
Share on other sites

  • 0

Not sure how you would go about using 'SQL' to extract a sub grouping of fields based on some arbitrary criteria from an in-memory collection of objects into a strongly typed resultant object...

Me, I'll use LINQ.

You can use an ORM system (Object-relational mapping). That's all LINQ is after all. There are many out there.

Link to comment
Share on other sites

  • 0

XNA is a brilliant framework for indie game projects. It also uses C#. OpenGL and DirectX are using C++ (yes there are wrappers and stuff, but the don't do justice to them), so that's kind of out of the topic. ;)

The DirectX interface is written in Microsoft's COM, which is platform specific and written in C++ (horrible to use from C). OpenGL implementations are usually written in C. There are of course bindings for OpenGL in virtually every language. In truth, I don't really know much about XNA, but if it uses DirectX, then it will share the same problem - COM, and platform lock-in.

Link to comment
Share on other sites

  • 0

Well, C# is by definition Java done right :p

By your definition perhaps. Others would disagree.

But like someone else said: C# for Windows, Java for multi-platform apps.

If you don't wish to program on anything but Windows, sure, but if you ever want to escape that platform at some point in the future, then Java is a much better choice. Java means flexibility, C# means locked down to Windows.

Link to comment
Share on other sites

  • 0

If you don't wish to program on anything but Windows, sure, but if you ever want to escape that platform at some point in the future, then Java is a much better choice. Java means flexibility, C# means locked down to Windows.

Except that there's mono which works on Linux, Mac, and Windows.

Troll harder.

Link to comment
Share on other sites

  • 0

Performance wise, java has always seemed sluggish. C# has more possibilities, but of course for your standard app this isn't that relevant.

I think it's a misconception that Java is sluggish, kind of like "oh it used to be slow and probably still is". The fact is in most cases it is just as good speed wise as other languages.

As for the development of Java itself, it has been slow but JDK 7 is at developer preview stage and I believe expected to be released at some point this year.

Link to comment
Share on other sites

  • 0

Which language should I concentrate on?

1. Java

2. C#

I'd suggest neither. C++ is more robust than both those languages.

If he's doing consumer applications, there is no need to go with unsafe code.

Link to comment
Share on other sites

  • 0
As a language, C# is superior to Java in many ways: value types, events, real generics, properties, LINQ, type inference, lambdas, no Integer != int nonsense, and I could go on. But language awesomeness is rarely the sole factor: you need to look at what is more in demand, what pays best, etc.
Dynamic type binding, declarative SQL-style requests, functional programming, run-time generics support, user-defined value types, pointers and a unified type system are not exactly trivial differences.
Your language awesomeness is quite messy and unsafe, by definition. The whole point of using a higher level of abstraction in languages like the ones being discussed is to avoid the whole low-level mess, like pointers

(Portuguese proverb: blacksmith's house, wooden skewer)

! And anonymous functions / lambdas / functional programming have a good use... in purely functional languages, with no side-effects. As for the rest of your listing, I mostly follow you.

If he's doing consumer applications, there is no need to go with unsafe code.
Doing unsafe/stupid code is doing it wrong. Java has some pretty stupid **** by default, like IntegerCache.
Link to comment
Share on other sites

  • 0

Except that there's mono which works on Linux, Mac, and Windows.

Troll harder.

And what GUI toolkit are you going to use? Are you going to have to learn multiple API's? Windows Forms, GTK, and Cocoa, each with equality peculiar bindings? No thanks. I'll just use Java's built in Swing toolkit and no additional dependencies.

Link to comment
Share on other sites

  • 0
Ever heard of OpenGL? Well that works across all platforms, not just Microsoft ones like DirectX does. If you want to be tied to a single platform, then DirectX is your man ;)

You mean Windows, Mac and Linux? Out of these 3 only one is a significant game platform and it supports DirectX/XNA. Xbox 360 supports XNA and its own SDK (the "XDK"), PS3 has its own SDK as well (its OpenGL implementation is laughable).

Besides, you have OpenGL bindings for C# just like for every other language that exists. So I don't see what you're trying to argue here: C# allows you to target what platform you want and with what API you most like, with well-supported, up-to-date implementations. The only thing Java has is JOGL and that hasn't had a new stable release since 2008. I don't see how the fact that XNA wraps a COM-based API is a problem. It totally wraps it, you don't deal with COM writing code with XNA, XNA deals with it for you.

Link to comment
Share on other sites

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.