• 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
https://www.neowin.net/forum/topic/982324-java-vs-c/
Share on other sites

Recommended Posts

  • 0

I would suggest mastering both if you want to be marketable. I'm sure someone already said that but I know that at my University, we learned and used Java for 3 years of study - even wrote a Java OpenGL Quake3 .bsp level rendering engine using Jogl. We of course put to practical use C, C++, x86 ASM etc... but Java was the core. I took 1 semester of a C# seminar which I believe at the time was new for framework 1.1 :)

Once I got into the professional development field (again, retrained old COBOL hacker), C# and .NET/MSSQL were all over the place with the occasional sprinkling of Java opportunities.

  • 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.

This. If you don't think LINQ is very special, you're wrong. Simple as that ;)

  • 0

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

Unsafe? LOL. It's not going to blow up your CPU. Seriously, processes are isolated. The worst that can happen is the application crashes. The exact same thing that happens in C#, except that the dotnet framework pops up with a message box telling the customer something technical that he'll never understand. Yes I know you're talking about memory managed code, but the implication that C++/C is not appropriate for consumer code is ludicrous

  • 0
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 !
It allows high-performance applications like Paint.Net to be written entirely in C#, instead of having to write the high-performance bits in C like you'd have to do in Java or Python. Pointers are only available in methods marked as unsafe and are not required for most applications: they're available where and when strictly necessary, nothing else.
And anonymous functions / lambdas / functional programming have a good use... in purely functional languages, with no side-effects.
In C# it allows you to write much more compact and legible code, which makes passing functions as parameters a more common pattern. This is also the case in Python, Ruby, and now C++, none of which require function purity.
  • 0

Unsafe? LOL. It's not going to blow up your CPU. Seriously, processes are isolated. The worst that can happen is the application crashes. The exact same thing that happens in C#, except that the dotnet framework pops up with a message box telling the customer something technical that he'll never understand. Yes I know you're talking about memory managed code, but the implication that C++/C is not appropriate for consumer code is ludicrous

I didn't say it is inappropriate, just, unneeded. If I'm doing some app for a restaurant, or a hotel, or some desktop app that doesn't do heavy things (Crysis-grade heavy things), there is really no need to mess with memory allocation and similar stuff.

  • 0

And ECMA/JavaScript... And I don't agree with that it is being done.

So you'd rather write:

var itemsIWant = new List<Item>();
foreach(var item in SourceOfItems) {
    if (item.SomeProperty < 1337) {
        itemsIWant.Add(item);
    }
}

than

var itemsIWant = SourceOfItems.Where(i => i.SomeProperty < 1337);

?? So what if the lambda doesn't have to be pure?

In C++ in particular I think this is huge. STL algorithms (in particular for_each) are underused because you have to write a freakin entire class (functor) every time: lambdas make them so much more practical.

  • 0

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.

Not just JOGL, don't forget LWJGL (Lightweight Java Gaming Library) and that has been updated as recently as a few weeks ago. It's what Minecraft uses (not a fantastic looking example of a use of it but still). I'm also certain there are other libraries out there as well.

Edit: Just wanted to say this conversation has been extremely interesting so far and it is good to hear both sides (even better if everyone can refrain from not calling each other a troll heh). I think both languages have both their advantages and disadvantages and it is always good to look at these.

  • 0

Not just JOGL, don't forget LWJGL (Lightweight Java Gaming Library) and that has been updated as recently as a few weeks ago. It's what Minecraft uses (not a fantastic looking example of a use of it but still).

LWJGL does look good, thanks for the notice.
I'm also certain there are other libraries out there as well.
And I'm certain there's nothing as nice as XNA. :laugh:
  • 0

I have a pretty crappy laptop, but am I able to play source engine games (although less than optimal fps), I tried playing minecraft on it. I got 2 fps max.

That has nothing to do with Java and probably not with LWJGL either. You're certainly on integrated graphics and chances are it's not even supported. The Source Engine was made to be highly scalable, not Minecraft. Even though it does apparently nothing remarquable graphically, it might still be doing too much for your gpu, because it was simply not designed to scale to such low-end hardware. Check out this, seems like lots of good advice to increase that game's performance on crappy laptops.

Java's performance is very, very good. Back on topic.

  • 0

Been a developer for around 10 years now and I think I have reached senior level. I am sure there are many developers here with more experience than I do.

Here is my 2c worth.

Get your programming fundamental and logic right. Choice of language you use is nothing more than syntex change.

  • 0

LWJGL does look good, thanks for the notice.

And I'm certain there's nothing as nice as XNA. :laugh:

I'm inclined to agree with you re: XNA... for a project I'm making a game engine and it was a decision between Java (and LWJGL) or C# and XNA. XNA looks just fantastic and infact I only chose Java because it would have been more challenging to use for this project (that and I have more experience with Java).

I have a pretty crappy laptop, but am I able to play source engine games (although less than optimal fps), I tried playing minecraft on it. I got 2 fps max.

Don't take my word for it, but I believe all the hard work in Minecraft is done by the CPU and not the GPU (for whatever reason) and that could be the reason for the low fps.

  • 0

Been a developer for around 10 years now and I think I have reached senior level. I am sure there are many developers here with more experience than I do.

Here is my 2c worth.

Get your programming fundamental and logic right. Choice of language you use is nothing more than syntex change.

I partially agree. I've been doing this since I was very young, and I'm a Software Architect now. i would say the best advice is be awesome, and know the core development concepts down hardcore. Get to the point that you can pick up a language quickly. Once I was extremely strong in OOP fundamentals, I was able to pick up any language very quickly. For example, I started writing Ruby scripts after like 30 minutes of reading documentation, when I needed to use it a couple of months ago. With that said, pick a language that you like the best and BE AWESOME AT IT. Understand the standard library that comes with the language inside and out. Learn all the cool tricks that make you a more experienced programmer, like how to think with performance in mind, or how to write very testable code.

I personally love .NET. C# just keeps getting better and better. We did a lot of Java in my CS classes too, and I am quite good with that as well. Learn everything, that's what I do. Lastly, take a job because it interests you, not because it pays well. If you love Java and are writing C#, at the end of a 50 hour week you're going to hate your job. I love C#, I work at a great company, and I love coming in to my job everyday.

  • 0

That has nothing to do with Java and probably not with LWJGL either. You're certainly on integrated graphics and chances are it's not even supported. The Source Engine was made to be highly scalable, not Minecraft. Even though it does apparently nothing remarquable graphically, it might still be doing too much for your gpu, because it was simply not designed to scale to such low-end hardware. Check out this, seems like lots of good advice to increase that game's performance on crappy laptops.

Java's performance is very, very good. Back on topic.

Even on my desktop Minecraft makes my GPU work much harder. The temps I get playing minecraft are higher than any other game. Java is just not a language for 3d graphics...

  • 0
I love C#, I work at a great company, and I love coming in to my job everyday.
That's nice. I hope I'll be able to say as much after I finish uni.
Even on my desktop Minecraft makes my GPU work much harder. The temps I get playing minecraft are higher than any other game. Java is just not a language for 3d graphics...
Well then it's sloppily coded. Shader code executes at the same speed regardless of what language you use to put it on the GPU, and Java is compiled to (eventually) highly optimized native code just like C++. You can't judge a language's speed by one app's performance. Crysis was written in C++...
  • 0

I just want to point out my personal experience:

I graduated as a computer engineer. First 2 years, it was all about assembly language projects, and C, then we moved to C++ for projects and then Java on the last year for networking and visual oriented projects.

I was already doing asp + sql server 2000 projects as a part time job while studying on my second year in uni, so I started with .net in commercial world on my last year, and it's been 8.5 years since then. Now I am a technical lead for a multinational company developing products.

I can tell you that if you're a senior .net developer, you'll earn a nice amount of money. But I'm sure that's also the same for java. The thing is, even if you choose the best language out there, everything depends on your capability and skills as a technical person.

Get the core concepts well, study the best practices, care about the things you develop. If you are good developer, you'll make lots of money anywhere. If you are not good enough at what you do, you'll be left behind wherever you go. It's not just development skills either. Soft skills start getting important after a certain point too.

Just to answer your question, I would recommend .Net over Java, not because of technical capability differences, but because from my own experience, the recruiters here in Australia are posting more positions for .Net than in Java (this is totally subjective opinion, it might be different who knows).

And yes I cannot imagine a life without Linq.

  • 0

I just want to point out my personal experience:

I graduated as a computer engineer. First 2 years, it was all about assembly language projects, and C, then we moved to C++ for projects and then Java on the last year for networking and visual oriented projects.

I was already doing asp + sql server 2000 projects as a part time job while studying on my second year in uni, so I started with .net in commercial world on my last year, and it's been 8.5 years since then. Now I am a technical lead for a multinational company developing products.

I can tell you that if you're a senior .net developer, you'll earn a nice amount of money. But I'm sure that's also the same for java. The thing is, even if you choose the best language out there, everything depends on you capability and skills as a technical person.

My personal experience was similar but a bit different, first and second year was mostly all C++ and third year was C and fourth year you could pick the language (as long as the professor was ok with it) and most people would usually go for C/C++ (I did)

When I was done school I moved to Ottawa to find a job here and I ended up working with Java (was pretty easy to pick up :/) doing webapps :x. I really wish the government wasn't pushing so hard to convert all their in-house applications to web apps, looking back I kinda wish I had found a job somewhere else

  • 0

Thanks for all the replies guys. It helped me out a lot. I am wondering if I do get certified in Java (only because I already started studying for the certification) how hard it would be to then get certified in C#? Are the languages similar? I started reading the basics of C# and so far it is very similar to Java.

  • 0

Thanks for all the replies guys. It helped me out a lot. I am wondering if I do get certified in Java (only because I already started studying for the certification) how hard it would be to then get certified in C#? Are the languages similar? I started reading the basics of C# and so far it is very similar to Java.

Whatever you choose, most likely you'll go all the way with that technology. Sadly, after a while it gets quite hard to follow everything at the same time to keep yourself up to date. Just to give you a basic example, although I am entirely focused on .Net, C# and SQL Server technologies, just in the last 2 years, I had to update myself to .Net 3.5/.Net 4/Silverlight 3 and Silverlight 4, RIA Services, SQL Server 2008, SQL Azure, Azure AppFabric etc etc.

So in the long run, just the language itself doesn't mean you'll have a safe career.

Also I am not entirely sure that you should be focusing on certifications this much. On network engineering and similar fields I think it means a lot but in the developer's area, it's not, especially not for Microsoft. Get them if you want to learn the language, not to get a job. I never got any certifications and it was never mentioned. I am currently the tech lead of a development team (I've been senior dev and team leader before in different companies). We have two main architects and they don't have any certifications (I don't know anyone else knowing so much about software compared to them). Our IT manager (very technical) has no certifications.

As I said, this is mainly the case for Microsoft technologies.

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

    • No registered users viewing this page.
  • Posts

    • I haven't paid for windows since windows 8. So I guess I would be happy to pay for a new version if it meant seeing fewer adverts (none) or product pushes. But that applies to _any_ service or OS.
    • Save 35% on Sony's SS-CS5M2 3-way high-res bookshelf speakers by Taras Buria Sony is currently offering a big discount on its SS-CS5M2 bookshelf speaker, saving you 35% on a set of high-quality audio equipment. The SS-CS5M2 is a passive 3-way bookshelf speaker with a 5.12-inch woofer, a 25 mm soft-dome tweeter, and a 19 mm super tweeter. This design allows different drivers to handle different parts of the sound spectrum for a clearer, more detailed audio when watching movies or listening to music. The compact cabinet size allows you to place these speakers on shelves, desks, or stands, making them a practical choice for apartments, bedrooms, and small living rooms. Despite its compact size, the SS-CS5M2 delivers up to 100 W of power. Note that since the speakers are passive, you will need an amplifier to drive them. However, if you do, you can use them for high-resolution music, thanks to a claimed frequency response of 53 Hz - 50 kHz. It is able to extend so far high in the spectrum as a result of those super tweeters. While they will work with most amplifiers and AV receivers, Sony says this pair is a perfect match for its AV receivers, such as STRDH190, 590, 790, or 1000. Sony CS Bookshelf Speakers SS-CS5M2 3-Way 3-Driver Hi-res - $178 | 36% off on Amazon US This Amazon deal is US-specific and not available in other regions unless specified. This is a first-party seller link (at the time of article publishing); ensure that you also purchase from a first-party seller link only. If you don't like it or want to look at more options, check out the previous deals that we have covered, OR you can also visit Amazon US deals page. Get Prime (SNAP), Prime Video, Audible Plus or Kindle / Music Unlimited. Free for 30 days. As an Amazon Associate, we earn from qualifying purchases.
    • So they somehow expect Apple to easily make it so that if I install say DeepSeek that DS can then handle all the tasks that Siri would be doing while integrated in the OS? That sounds like just rediculous.
    • For ray-tracing, the Radeon RX 9070 XT is better than the GeForce RTX 5070, but worse than the GeForce RTX 5070 Ti The Radeon RX 9070 XT is similar to the GeForce RTX 5070 Ti in rasterization Both AMD and NVIDIA have had serious issues with drivers in the past, so I can't say that one is better or worse than the other. Yes. AMD has better support Linux than does NVIDIA. Use Display Driver Uninstaller (DDU) to uninstall NVIDIA's drivers before installing AMD's drivers. That's up to you. Supplies of memory is unpredictable because AI using up a lot of memory. As a result, there is a lot of volatility in video card prices.
  • Recent Achievements

    • One Month Later
      pinnclepd earned a badge
      One Month Later
    • First Post
      X-No-file earned a badge
      First Post
    • One Month Later
      johnjacobb40 earned a badge
      One Month Later
    • One Year In
      Primer1st earned a badge
      One Year In
    • Experienced
      JayZJay went up a rank
      Experienced
  • Popular Contributors

    1. 1
      +primortal
      510
    2. 2
      PsYcHoKiLLa
      215
    3. 3
      +Edouard
      145
    4. 4
      Steven P.
      88
    5. 5
      ATLien_0
      83
  • Tell a friend

    Love Neowin? Tell a friend!