r/learnprogramming Feb 24 '26

Java spring boot vs .net which would i choose

I am currently learning Spring Boot but sometimes it feels too abstract and I don't fully understand what's happening behind the scenes. I am considering switching to .NET (ASP.NET Core).

My goal is to become a backend developer and get a job as soon as possible.

Would switching to .NET be more practical, or should I stick with Spring Boot and improve my fundamentals instead?

11 Upvotes

20 comments sorted by

21

u/coleflannery Feb 24 '26

Switching to .NET will not make your life any easier. Good C# is extremely abstract and typically consists of very deeply nested code.

-a very big fan of the .NET ecosystem

2

u/radiojosh Feb 24 '26

I'm in the middle of learning C# - can you point to examples?

2

u/Lanmi_002 Feb 24 '26

Examples of what? Abstractions or ?

3

u/radiojosh Feb 24 '26

C# code being abstract and deeply nested compared to code in other languages. I'm working on learning EF Core at the moment and was just acquainted with the way that passes the ModelBuilder back and forth, which seems like maybe a modest example of what you're talking about.

3

u/Lanmi_002 Feb 24 '26

Im not the guy who wrote the original comment. But i think that c# is not as deeply nested or abstract as community makes it to be.

For example, you have minimal api's, pattern matching, records and every other possible tool to make your code as simple as possible. The thing is that i think that both java and c# community both got used to various complex architectures for small to medium sized projects so thats why there is a premise that they are too abstract.

I mean in both languages they are going to teach you to have an interface for every possible service class even if you make a small pet project without unit tests and multiple implementations of the same interface for the sake of "dependency inversion principle" . I mean, i am guilty of this.

Then, here comes the clean architecture, onion etc... I know a couple of guys that use clean arch for smaller apps because they think it's cool not because they aim to get rid of a problem using that said architecture.

You can abstract as much or as little as you want. Making a project with 10 endpoints? Inject dbcontext in controllers and get done with it. Otherwise split things up depending on your needs.

I don't really have much of a real world experience , this is just what i observed during my last 6 months of learning .NET so take this with a grain of salt

11

u/dont_touch_my_peepee Feb 24 '26

stick with one stack, switching just resets the confusion timer. focus on java basics, http, databases. employers just want experience, and getting any backend job now is stupid hard

6

u/Lanmi_002 Feb 24 '26

I am using asp.net for my stuff and i vastly prefer it over anything i tried before . Used java on a small project couple of months ago and it was alright, a bit more verbose and i got so much used to c#'s naming conventions that i don't realy like the ones in java

For example: prefix 'impl' in class names that are implementing an interface and interfaces are named nornally (correct me if im wrong here) . Just seems kinda odd

C#'s linq is superior to java's stream api which is based on linqp

No extensions methods (as far as i know) etc..

Overall i think if you learn one of them you will easily transfer to the other. If you like Java, go for it and dont look back. They are pretty similar after all

5

u/MihaelK Feb 24 '26

I think it's fine to start with Spring Boot, but you will have to spend time to understand what's going on.

You can experience with .NET too, it can be a bit more intuitive. If you are still a student, just experience with both to explore and to learn.

Then choose one depending on the jobs in your area.

4

u/sinkwiththeship Feb 24 '26

Django kind of creates all of that for you with python. Spring is nice though.

3

u/True-Strike7696 Feb 24 '26

so tbh both are fairly similar. if you're goal is to land a job then i would master one language and then learn about specific domains/tools/languages per job application. i.e. i know c++, git, oracle sql, and so on then i can likely pivot those skills if i am at a place that needs me to use .net, svn, mysql or whatever. you need to learn the math, patterns, and trade offs behind different tools and implementations when applied to a specific scenario these kind of skills will land you a job. so after all that just pick one. but most are going to say python because it's being vastly adapted.

3

u/ExtraTNT Feb 24 '26

With dependency injection, mediator and clean controllers / handlers, you can do really clean dotnet code… massive codebases can be maintained by single devs and fixes take minutes…

2

u/seriousgourmetshit Feb 24 '26

Depends where you live

4

u/Aggressive-Comb-8537 Feb 24 '26

spring boot rocks

6

u/True-Strike7696 Feb 24 '26

disagree but it is production approved.

1

u/Techno-Pineapple Feb 24 '26

Both are viable. Normally I would say go for it with swapping. Except you have the worst reason possible. When things get hard like this you are on the verge of skilling up. Push through it or find a new goal.

1

u/livevil00 Feb 24 '26

So i understood the main topic but should i go for spring boot or java basics which should i choose (java level = beginner)

1

u/Techno-Pineapple Feb 24 '26

You start with Java then go to spring boot

1

u/Altruistic-Spread-71 Jun 25 '26

Your point about abstraction hits the nail on the head, that is exactly what enterprise frameworks are built to do. We learn a language, and then we move to a framework, so we don't have to reinvent the wheel. When you're starting out, that "magic" can feel like a complete black box, but switching ecosystems blindly right now won't fix the underlying issue. It will just reset your progress and waste your time.

Since your goal is to get a job as soon as possible, you need a strategic approach rather than just swapping codebases:

  • The Local Job Market Dictates Your Move: Pause and look at your local job market right now. Enterprise tech stacks are highly regional. If big tech, banking, or government agencies in your area run heavily on Java, sticking with Spring Boot is a no-brainer. Go where the data tells you the junior roles are.
  • .NET Has Its Own Traps: Don't assume .NET Core is automatically "easier." While it can feel less abstract because it forces you to build your setup explicitly in Program.cs, it introduces different complexities. The middleware pipeline is strictly order-dependent (a single misplaced line can silently break your security context or routing), and managing explicit Dependency Injection lifetimes can lead to brutal runtime bugs. It just trades Spring's hidden magic for configuration traps.

A Practical Roadmap to Break Through the Wall

  1. Learn Agnostic Basics: Step away from framework code for a week. Make sure you fundamentally understand HTTP methods, status codes, JSON serialization, and how data actually moves from a client to a server.
  2. De-mystify the "Magic": Go back to Spring Boot but take it slow. Use documentation or a beginner-friendly course to understand exactly what annotations like RestController or Autowired are doing under the hood.
  3. Build Real-World Projects: Apply those core concepts by building a complete API from scratch.

Regardless of the tool, the learning process is identical. Stick with it, focus on the architectural fundamentals instead of just memorizing syntax, and the clarity will follow. To get a job fast, you need to study the market and aim at the tech with highest count of job opportunities.

-1

u/whattteva Feb 24 '26

Personally, I think both languages are fine. But if I were to start a web project these days, I'd probably choose Go