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

Peter Levart peter.levart at gmail.com
Tue Apr 1 17:05:17 UTC 2014


On 04/01/2014 05:51 PM, Rob McKenna wrote:

Mac OSX testing was clean.

-Rob

Thanks again Rob.

Regards, Peter

On 01/04/14 16:43, Peter Levart wrote: 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