I would probably stick with the same tooling depending on how large the code base is. The grass is always greener as they say. The reality is almost all general programming languages can suit the needs of your typically app that just needs to read/write and report on data. You can always pull in various services or build your own with other languages, databases, and tools that are more purpose built if you have the need...though it's usually easier to use that strategy on the web. So if you're talking about desktop software, then we're in a different ballpark. There are other considerations too. If the current code base is so full of tech debt and so confusing, you may want to start fresh. Particularly if it was an app that was built and changed from the very beginning as hindsight is 20/20 and you now know things about how the app needs to work that you didn't know before. Another consideration is cost to maintain and build. If you need additional resources, what's the cost and availability of programmers that can code Java and the Groovy framework or those who can code Node.js (I'd suggest Typescript if starting fresh) and Express. There's really no right or wrong answer here at a high level and you're not doomed for going either way. You just may be able to be more cost effective depending on your situation.