[OpenJDK 2D-Dev] Please review 7u6 fix for 7124536: [macosx] PrintServiceLookup.lookupDefaultPrintService() return null

Mike Swingler swingler at apple.com
Wed Jun 20 00:41:22 UTC 2012

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>.

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.

More information about the 2d-dev mailing list