RFR: 8000975: (process) Merge UNIXProcess.java.bsd & UNIXProcess.java.linux (& .solaris & .aix)

Peter Levart peter.levart at gmail.com
Tue Apr 1 15:43:47 UTC 2014

On 04/01/2014 03:49 PM, roger riggs wrote:
> Hi Peter,
> The design using enum for the os dependencies does not make it possible
> to include only the support needed for a particular platform at build 
> time.
> Every implementation will be carrying around the support for all the 
> other platforms.
> A build time binding would be more efficient.
> Roger

That's true. A trade-off between maintainability and efficiency. The 
efficiency has two categories here. One is the size of the distributable 
and the other is run-time efficiency. I've been thinking to improve both 
efficiencies (the run-time in particular) with a little re-design. Since 
nearly each OS platform requires a sub-class of UNIXProcess to implement 
the differences, I can move the implementations of various methods now 
in Os enum to the UNIXProcess subclasses and get rid of Os enum 
per-instance subclasses.

Let me try this and see what comes out.

Regards, Peter

> On 4/1/2014 9:16 AM, Peter Levart wrote:
>> Hi Alan, Volker,
>> Thanks for sharing the info and for testing on AIX. Here's the 
>> updated webrev that hopefully includes the correct "dispatch on 
>> os.name" logic. I included "Solaris" as an alternative to "SunOS" 
>> since I saw this in some documents on Internet. If this is 
>> superfluous, I can remove it:
>> http://cr.openjdk.java.net/~plevart/jdk9-dev/UNIXProcess/webrev.03/
>> I tested this on Linux and Solaris and the java/lang/ProcessBuilder 
>> jtreg tests pass. So with Volker's test on AIX, the only OS platform 
>> left for testing is Mac OS X. Would someone volunteer?
>> Regards, Peter
>> On 03/27/2014 11:18 AM, Volker Simonis wrote:
>>> Hi Peter,
>>> thanks for applying these changes to the AIX files as well.
>>> With the additional line:
>>>              if (osName.equals("AIX")) { return AIX; }
>>> in Os.get() your change compiles cleanly on AIX and runs the
>>> java/lang/ProcessBuilder tests without any errors.
>>> So from an AIX perspective, thumbs up.
>>> Regards,
>>> Volker
>>> On Wed, Mar 26, 2014 at 5:18 PM, Alan Bateman 
>>> <Alan.Bateman at oracle.com> wrote:
>>>> On 26/03/2014 15:19, Peter Levart wrote:
>>>>> I couldn't find any official document about possible os.name 
>>>>> values for
>>>>> different supported OSes. Does anyone have a pointer?
>>>> I don't know if there is a definite list but I assume we don't need 
>>>> to be
>>>> concerned with anything beyond the 4 that we have in OpenJDK, which is
>>>> "Linux", "SunOS", "AIX" and contains("OS X").
>>>> If we get to the point in JDK 9 where src/solaris is renamed to 
>>>> src/unix (or
>>>> something equivalent) then it could mean that the Os enum can be 
>>>> replaced
>>>> with an OS specific class in src/linux, src/solaris, ... and this 
>>>> would
>>>> avoid the need for an os.name check at runtime.
>>>> -Alan.

More information about the core-libs-dev mailing list