On Jun 19, 2012, at 4:45 PM, Phil Race wrote:

> Mike,
> 
> On 6/19/2012 3:37 PM, Mike Swingler wrote:
>> Currently, JDK 7 uses JRSCopyOSName() so that the difference between "Mac OS 
>> X" and "Mac OS X Server" can be distinguished.
> Is there a better (standard) way? If it matters at all to distinguish server 
> vs. client ?
> On Windows we care about server only to decide not to use D3D by default..  
> but we query standard platform APIs for that
> and set properties appropriately.

Not as far as I know from Java. Perhaps this distinction is no longer 
important, and os.name could be hardcoded if there is a greater case to be made 
for letting old code continue to use an out-of-sync name.

>> I am recommending the use of .contains("OS X") to more robustly determine if 
>> you are on the OS X platform, and still retain the ability to distinguish 
>> between client and server in cases where it is important to do so.
> 
> So does that mean JRSCopyOSName() will change what its reporting ?

I can't say that it will or will not change in any specific release, but as 
currently implemented, it should accurately report the value of ProductName in 
/System/Library/CoreServices/SystemVersion.plist.

We have documented several detection techniques for developers using os.name 
and os.version at: 
<https://developer.apple.com/library/mac/#technotes/tn2002/tn2110.html>.

Regards,
Mike Swingler
Apple Inc.

> -phil.
> 
>> 
>> Regards,
>> Mike Swingler
>> Apple Inc.
>> 
>> On Jun 19, 2012, at 11:53 AM, Phil Race wrote:
>> 
>>> On 6/19/2012 11:33 AM, Artem Ananiev wrote:
>>>> On 6/19/2012 8:49 PM, Phil Race wrote:
>>>>> startsWith("Mac") is what we use in FX and I don't see a problem with it
>>>>> and its surely more reliable to type and efficient than contains("OS X");
>>>>> If its meant to be targeted to a specific version that could break if
>>>>> there's an OS XI ..
>>>>> And startsWith("Win") is a common pattern. So I don't agree with the 
>>>>> advice
>>>>> anyway.
>>>> startsWith("Mac") vs contains("OS X") was already discussed on the 
>>>> macosx-port-dev alias. The problem with the former is that starting from 
>>>> 10.8, OS name will be just "OS X", without "Mac" prefix.
>>>> 
>>>> The code in java_props_macosx.c makes me believe we set "os.name" tp the 
>>>> value returned by JRSCopyOSName() from JavaRuntimeSupport framework. Is it 
>>>> possible to get "OS X 10.8" from that function?
>>> This sounds like a JDK bug.
>>> We really must not let that drive changing the "os.name" property else we 
>>> are
>>> completely at the whim of whatever a platform vendor's marketing dept 
>>> thinks is
>>> the flavour of the day.
>>> 
>>> -phil.
>>> 
>>>> Thanks,
>>>> 
>>>> Artem
>>>> 
>>>>> -phil.
>>>>> 
>>>>> 
>>>>> On 6/19/2012 9:36 AM, Sergey Bylokhov wrote:
>>>>>> Hi,Phil.
>>>>>> 
>>>>>> According to these CR macosx check should be: .contains("OS X").
>>>>>> http://monaco.sfbay.sun.com/detail.jsf?cr=7147461
>>>>>> http://monaco.sfbay.sun.com/detail.jsf?cr=7130404
>>>>>> 
>>>>>> On 19.06.2012 20:13, Phil Race wrote:
>>>>>>> 7124536: [macosx] PrintServiceLookup.lookupDefaultPrintService()
>>>>>>> return null
>>>>>>> http://cr.openjdk.java.net/~prr/7124536.7u6/
>>>>>>> 
>>>>>>> -phil.
>>>>>> 
> 

Reply via email to