There are no APIs that return a string of the product name. GetVersionEx gives you numbers. To screw up in this manner, you have to be relying on at least two layers of broken code on top of the really simple API that you should be using directly.
So I don't buy this rumor at all. The number of real applications that 1) remember Windows 9x exist, 2) aren't completely broken on modern Windows anyway, and 3) go out of their way to use some convoluted version checking method has to be extremely small.
This "convulted version checking method" is the default way to do it with Java, I'm not sure if there's any other programming languages that do it as well.
It's insane to check version numbers as strings. I guess the JDK is assuming you're not actually doing anything important with those properties (eg, just writing them to a log).
Python for example wraps GetVersionEx appropriately with sys.getwindowsversion()
No. He said that it was the 'default' way of doing it. Yes, it has happened X times, that does not mean it's the default way of doing it. Maybe there's some other method which is done a lot more often and hence should be considered the 'default' way.
So I don't buy this rumor at all. The number of real applications that 1) remember Windows 9x exist, 2) aren't completely broken on modern Windows anyway, and 3) go out of their way to use some convoluted version checking method has to be extremely small.