| Proposal for Exec Package |
| 28th July 2005 |
| |
| Rationale |
| ------------------------------------ |
| Executing external processes from Java is a well-known problem area. It is inheriently platform dependent and requires |
| the developer to know and test for platform specific behaviors, for example using cmd.exe on Windows or limited buffer |
| sizes causing deadlocks. The JRE support for this is very limited, albeit better with the new Java SE 1.5 |
| ProcessBuilder class. |
| |
| Reliably executing external processes can also require knowledge of the environment variables before or after the |
| command is executed. In J2SE 1.1-1.4 there is not support for this, since the method, System.getenv(), for retriving |
| environment variables is deprecated (in later releases the deprecation was removed). |
| |
| The are currently several different libraries that for their own purposes has implemented frameworks around |
| Runtime.exec() to handle the various issue outlined above. The proposed project should aim at coordinating and |
| learning from these initatives to create and maintain a simple, reusable and well-tested package. Since some of the |
| more problematic platforms are not readily available, it is my hope that the broad Apache community can be a |
| great help. |
| |
| Scope of the package |
| ------------------------------------ |
| The package shall create and maintain a process execution package written in the Java language to be distributed |
| under the ASF license. The Java code might also be complemented with scripts (e.g. Perl scripts) to fully enable |
| execution on some operating systems. The package should aim for supporting a wide range of operating systems while |
| still having a consistent API for all platforms. |
| |
| Identify the initial source for the package |
| ------------------------------------ |
| Several implementations exists and should be researched before finalizing the design: |
| * Ant 1.X contains probably the most mature code within the exec task. This code has been stripped of the |
| Ant specifics and cleaned up by Niklas Gustavsson and can be donated under the ASF license. |
| * Ideas from http://ant.apache.org/ant2/actionlist.html#exec |
| * plexus-utils has a similar but slimmer BSD-licensed implementation than Ant that can be reused |
| |
| Identify the base name for the package |
| ------------------------------------ |
| org.apache.commons.exec |
| |
| INITIAL COMMITTERS |
| ------------------------------------ |
| Brett Porter |
| Stefan Bodewig |
| Trygve Laugstol |
| |
| INITIAL CONTRIBUTORS |
| ------------------------------------ |
| Niklas Gustavsson |
| Kev Jackson |
| |