Cube does not need one to separately install Java, BTW. Some of these machines have Java, some haven't.
"Nothing is stopping you from using CubeMX to plan and then implementing the code yourself? What am I missing here."
I have not used MX (the code generator) because I have just been writing the "functional" software on this project, but the other guy working on it does that. I guess a lot of people also do - because it saves hours going through the RM trying to work out which peripheral can connect to which pins, etc. I haven't yet got stuck into that part (the AF settings etc), but most people seem to do it by calling some huge ST HAL function.
The problem with MX is that if you later modify the code, it obviously doesn't reflect itself in the original design. For example the very pretty diagram of the clock config (which
is useful for documentation) cannot be updated if you changed say PCLK1 in the code.
" It looks like someone's school project."
It does - like seeing a hardware design where somebody used a 10.1k resistor instead of 10k, where anything from 5k to 20k would have been fine
But there is an amazing lot of that around; we just don't expect it in software...