I am designing my next project, which will do various domain-specific tasks, but all that will be controlled and used via a generic crud web app.

I have been professionally using Java with Spring for over 3 years now with the usual corporate applications, but these domain-specific tasks absolutely have to be done in Python. I was already going to split the “core” app from these modules, but now I am wondering if I should go for Java core with Python modules communicating over REST or queues, or try to write the core app in Django and enjoy potentially better integration and easier codebase in case I would work on it with someone else in the future.

The whole point of this dilemma is because I’m a mid-level Java dev, and while I can write Python (these adapters will be small-ish so not a problem), I never used it professionally nor written any Django project before. The deadline is not exactly tight and I don’t mind learning, but I want to do this seriously, and I’m not sure benefits of which side outweigh the other.

Tl;dr: pro Java/amateur python dev wants to write an application that needs a crud web app core and python adapters. Is learning Django worth a hassle or should I stick to Spring and have different languages in different backend modules?

New contributor

rafal.sz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.


these domain-specific tasks absolutely have to be done in Python

Until you also find something that “absolutely has to be done” in Java as well, don’t impose your personal bias on the project.

Yes, learning is slow. But have some respect for maintenance. When you use Spring and Java together you’re ensuring that the code base needs someone who knows both to maintain it. But at least that’s a common pairing. You’re proposing Java and Spring and Python and Django. When it could just be Python and Django.

I’m a polyglot. I can work in multiple languages. But even I shudder at the thought of mixing all this together. Jumping from language to language is distracting. Take the time to learn how to build this in Python. You may find it does better at this than you think.

As Doc Brown cautions below, there may be justifications for mixing. You’ve identified a personal bias for Java. Rather than forbidding mixing, I’m advising you check that impulse and instead put the projects needs ahead of your own.