Im in spring boot and absolutely loving it. My pov on this is europe has more spring boot usa has more python. I could be wrong but thats what i see from job postings Answer from Solid-Mix-5174 on reddit.com
🌐
Reddit
reddit.com › r/backend › confused between learning java spring boot or python fastapi for backend
r/Backend on Reddit: Confused between learning Java Spring Boot or Python FastAPI for backend
November 1, 2025 -

Hey everyone,

I’m currently in the middle of my 4th year of engineering and trying to decide which backend technology to focus on — Java Spring Boot or Python FastAPI. I’ve been doing mobile app development (Flutter) for quite some time, but since most startups use Flutter and the pay isn’t that great, I want to explore backend development for better opportunities.

Here’s my situation and confusion 👇

  1. Java Spring Boot seems tougher to learn than Python FastAPI.

  2. However, most MNCs and enterprise companies use Spring Boot.

  3. With AI and ML booming, many modern companies are starting to adopt FastAPI because of Python’s ecosystem.

  4. I’ve already bought a paid Spring Boot course (worth ₹8,000) that covers backend from 0→1 (8 weeks) and 1→100 (9 weeks).

  5. I also found a free 12-hour FastAPI course on YouTube that looks great.

  6. My placement season is ongoing, so I don’t have unlimited time.

  7. I have strong frontend (Flutter) skills but very little backend experience.

  8. I feel getting placed in startups is easier, but the pay is lower compared to MNCs.

  9. The main reason I’m pausing Flutter is that it’s used mostly by startups and the compensation isn’t very attractive.

Given all this, I’m really confused — 👉 Should I go with Java + Spring Boot (for better placement options and MNC exposure)? 👉 Or with Python + FastAPI (for faster learning and alignment with AI/startup ecosystem)?

I’d love to hear from people who’ve been in similar situations or are working in backend roles — Which one should I choose and why, given my current context (final year + Flutter background + placements)?

🌐
Reddit
reddit.com › r/softwarearchitecture › fastapi vs springboot
r/softwarearchitecture on Reddit: FastAPI vs Springboot
November 20, 2025 -

I'm working at a company where most systems are developed using FastAPI, with some others built on Java Spring Boot. The main reason for using FastAPI is that the consultancy responsible for many of these projects always chooses it.

Recently, the coordinator asked me to evaluate whether we should continue with FastAPI or move to Spring Boot for all new projects. I don't have experience with FastAPI or Python in the context of microservices, APIs, etc.

I don't want to jump to conclusions, but it seems to me that FastAPI is not as widely adopted in the industry compared to Spring Boot.

Do you have any thoughts on this? If you could choose between FastAPI and Spring Boot, which one would you pick and why?

🌐
Reddit
reddit.com › r/python › fastapi vs spring boot
FastAPI vs Spring Boot : r/Python
September 11, 2024 - Speaking as someone responsible for recruiting for the team, the killer feature(s) of Spring Boot is that there is a deep pool of developers; mature integrations to just about any service of note and the availability of learning resources. My current project is using FastAPI and it's very good, but the ecosystem is not at the same level as Spring and suffers from the typical Python development issue of managing dependencies when you're working across teams.
🌐
Reddit
reddit.com › r/cscareerquestionseu › fastapi vs springboot?
r/cscareerquestionsEU on Reddit: FastAPI vs Springboot?
September 24, 2024 -

I have recently worked a bit with both FastAPI and Springboot, Now could not decide which one I should learn . In this era of AI\ML sometime I feel that staying close to python might be a good choice but also many people said that SpringBoot has much higher market demand. So which one you suggest in current market condition?

🌐
Reddit
reddit.com › r/backend › fastapi vs spring boot / nestjs for scalable, ai-driven saas backends?
r/Backend on Reddit: FastAPI vs Spring Boot / NestJS for scalable, AI-driven SaaS backends?
October 5, 2025 -

Hey all,

I’m planning to build scalable SaaS products (with AI features) and I’m trying to decide which backend stack to go all-in on.

I’ve worked with Spring Boot before — it’s powerful and full-featured, but sometimes feels like overkill for fast-moving startup projects. On the other hand, FastAPI seems super lightweight and productive, but I keep hearing it lacks a lot of built-in features meaning you end up wiring a lot of things yourself.

Would you recommend fastAPI for building scalable AI saas platforms, or is it better to stick with something more structured like Spring Boot or NestJS?

🌐
Reddit
reddit.com › r/springboot › performance issues with spring boot compared to fastapi for multiple concurrent get requests
r/SpringBoot on Reddit: Performance Issues with Spring Boot Compared to FastAPI for Multiple Concurrent GET Requests
December 4, 2024 -

I have been tasked with converting FastAPI Python code into Spring Boot. The converted code currently only contains the GET operation to retrieve data from the database. Below is the boilerplate template for the Spring Boot code.

@RestController
@RequestMapping(path = "/api/v1/reports/xyz/")
public class ReportControllerV1 {

    @Autowired
    private ReportServiceV1 reportServiceV1;

    @GetMapping("/summary")
    public ResponseEntity<ApiResponse<ReportSummaryDto>> getReportSummary(
            @RequestParam String userId,
            @RequestParam LocalDate fromDate,
            @RequestParam LocalDate toDate,
            @RequestParam(required = false) String unitId,
            @RequestParam(required = false) String regionId,
            @RequestParam(required = false) String projectId,
            @RequestParam(required = false) String supplierId,
            @RequestParam(required = false) String centerId,
            @RequestParam(defaultValue = "50") int pageSize,
            @RequestParam(defaultValue = "0") int pageNo
    ) {
        try {
            ApiResponse<ReportSummaryDto> response = reportServiceV1.getReportSummary(userId, fromDate, toDate, unitId, regionId, projectId, supplierId, centerId, pageSize, pageNo);
            return ResponseEntity.ok().body(response);
        } catch (Exception e) {
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
        }
    }
}


@Service
public class ReportServiceV1 {

    @Autowired
    private ReportSummaryRepository reportSummaryRepository;

    public ApiResponse<ReportSummaryDto> getReportSummary(
            String userId,
            LocalDate fromDate,
            LocalDate toDate,
            String unitId,
            String regionId,
            String projectId,
            String supplierId,
            String centerId,
            int limit,
            int offset
    ) {
        List<ReportSummary> reportSummaryList = reportSummaryRepository.findByFilters(
                fromDate, toDate, unitId, regionId, projectId, supplierId, centerId, userId, limit, offset
        );

        int totalCount = reportSummaryRepository.countByFilters(
                fromDate, toDate, unitId, regionId, projectId, supplierId, centerId, userId
        );

        List<ReportSummaryDto> reportSummaryDtos = reportSummaryMapper.toDto(reportSummaryList);
        return new ApiResponse<>(reportSummaryDtos, totalCount);
    }
}



@Query(value = """
        SELECT * FROM public.m_report_summary
        WHERE created_date BETWEEN :fromDate AND :toDate
          AND (:unitId IS NULL OR unit_id = :unitId)
          AND (:regionId IS NULL OR region_id = :regionId)
          AND (:projectId IS NULL OR project_id = :projectId)
          AND (:supplierId IS NULL OR supplier_id = :supplierId)
          AND (:centerId IS NULL OR center_id = :centerId)
        ORDER BY created_date DESC
        LIMIT :limit OFFSET :offset
        """, nativeQuery = true)
    List<ReportSummary> findByFilters(
            @Param("fromDate") LocalDate fromDate,
            @Param("toDate") LocalDate toDate,
            @Param("unitId") String unitId,
            @Param("regionId") String regionId,
            @Param("projectId") String projectId,
            @Param("supplierId") String supplierId,
            @Param("centerId") String centerId,
            @Param("userId") String userId,
            @Param("limit") int limit,
            @Param("offset") int offset
    );

@Query(value = """
        SELECT COUNT(*)
        FROM public.m_report_summary
        WHERE created_date BETWEEN :fromDate AND :toDate
          AND (:unitId IS NULL OR unit_id = :unitId)
          AND (:regionId IS NULL OR region_id = :regionId)
          AND (:projectId IS NULL OR project_id = :projectId)
          AND (:supplierId IS NULL OR supplier_id = :supplierId)
          AND (:centerId IS NULL OR center_id = :centerId)
        """, nativeQuery = true)
    int countByFilters(
            @Param("fromDate") LocalDate fromDate,
            @Param("toDate") LocalDate toDate,
            @Param("unitId") String unitId,
            @Param("regionId") String regionId,
            @Param("projectId") String projectId,
            @Param("supplierId") String supplierId,
            @Param("centerId") String centerId,
            @Param("userId") String userId
    );
}

The Python code behaves similarly to this, but we are experiencing performance issues with Spring Boot when making multiple GET requests from the frontend. In some cases, we are sending between 6 to 12 GET requests at once. FastAPI performs much better in this scenario, while Spring Boot is much slower.

We are using PostgreSQL as the database.

If you need any additional information to help diagnose or resolve the issue, please let me know.

🌐
Reddit
reddit.com › r/developersindia › performance issues with spring boot compared to fastapi for multiple concurrent get requests
r/developersIndia on Reddit: Performance Issues with Spring Boot Compared to FastAPI for Multiple Concurrent GET Requests
December 4, 2024 -

I have been tasked with converting FastAPI Python code into Spring Boot. The converted code currently only contains the GET operation to retrieve data from the database. Below is the boilerplate template for the Spring Boot code.

u/RestController
@RequestMapping(path = "/api/v1/reports/xyz/")
public class ReportControllerV1 {

    @Autowired
    private ReportServiceV1 reportServiceV1;

    @GetMapping("/summary")
    public ResponseEntity<ApiResponse<ReportSummaryDto>> getReportSummary(
            @RequestParam String userId,
            @RequestParam LocalDate fromDate,
            @RequestParam LocalDate toDate,
            @RequestParam(required = false) String unitId,
            @RequestParam(required = false) String regionId,
            @RequestParam(required = false) String projectId,
            @RequestParam(required = false) String supplierId,
            @RequestParam(required = false) String centerId,
            @RequestParam(defaultValue = "50") int pageSize,
            @RequestParam(defaultValue = "0") int pageNo
    ) {
        try {
            ApiResponse<ReportSummaryDto> response = reportServiceV1.getReportSummary(userId, fromDate, toDate, unitId, regionId, projectId, supplierId, centerId, pageSize, pageNo);
            return ResponseEntity.ok().body(response);
        } catch (Exception e) {
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
        }
    }
}


@Service
public class ReportServiceV1 {

    @Autowired
    private ReportSummaryRepository reportSummaryRepository;

    public ApiResponse<ReportSummaryDto> getReportSummary(
            String userId,
            LocalDate fromDate,
            LocalDate toDate,
            String unitId,
            String regionId,
            String projectId,
            String supplierId,
            String centerId,
            int limit,
            int offset
    ) {
        List<ReportSummary> reportSummaryList = reportSummaryRepository.findByFilters(
                fromDate, toDate, unitId, regionId, projectId, supplierId, centerId, userId, limit, offset
        );

        int totalCount = reportSummaryRepository.countByFilters(
                fromDate, toDate, unitId, regionId, projectId, supplierId, centerId, userId
        );

        List<ReportSummaryDto> reportSummaryDtos = reportSummaryMapper.toDto(reportSummaryList);
        return new ApiResponse<>(reportSummaryDtos, totalCount);
    }
}



@Query(value = """
        SELECT * FROM public.m_report_summary
        WHERE created_date BETWEEN :fromDate AND :toDate
          AND (:unitId IS NULL OR unit_id = :unitId)
          AND (:regionId IS NULL OR region_id = :regionId)
          AND (:projectId IS NULL OR project_id = :projectId)
          AND (:supplierId IS NULL OR supplier_id = :supplierId)
          AND (:centerId IS NULL OR center_id = :centerId)
        ORDER BY created_date DESC
        LIMIT :limit OFFSET :offset
        """, nativeQuery = true)
    List<ReportSummary> findByFilters(
            @Param("fromDate") LocalDate fromDate,
            @Param("toDate") LocalDate toDate,
            @Param("unitId") String unitId,
            @Param("regionId") String regionId,
            @Param("projectId") String projectId,
            @Param("supplierId") String supplierId,
            @Param("centerId") String centerId,
            @Param("userId") String userId,
            @Param("limit") int limit,
            @Param("offset") int offset
    );

@Query(value = """
        SELECT COUNT(*)
        FROM public.m_report_summary
        WHERE created_date BETWEEN :fromDate AND :toDate
          AND (:unitId IS NULL OR unit_id = :unitId)
          AND (:regionId IS NULL OR region_id = :regionId)
          AND (:projectId IS NULL OR project_id = :projectId)
          AND (:supplierId IS NULL OR supplier_id = :supplierId)
          AND (:centerId IS NULL OR center_id = :centerId)
        """, nativeQuery = true)
    int countByFilters(
            @Param("fromDate") LocalDate fromDate,
            @Param("toDate") LocalDate toDate,
            @Param("unitId") String unitId,
            @Param("regionId") String regionId,
            @Param("projectId") String projectId,
            @Param("supplierId") String supplierId,
            @Param("centerId") String centerId,
            @Param("userId") String userId
    );
}

The Python code behaves similarly to this, but we are experiencing performance issues with Spring Boot when making multiple GET requests from the frontend. In some cases, we are sending between 6 to 12 GET requests at once. FastAPI performs much better in this scenario, while Spring Boot is much slower.

We are using PostgreSQL as the database.

If you need any additional information to help diagnose or resolve the issue, please let me know.

🌐
Reddit
reddit.com › r/fastapi › fast api for m2m communication
r/FastAPI on Reddit: Fast API for M2M Communication
May 5, 2023 -

Hi All

I am a Junior Developer and I'm currently in the process of deciding which API framework to use for a machine to machine API, and I've been comparing FastAPI with other popular frameworks, like Spring Boot. Although I've read the documentation and created some projects using FastAPI, I'm still not quite sure about the real-world advantages and limitations of it are.

It seems to tick all the boxes I would want for my particular application

  • Speed/Scalability

  • Async Functionality

  • Handles Multiple Data Sources

  • In the Python Ecosystem

I am dealing with a lot of legacy systems, services, and python/powershell scripts that won't really change plus it wont be user facing so the won't need to be much development after the initial implementation so I am primarily looking for something with longevity.

Any guidance would be much appreciated!

Top answer
1 of 3
3
Is this for your job ? If yes, what do your colleagues think ? What are they comfortable with ? What does the rest of the business use ? Sprint Boot being in Java, it's really two different ecosystems, not even sure why you would hesitate between a Java and a Python framework, unless you are equally uncomfortable with both. My take is, do it in a language you know, or a language you really want to learn. Don't quote me on this, but I think Java can technically be faster than Python.... but can your Java code be faster than your Python code ? What kind of speed and scale do you need ? FastAPI can handle thousands of requests per second. 1000 requests per second is 3.6 million requests per hour. But then, if you work in a .NET shop, well, do it in .NET lol.
2 of 3
2
We have been using both java and python in the backend for server to server communication. Python is popular for fast development in our team. We can create production ready apis with fastapi really fast as compare to spring boot, less code, good interface, designing decoupled modules with infinite extendible scope. We work in a microservice env so one service is connected to single db but I'm sure you can do multi db connection simultaneously as well. Also you need to know the exact meaning of scaling, as if it's not customer facing then you can make your apis reliable despite having synchronous request response cycles and scale really good on single threaded servers. Also apis like getting something from db, doing something with that data and returning back the data to other services is not really a big deal which will take 1 second. I would say you can serve your request under 40 ms with fastapi also you won't have to worry about memory management(don't take this for granted) which is really handy as i have seen many java services hanging on full memory pool or getting auto restarting ecs instances Now there are a couple of things or metrics that you need to decide With python Fast development Auto memory Management Apis can ve made reliable Less lines of codes Vast amount of open source libraries Less server cost as less memory and cpu unit is needed Easy to start Ease of maintenance Annotations/readable code and much more With java More lines of code More development time No auto memory management High server maintenance Code could become hard to read if maintained badly More development time Required good resources not easy for beginners to start working on running services And much more In the last i would say talk it out with your team Lay out pros and cons of using both Decide on your Focus of what you expect Your scope etc Hope this helps Also I have been working on a Library which is almost infinitely customisable it is something that everyone uses in every api the docs are badly maintained but are enough to give you a hint of what to expect If you have some time do check it out https://github.com/danielhasan1/fastapi-listing
Find elsewhere
🌐
Reddit
reddit.com › r/java › life without spring boot
r/java on Reddit: Life without Spring Boot
January 20, 2024 -

I want to build my apps with simpler frameworks with no magic like Javalin or even using thin wrappers over Jetty.

This is popular in Golang but not so much in Java world as far as I have seen. Has anyone gone down this road? Any experiences to share?

🌐
Reddit
reddit.com › r/cscareerquestionseu › is django/fastapi/flask has enough demand compare to springboot?
r/cscareerquestionsEU on Reddit: Is Django/FastAPI/Flask has enough demand compare to Springboot?
October 13, 2024 -

Hello, I will go straight to the point.

I am in my third year and have 1.5 year left until graduation. After suggestion from many industry experts I decided to learn Spring as backend and React/Next in frontend.

However I recently got internship(remote) in a canada based startup that uses FastAPI in backend and Next in frontend.

Also there is good chance that I will continue here for next 1.5 year. Now after graduation it will make sense for me to learn Django as well and look for these python based positions.

So I am conflicted. Should I also learn Spring as well and apply for Springboot positions ,or learn both apply for both or focus on Django/FastAPI

Really need advice :((

Mainly I want to know If Django/FasAPI has enough job opportunities like Springboot has, for example the number of open positions, market demand, salary etc

So here is my current thought: Even After 1.5 year working on FastAPI I still want to choose Springboot Why? 1. More in demand, 2. For many of my university hackathon/competition using this(springboot is quite popular here). And as I can always say on CV that ok I learned Building RESTful API, working on Agile... etc, I meant I believe it still will be of some value if I apply for a springboot position if I can mention core work rather than framework. Want to know you guys thought on this as well

Top answer
1 of 4
10

The issues with Java threads in the question are addressed by the project Loom, which is now included in Jdk21. It is very well explained here https://www.baeldung.com/openjdk-project-loom :

Presently, Java relies on OS implementations for both the continuation [of threads] and the scheduler [for threads].

Now, in order to suspend a continuation, it's required to store the entire call-stack. And similarly, retrieve the call-stack on resumption. Since the OS implementation of continuations includes the native call stack along with Java's call stack, it results in a heavy footprint.

A bigger problem, though, is the use of OS scheduler. Since the scheduler runs in kernel mode, there's no differentiation between threads. And it treats every CPU request in the same manner. (...) For example, consider an application thread which performs some action on the requests and then passes on the data to another thread for further processing. Here, it would be better to schedule both these threads on the same CPU. But since the [OS] scheduler is agnostic to the thread requesting the CPU, this is impossible to guarantee.

The question really boils down to Why are OS threads considered expensive?

2 of 4
7

FastAPI is a fast framework, and you can quickly (and easily) create API backends in it. To be honest, if you are a Java developer, I would recommend Quarkus or something for building a REST API, not FastAPI. FastAPI is a fantastic tool, absolutely great if you are already in the Python ecosystem.

When it goes about multithreading; Java is 'real' multithreading where as Python is very much not. Java threads will run concurrently; two tasks can and will be executed at the same time. In Python, within one Python process, this is (nearly) impossible. The reason for this is GIL (google it, there is ton's of stuff out there on how it works). The result is; even if you use 'real' threads in Python, code is still not executed concurrently but rather serially, where the interpreter (big difference to Java) is jumping from one call stack to another constantly.

As to what you refer to as 'logical threads', I think you mean the asynchronous capability of Python. This is basically the same as using threads (not really, but on an abstract level they are very similar); tasks are not run concurrently. There is just one thread that constantly switches between tasks. Tasks will yield back control to the event loop (the object that coordinates tasks and decides what is executed in which order), and another task is further executed until that task yields control, etc. It is basically the same kind of execution pattern as with threads within Python.

Comparing a Python framework to a Java framework is just weird in my opinion. They are both useful and cool, but not really competitors.

🌐
Reddit
reddit.com › r/fastapi › worried about the future
r/FastAPI on Reddit: Worried about the future
August 30, 2024 -

Hello, I'm a mid-level full-stack developer who is specialized in React + FatAPI and I love this stack so far. But, whenever I try to look for jobs either locally in Egypt or remotely, I only find jobs for Java's Spring boot, ASP.NET Core, or a little of Django.

I was wondering If the market is gonna improve for FastAPI (Without AI or data analysis skills) or if I should learn another backend stack If I'm mainly looking for a remote job.

Thanks in advance.

🌐
Reddit
reddit.com › r/developersindia › java springboot vs python fastapi for startup opportunities
r/developersIndia on Reddit: Java springboot vs python fastapi for startup opportunities
June 14, 2025 -

I'm a btech cse 2024 grad with 1 yoe. Im trying to switch from my current job, but my profile isn't good enough to make it to big tech so im aiming for startups.

I've seen people say "tech stack doesn't matter stop obsessing over it. What matters is how much in depth you understand things and how quickly u can learn something new".

But at the same time, most people I've met say "java is much more in demand than python for backend, if you know only python you'll get rejected from most places."

Because of the conflicting advices I am confused, and wanted to know what's best for me to focus on if I want to make a switch asap. Im honestly also confused between backend vs ML vs data engineering. Is any domain in higher demand compared to the others amongst startups in hyderabad?

🌐
Reddit
reddit.com › r/fastapi › should i use fastapi only for ai features or build full backends with it?
r/FastAPI on Reddit: Should I use FastAPI only for AI features or build full backends with it?
September 21, 2025 -

Hey everyone! I’m a junior full-stack dev. I use Spring Boot at work, but for side projects I started using FastAPI since it’s great for AI libraries. My question is can FastAPI handle medium-to-large apps as well as Spring Boot, or is it better to stick with Spring Boot for core business logic and use FastAPI mainly for AI/model deployment?

🌐
BSWEN
docs.bswen.com › blog › 2026-03-24-nestjs-vs-fastapi-vs-springboot
NestJS vs FastAPI vs Spring Boot: Which Backend Framework Should You Choose in 2026? | BSWEN
Every article I found said something different. One claimed NestJS was the future. Another swore by FastAPI’s performance. A third insisted Spring Boot was the only “serious” choice. Then I found a Reddit thread where actual developers shared their real experiences.