Given axiom one, my preferred development environment would usually be something like Visual Basic. If you violate these expectations, they will feel like your program is a piece of junk. For example, on the Mac, they expect the menus to be at the top of the screen. And they expect that while they are editing text, the whole screen won't flash, which means you absolutely have to use double-buffering. If you use the JDK, and your Windows application uses the Java coffee cup as its icon, users will think that your program is not professional.
People are less likely to buy a product that looks unprofessional.
I don't know how many people have told me that they tried various applications which were written in Java and thought that they felt unprofessional. They were slow, they flashed a lot, their widgets behaved slightly wrong. Thus, there is a lot of value in giving software developers absolute control over the exact look and feel. COM objects that are also controls even give you the ability to define new user interfaces. Now let's talk about platforms.