Not really. If you read the bug, they were checking the vendor string to test whether a certain set of command line args could be passed into the jvm on startup. So, yes it's better to make runtime decisions based on something more structured like reflection as opposed to some string compare. But no, reflection, in the context you're using it would not have helped. They need to look for some identifying feature of the sun/oracle vm. I don't think java reflection can help you there .
I'm not a web developer, so when I look at something like you're doing with checking for browser identity based on whether a method is present, I'd say, "what's more likely, Microsoft decides to remove "Microsoft" from the browser id, or you encounter a second browser with an addEventListener on the Document?" Neither is 100%, but you pick the one you like and go with. Unfortunately for the Eclipse devs, they figured sun would probably never change the vendor tag from "sun"?