You cannot deploy Java 6 applications to Mac (except 64-bit Intel Mac OS X 10.5 after September, as mentioned above). You can build Java 6 for all other platforms (back to Windows 98, FFS), but to work for Mac customers you have to adjust your build to create a Java 1.5 version.
You also have to add in special Java upgrade instructions for those using OS X 10.4 (since the 1.5 upgrade isn't included in automatic updates), and tell anyone with a Mac earlier than that to piss off, because Java 1.5 (released over FOUR years ago, in 2004) won't work on OS X 10.3 or earlier.
That is an exceptional pain which isn't present on Windows or Linux.
Apple makes wonderful hardware but they treat their third-party developers like crap. Microsoft is absolutely awesome in comparison and realizes that "Developers, Developers, Developers" are the secret to their OS's success.
The Java on OSX situation is pretty deplorable, I agree. But that is not equivalent to "treating their third-party developers like crap." Java is an underprivileged minority on the OSX desktop, for better or worse.
It's not just Java. Apple's been awful with backward compatibility for years.
Every time Apple upgrades their Mac OS a frantic application re-write is often required from third-party developers just to get things working on the new platform. In contrast, I can pull out an application written 15 years ago for DOS and fire it up under Windows without a problem. Microsoft realizes how important it is to keep third-party software working on their platform and bends over backwards to provide that backward compatibility.
For our own software, we've not had to tinker with the base code (written on Win 98) at all under Windows.
Building desktop apps for Mac is a (lucrative) pain.
Aside from a) the Mac OS to Mac OS X transition (though existing apps worked under "Classic" mode), b) some apps during the PPC to Intel transition (namely apps with assembly or endian issues), and c) apps that used private / unpublished APIs, that's not really true.
In case you missed that, SimCity had a bug where it used memory it already freed. This worked under DOS for whatever reason, but not under Windows. So the Windows team hardcoded a special case just for SimCity.
That is going too far, IMO. Why should my OS have all this extra bloat to check for buggy applications? This is why OS vendors seed preview releases to developers, so they can test their own damn software and issue fixes for these kinds of bugs. While it may have been hard to distribute updates 20 years ago, with the internet it's trivial.
SimCity had a bug where it used memory it already freed. This worked under DOS for whatever reason, but not under Windows. So the Windows team hardcoded a special case just for SimCity.
It sounds like there was a some kind of bug in DOS that allowed SimCity to work with object freed from memory and Windows team tried to hide it in Windows by making a special case :)
In any case I think it's called going an extra mile for the customer, isn't it? (I can't believe I'm writing it about MS)
Have you got any actual examples of backward compatibility problems on the Mac? I've written a few Mac apps that targeted Jaguar, and they still work fine under Leopard.
Also, Apple never just pulls the plug on an API - at worst, if you use an API, and then Apple decides to remove the API, the next version of the OS simply lists the API as deprecated, and you get a warning when you compile. It is only in the following version of the OS that the API may actually be pulled. I don't think it's unreasonable to expect developers to update their apps every 2-3 years if they want them to keep working.
Microsoft is a software juggernaut. They can throw as many developers at a problem as it takes, and backwards compatibility is one of those problems they've chosen to focus on since they're used so much in business. Apple can't do that, and it pays a lot less for them. Mac apps tend to be more consumer based, which means backwards compatibility isn't nearly as important.
You cannot deploy Java 6 applications to Mac (except 64-bit Intel Mac OS X 10.5 after September, as mentioned above). You can build Java 6 for all other platforms (back to Windows 98, FFS), but to work for Mac customers you have to adjust your build to create a Java 1.5 version.
You also have to add in special Java upgrade instructions for those using OS X 10.4 (since the 1.5 upgrade isn't included in automatic updates), and tell anyone with a Mac earlier than that to piss off, because Java 1.5 (released over FOUR years ago, in 2004) won't work on OS X 10.3 or earlier.
That is an exceptional pain which isn't present on Windows or Linux.
Apple makes wonderful hardware but they treat their third-party developers like crap. Microsoft is absolutely awesome in comparison and realizes that "Developers, Developers, Developers" are the secret to their OS's success.