RFR: 7178922 : (props) re-visit how os.name is determined on Mac

Brent Christian brent.christian at oracle.com
Wed Nov 14 21:23:58 UTC 2012

Thanks, Sergey.

It's good that we standardized on the recommended usage within the JDK 
in order to stay ahead of a possible change to the value of ProductName 
in /System/Library/CoreServices/SystemVersion.plist

But we can expect that Java application developers use the same variety 
of OS platform checks.  Which is why we should maintain the current 
value (versus risking apps breaking in the event of a change in 
ProductName used by OS X), especially considering that it works fine 
with the recommended osName.contains("OS X").

As is suggested in the bug report, if the Mac's OS changes so radically 
that we should be reporting a new os.name ("Mac OS XI", or who knows 
what), we will almost certainly need to update the JDK to run on it, at 
which time we can also change the value of os.name.


On 11/13/12 5:05 PM, Sergey Bylokhov wrote:
> So many efforts was done to unify this style across the jdk
> http://monaco.sfbay.sun.com/detail.jsf?cr=7147461
> http://monaco.sfbay.sun.com/detail.jsf?cr=7130404
> changesets
> http://hg.openjdk.java.net/jdk8/awt/jdk/rev/77b35c5c4b95
> http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/970cbbba54b0
> http://closedjdk.us.oracle.com/hsx/hotspot-rt/hotspot/test/closed/rev/40505e5a55e8
> Note that official documentation from apple suggest: contains("OS X")
> https://developer.apple.com/library/mac/#technotes/tn2002/tn2110.html
> 14.11.2012 2:50, Brent Christian wrote:
>> At present, the JDK port for OS X gets its value for os.name from a
>> JRS function exported by the Apple Java Runtime Support framework.
>> Historically this has either been "Mac OS X", or "Mac OS X Server",
>> but there have been reports that this could change at any time, e.g.
>> to just "OS X".  This would break any app that relies on this property
>> to detect the Mac platform using something like:
>> System.getProperty("os.name").startsWith("Mac").
>> To ensure compatibility going forward, the os.name System property on
>> Mac should be hard-coded to the value that is expected, "Mac OS X".
>> (FWIW, as of 10.7 Mac OS X Server is no longer a separate edition of
>> the OS).
>> Webrev is here:
>> http://cr.openjdk.java.net/~bchristi/7178922/webrev.0/
>> Note: the setUnknownOSAndVersion() function is unused following my
>> change, so I went ahead and removed it.
>> Thanks,
>> -Brent

More information about the core-libs-dev mailing list