I'm not sure I understand your constraints. Accepting at face value that your app
has to be wholly non-user-modifiable, what exactly is wrong with web/JS/Python? Putting a web frontend on the system shouldn't let the user control anything interesting since the frontend is just a client over the real HTTP control interface. And rolling Python in with Java et al., why does it have to be a compiled language? Most users aren't exactly going to pop open the app regardless, and if your threat model includes users patching the program and ex. editing out signature checks, it's not like compiled code will protect you from a debugger/decompiler/hex-editor.
(To answer the actual question as posed: If you can use Linux, I think you'd be crazy to use anything else. It gives you far more control, completely removes the risk of any updates you don't want, can allow really slick update strategies (roll forward/back, snapshots, A/B updates, immutable snapshots...), most likely completely throws out licensing fees for the OS. Like, if your team is familiar with Windows, fine, if you need Windows-specific drivers, sure, but otherwise? It's an appliance; Windows was never a good fit.)
(Edit: Also, whichever OS you go with, please decouple your stuff from the OS as much as possible. If it's Windows, make a real installer or portable app. If it's Linux, it depends on your model (do you control the OS, or do customers?) but make a package/docker image/flatpak/static binary/appimage/self-contained install directory/whatever and document the install process. I say this as someone who has had to come in after something was no longer supported; it's so much easier to update the underlying OS when it's clear how you install the app on a fresh OS image)
(To answer the actual question as posed: If you can use Linux, I think you'd be crazy to use anything else. It gives you far more control, completely removes the risk of any updates you don't want, can allow really slick update strategies (roll forward/back, snapshots, A/B updates, immutable snapshots...), most likely completely throws out licensing fees for the OS. Like, if your team is familiar with Windows, fine, if you need Windows-specific drivers, sure, but otherwise? It's an appliance; Windows was never a good fit.)
(Edit: Also, whichever OS you go with, please decouple your stuff from the OS as much as possible. If it's Windows, make a real installer or portable app. If it's Linux, it depends on your model (do you control the OS, or do customers?) but make a package/docker image/flatpak/static binary/appimage/self-contained install directory/whatever and document the install process. I say this as someone who has had to come in after something was no longer supported; it's so much easier to update the underlying OS when it's clear how you install the app on a fresh OS image)