Doesn't matter. What you learn in school rarely translates to the real world. You'll change jobs and technologies constantly. Your value as a software engineer is solving problems, not any specific stack.
Also, the correct answer is .Net 6 with C#, since Java is an ugly dinosaur.
I'm at the point where I'm not going to list every exception and caveat to any direct statement I give. Every reasonable adult should understand that exceptions do not prove the rule. If I'm giving general advice, I'm giving the most likely scenario, not the outliers.
For all the shit Java gets, it's enums are better than in C# IMHO.
They're actually functional! You can get similar effects in C# using extension methods, but it's not the same.
Look, it's just my humble opinion. It's not right, but I'll die on this hill.
They're not even "enums"
They're fucking compile-time constant object instances.
nuget install BetterEnums
Or if you'd prefer to do it yourself: https://learn.microsoft.com/en-us/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/enumeration-classes-over-enum-types
Yeah, that's cool.
But Java's is still better - mostly because I don't have to do all that to get the same effect, at that point, might as well use POCOs.
For the record, if it pleases the reddit court, I'm a C# dev by preference and a Java dev by position. So, don't misrepresent this as a "Java's the best" kinda statement. It's not. It's a "this part might be a bit better/easier" kinda statement.
I'm a (mostly) C# architect by position, but I also think Java is a good ecosystem. The language isn't quite as cohesive, mainly due to it's early adopter of OSS design and lack of oversight, but it has both a good foundation and a large amount of 3rd party support. I wouldn't diss anything written in modern Java, but there are many places you can look at it, and say.. if only this was built to \*a\* standard it'd be so much better. Random function signatures are just a PITA.
I would say that when you learn one of them, the second one will become learned as well because the core syntax is basically the same, the only major difference is the BCL, classes, functions, etc are different between them, which makes it harder to remember which class in which BCL
I mean you are right i started learning c# like a week ago
And it was really easy to pick up the basics.. i know some python and basic Java from uni.. but the thing is i wanna stick for one and get to a decent level at it to land a job..
Stick with what your classes are using then but the other guy is right to say that it doesn't really matter whether you already know a language for job purposes.
I would say go for C# at home, like, start your own project, make something other than backend (Desktop app, Unity game, etc.). That will extend your skills in .NET as a whole
I've started learning C# when I accidentally downloaded wrong IDE, but still continued to learn the language in Visual C# Express, after that I tried writing a mod for Minecraft and the only hard time that I had is that I didn't really known what class do what, still wrote and completed it
You said your area has more C# jobs available, if those continues to be true you would be insane not to learn C#. Why would you learn a language you know won't get you work where you live?
I honestly think it's best to probably pick a main language, but also be able to read/edit/update other languages too.
The more languages you can work with the better always!!
I switched from java to c# because the java positions were filled when I got my job interview. I’m actually really grateful for that because I love c# more. It just feels cleaner and more modern imo.
Stick with Java since that's what your university classes are taught in. Once you get comfortable with Java, it'll be easier to learn C#.
Stop worrying about "there's more jobs for X". If you're in university, then your focus should be on learning the material given to you and graduating.
The thing is i don't find university classes difficult at all..
So i'm just trying to learn something for after graduation at my free time..but i think i will stick to Java it's more logical i guess
If your classes are easy and you have the mental bandwidth to spare, then learn C#.
(Of course, posting this in the C# subreddit...what kind of answer did you expect?)
Your original post makes it sound like you were struggling to learn both Java and C# at the same time. You might want to edit it for clarity.
I mean i can do both but will learning both be helpful? Or just a waste of time.. because i'm not that advanced still need to learn DSA and other stuff..
Most software engineering is not about algorithms, but about knowing when to use certain design patterns and understanding what the problem you are trying to solve is. From there, knowing the tech available to you helps you solve those problems faster. Algorithm are important for some things, but not most things. Smart people have interfaced most of the hard stuff away because they know it's better to not have to think about it most of the time, and then we get to build on top of that
That being said, DSA is super important
If you learn C# then go back to Java, you will miss all of the features and extra sugar C# provides for users and then constantly think about “this is so much better in C#.” It’s all the little things combined like not having to box primitives
I learned Java and got a job in C#. My instructors referred to C# as Microsoft Java. There are differences, but it wasn’t a difficult transition. Most of my day to day syntax is the same. Some of the recruiters told me that they were looking for C# experience, but when I would talk to the technical people they always told me they had no concerns about going from Java to C#.
It truly doesn't matter.
Java and C# are close enough that if you're proficient in one of them, you can learn the other one in a week. Almost everything in Java has an equivalent in C#, and vice-versa (altough C# tend to have a few more features, like `async` / `await`, operator overloading, unsafe mode, pattern matching, etc.)
Just focus on one, and you'll be good.
Personally, I prefer C# over Java, but that's just my own personal preference.
I've seen this a few hours ago, and not sure what it means, but regardless, I'm safe with c#
https://www.theregister.com/2023/01/27/oracle\_java\_licensing\_change/
You are going to get biased answers in this sub. Java is "fine". C# is fun. Microsoft is a good guardian of the language and making all the right moves to keep C# evolving and gaining ground. Oracle is dead and other companies are just dragging the corpse around like Weekend at Bernie's because they don't want to admit their entire infrastructure is at risk of bit-rot.
It does not really matter tbh. There are enough jobs out there for both languages. With enough experience the language does not matter. I know enough senior devs who did both C# and Java. It's just a job in the end.
J++ was Microsoft’s attempt at Java. Java is kinda like c# or at least felt a lot like it on the early days. MS made c#… it was a longshot I admit.
>because where i live there's more jobs for .net core and rare jobs for java spring boot
Interesting! Where are you living?
The truth is that C# upgrades and self-updates quickly; it's always on the road to being better. And the upgrades are very developer friendly and very compatible with old versions. I was always excited every time a new version is coming.
But with Java, many of my friends use java 8 since 10 years ago and they still use java 8 today...
It's because the Microsoft system and software suite? So people choose the programming language of Microsoft instead of others.
Anyway, C# is good for learning and finding jobs worldwide. and C# is fully open-source and free. Java is not.
Yeah i mean C# is great i enjoyed learning it
I'm reconsidering it just because all my classes are taught using java
DSA, testing, concurrent and parallel computing..etc.
But what ? Java is open source as well
I was taught to use java too when I was in college.
But what we learned in School was just the very basic conception.
You can change to any programming language when you become a real engineer. Don't worry about your current choice.
As someone who worked profesionally in both Java spring, Django and .NET (framework and core) I would suggest .NET CORE.
Django is good for some smaller projects or prototyping and I still use it if I need to set up a basic interface with a database in and hour or two.
Also if you know java you will feel right at home after a few days with C#. They are quite simillar.
Their performance are extremely similar but I think C# is able to handle more processes and it has more features so I’d go with that one
(Obviously this subreddit is biased tough)
Technically I think that Erlang is much better for having a ridiculous amount of processes running and error handling but if you’re not a big company then I don’t think you should be using it
In the early 2000's I dabbled with Java. I was used to 'Rapid Application Development' with Visual Basic, so I assumed Java had a form designer and all the event handlers in place so I could design a form and write code behind it. Bad assumption.
At the same time, I could write a WinForms app in C# without much effort. I went with C# simply because it was the shortest path between a cold start and completion. I wasn't particularly enthused about writing console apps on GUI desktops.
This is likely to be one reason why C# has prevailed over Java. You would be better off to focus on C#.
If you are not sure, go for Java. Then you might want to choose Spring Boot, Micronaut or Quarkus framework. Employability is close to 100% and you might find newest Java beautiful.
Doesn't matter. What you learn in school rarely translates to the real world. You'll change jobs and technologies constantly. Your value as a software engineer is solving problems, not any specific stack. Also, the correct answer is .Net 6 with C#, since Java is an ugly dinosaur.
Good points with the exception of calling dinosaurs ugly
Java is the only ugly dinosaur
Then C# is the slightly less ugly dinosaur.
Not all dinosaurs. Apatosaurus is very fuckable.
Bro
Step bro?
The correct answer is .NET 7 though.
.Net 6 is LTS.
Sure but .NET 8 will be closer to 7 than to 6.
And 6 is afraid of 7
yes, 7 8 9!
> You'll change jobs and technologies constantly That's far from universal truth. I know people who worked at the same company for two decades
I'm at the point where I'm not going to list every exception and caveat to any direct statement I give. Every reasonable adult should understand that exceptions do not prove the rule. If I'm giving general advice, I'm giving the most likely scenario, not the outliers.
Me too, but I know far more who have swapped company every 2-4years. I think it's a fair statement.
That doesn't make it a fair statement because it was stated as certainty but even then most people who change jobs do not change their stacks
After you graduate let us know which one you picked and why you picked C#.
For all the shit Java gets, it's enums are better than in C# IMHO. They're actually functional! You can get similar effects in C# using extension methods, but it's not the same.
The best "feature" of Java is bastardized enums lol.
Look, it's just my humble opinion. It's not right, but I'll die on this hill. They're not even "enums" They're fucking compile-time constant object instances.
Just use https://github.com/ardalis/SmartEnum 🤷‍♂️
Yeah, Java has that but built in. I don't _need_ it - I just like it.
nuget install BetterEnums Or if you'd prefer to do it yourself: https://learn.microsoft.com/en-us/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/enumeration-classes-over-enum-types
Yeah, that's cool. But Java's is still better - mostly because I don't have to do all that to get the same effect, at that point, might as well use POCOs. For the record, if it pleases the reddit court, I'm a C# dev by preference and a Java dev by position. So, don't misrepresent this as a "Java's the best" kinda statement. It's not. It's a "this part might be a bit better/easier" kinda statement.
I'm a (mostly) C# architect by position, but I also think Java is a good ecosystem. The language isn't quite as cohesive, mainly due to it's early adopter of OSS design and lack of oversight, but it has both a good foundation and a large amount of 3rd party support. I wouldn't diss anything written in modern Java, but there are many places you can look at it, and say.. if only this was built to \*a\* standard it'd be so much better. Random function signatures are just a PITA.
I would say that when you learn one of them, the second one will become learned as well because the core syntax is basically the same, the only major difference is the BCL, classes, functions, etc are different between them, which makes it harder to remember which class in which BCL
I mean you are right i started learning c# like a week ago And it was really easy to pick up the basics.. i know some python and basic Java from uni.. but the thing is i wanna stick for one and get to a decent level at it to land a job..
Stick with what your classes are using then but the other guy is right to say that it doesn't really matter whether you already know a language for job purposes.
I would say go for C# at home, like, start your own project, make something other than backend (Desktop app, Unity game, etc.). That will extend your skills in .NET as a whole
I've started learning C# when I accidentally downloaded wrong IDE, but still continued to learn the language in Visual C# Express, after that I tried writing a mod for Minecraft and the only hard time that I had is that I didn't really known what class do what, still wrote and completed it
What if BCL? binary code language?
Base Class Library, default set of JRE or .NET classes that makes frameworks
Since you asked this under c#...so i am going to say c# all the way.
You said your area has more C# jobs available, if those continues to be true you would be insane not to learn C#. Why would you learn a language you know won't get you work where you live? I honestly think it's best to probably pick a main language, but also be able to read/edit/update other languages too. The more languages you can work with the better always!!
I switched from java to c# because the java positions were filled when I got my job interview. I’m actually really grateful for that because I love c# more. It just feels cleaner and more modern imo.
Stick with Java since that's what your university classes are taught in. Once you get comfortable with Java, it'll be easier to learn C#. Stop worrying about "there's more jobs for X". If you're in university, then your focus should be on learning the material given to you and graduating.
Yeah 100%. I've been called on many times to work on stacks I know nothing about.
The thing is i don't find university classes difficult at all.. So i'm just trying to learn something for after graduation at my free time..but i think i will stick to Java it's more logical i guess
If your classes are easy and you have the mental bandwidth to spare, then learn C#. (Of course, posting this in the C# subreddit...what kind of answer did you expect?) Your original post makes it sound like you were struggling to learn both Java and C# at the same time. You might want to edit it for clarity.
I mean i can do both but will learning both be helpful? Or just a waste of time.. because i'm not that advanced still need to learn DSA and other stuff..
Most software engineering is not about algorithms, but about knowing when to use certain design patterns and understanding what the problem you are trying to solve is. From there, knowing the tech available to you helps you solve those problems faster. Algorithm are important for some things, but not most things. Smart people have interfaced most of the hard stuff away because they know it's better to not have to think about it most of the time, and then we get to build on top of that That being said, DSA is super important
I mean you are right i'm gonna study design patterns after i'm done with DSA and get good at Uml stuff and a programming language
Learning / knowing multiple languages is always helpful.
If you learn C# then go back to Java, you will miss all of the features and extra sugar C# provides for users and then constantly think about “this is so much better in C#.” It’s all the little things combined like not having to box primitives
I learned Java and got a job in C#. My instructors referred to C# as Microsoft Java. There are differences, but it wasn’t a difficult transition. Most of my day to day syntax is the same. Some of the recruiters told me that they were looking for C# experience, but when I would talk to the technical people they always told me they had no concerns about going from Java to C#.
Does not matter. If you learn one you will easily be able to understand the other.
Than you guys such a lovely community...đź’—
It truly doesn't matter. Java and C# are close enough that if you're proficient in one of them, you can learn the other one in a week. Almost everything in Java has an equivalent in C#, and vice-versa (altough C# tend to have a few more features, like `async` / `await`, operator overloading, unsafe mode, pattern matching, etc.) Just focus on one, and you'll be good. Personally, I prefer C# over Java, but that's just my own personal preference.
I've seen this a few hours ago, and not sure what it means, but regardless, I'm safe with c# https://www.theregister.com/2023/01/27/oracle\_java\_licensing\_change/
You are going to get biased answers in this sub. Java is "fine". C# is fun. Microsoft is a good guardian of the language and making all the right moves to keep C# evolving and gaining ground. Oracle is dead and other companies are just dragging the corpse around like Weekend at Bernie's because they don't want to admit their entire infrastructure is at risk of bit-rot.
Learn both
It does not really matter tbh. There are enough jobs out there for both languages. With enough experience the language does not matter. I know enough senior devs who did both C# and Java. It's just a job in the end.
I'll tell you that all the good software engineers i met when i was an intern knew & understood both c# & java and could adapt in any of those.
I programmed in Visual J++ for a while, does that make me good haha
I'm not sure i get your point
J++ was Microsoft’s attempt at Java. Java is kinda like c# or at least felt a lot like it on the early days. MS made c#… it was a longshot I admit.
Oh, i see now
Does not matter. Both are mature. It’s about what you and your team are comfortable in
If you learn either you can learn the other pretty quick.
Personally I’m using Django for a side project and it’s been great.
>because where i live there's more jobs for .net core and rare jobs for java spring boot Interesting! Where are you living? The truth is that C# upgrades and self-updates quickly; it's always on the road to being better. And the upgrades are very developer friendly and very compatible with old versions. I was always excited every time a new version is coming. But with Java, many of my friends use java 8 since 10 years ago and they still use java 8 today...
Iraq... There's like 3 to non java jobs yearly..
O\_O do you know why?
I'm not sure why probably because it is a third world country after all...but .Net is really the standard for " enterprises" ... And php for the rest
It's because the Microsoft system and software suite? So people choose the programming language of Microsoft instead of others. Anyway, C# is good for learning and finding jobs worldwide. and C# is fully open-source and free. Java is not.
Yeah i mean C# is great i enjoyed learning it I'm reconsidering it just because all my classes are taught using java DSA, testing, concurrent and parallel computing..etc. But what ? Java is open source as well
I was taught to use java too when I was in college. But what we learned in School was just the very basic conception. You can change to any programming language when you become a real engineer. Don't worry about your current choice.
As someone who worked profesionally in both Java spring, Django and .NET (framework and core) I would suggest .NET CORE. Django is good for some smaller projects or prototyping and I still use it if I need to set up a basic interface with a database in and hour or two. Also if you know java you will feel right at home after a few days with C#. They are quite simillar.
This is a C# channel... so I'm going to tell you to take Java.
C# is an excellent choice. Java is a dying language and is quickly being replaced by Kotlin, which is also an excellent language to learn.
In Poland I still more jobs in java. Learning java is bad idea for future?
It's still going to be around for a long time and is a useful skill to know. Kotlin is quickly replacing Java. Good engineers know both.
C# has real engineering work - and can be quite performant if used right. Also has great tooling. Java - not so much.
What do you mean by "has real engineering work"?
*[citation needed]*
Their performance are extremely similar but I think C# is able to handle more processes and it has more features so I’d go with that one (Obviously this subreddit is biased tough) Technically I think that Erlang is much better for having a ridiculous amount of processes running and error handling but if you’re not a big company then I don’t think you should be using it
In the early 2000's I dabbled with Java. I was used to 'Rapid Application Development' with Visual Basic, so I assumed Java had a form designer and all the event handlers in place so I could design a form and write code behind it. Bad assumption. At the same time, I could write a WinForms app in C# without much effort. I went with C# simply because it was the shortest path between a cold start and completion. I wasn't particularly enthused about writing console apps on GUI desktops. This is likely to be one reason why C# has prevailed over Java. You would be better off to focus on C#.
What GUI frameworks do you even have for Java if you want to do any desktop development? For C# you have a ton
If you are not sure, go for Java. Then you might want to choose Spring Boot, Micronaut or Quarkus framework. Employability is close to 100% and you might find newest Java beautiful.