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.
Thanks,
-Brent
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