• 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

    • Microsoft wants to end printer driver headaches with Windows Ready Print by Usama Jawad A few days ago, Microsoft released Windows 11 Experimental build 26300.8553, bringing a ton of enhancements such as Start menu customization, search improvements, Taskbar polish, and other minor UI tweaks. Another relatively major enhancement snuck deep within the change log was related to upgrades to the Windows printing experience. Now, Microsoft has shared more details about these benefits. For starters, Microsoft has renamed its Modern Print Platform to Windows Ready Print. The company believes that this name highlights its shift in strategy, which now focuses on modernizing, securing, and streamlining the printing experience for Windows devices. Some of the upgrades present in Windows Ready Print have already been seeded to customers and partners. This includes ending support for third-party printer drivers via Windows Update and transitioning towards the Internet Printing Protocol (IPP) and the native Windows IPP printer driver. In line with these changes, new printer installations will default to Windows Ready Print on eligible devices starting from July 2026. However, Microsoft recognizes that not all environments will be able to migrate to this platform immediately, so it will allow users to choose between installing the printer via Windows Ready Print or the traditional OEM process. Users will be able to toggle this configuration through Settings > Bluetooth & Devices > Printers & Scanners > Printer preferences. This control applies only to new printer installations, and its functionality can also be modified via Group Policy as follows: Launch Group Policy Editor Navigate to Local Computer Policy -> Administrative Templates -> Printers Find and select 'Configure Windows Ready Print driver ranking' -> double click to open it Select 'Enabled' (if you wish to enable Windows Ready Print driver selection) or 'Disabled' (if you wish to explicitly disable Windows Ready Print driver selection). Select Apply Select OK Similarly, if you set up Windows protected print mode through the same setting in Windows 11, it will also default to using Windows Ready Print exclusively. Microsoft hopes that these improvements will help eradicate dependency on OEM-specific driver installation processes and simplify printer installations. We'll likely find out more about other tangible benefits in the coming months.
    • Hey what's about the proton vpn firefox extension ? It's not working today
    • On what though? Not Ray Tracing.
    • Agreed, but now my muscle memory immediately creates a layer for each text portion, so editing is made a little easier.
    • Happy for him, it is one of the first apps I install on a new Windows machine, been using it for years!
  • Recent Achievements

    • One Year In
      Primer1st earned a badge
      One Year In
    • Experienced
      JayZJay went up a rank
      Experienced
    • Reacting Well
      Sir_Timbit earned a badge
      Reacting Well
    • Week One Done
      rubentuben8 earned a badge
      Week One Done
    • Week One Done
      ARaclen earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      514
    2. 2
      PsYcHoKiLLa
      229
    3. 3
      Edouard
      137
    4. 4
      ATLien_0
      87
    5. 5
      Steven P.
      81
  • Tell a friend

    Love Neowin? Tell a friend!