blob: c7ac71e4a4071f600d4d2a3d996c22a76176ecb1 [file] [log] [blame]
~~
~~ Licensed to the Apache Software Foundation (ASF) under one or more
~~ contributor license agreements. See the NOTICE file distributed with
~~ this work for additional information regarding copyright ownership.
~~ The ASF licenses this file to You under the Apache License, Version 2.0
~~ (the "License"); you may not use this file except in compliance with
~~ the License. You may obtain a copy of the License at
~~
~~ http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing, software
~~ distributed under the License is distributed on an "AS IS" BASIS,
~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~~ See the License for the specific language governing permissions and
~~ limitations under the License.
~~
~~
--------
Apache Commons Exec
--------
--------
12 November 2008
--------
Apache Commons Exec
* 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 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
retrieving environment variables is deprecated.
There are currently several different libraries that for their own purposes have implemented frameworks around
<<<Runtime.exec()>>> to handle the various issues outlined above. The proposed project should aim at coordinating and
learning from these initiatives to create and maintain a simple, reusable and well-tested package. Since some of the
more problematic platforms are not readily available, it is our 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.
* Releases
Version v1.3 (current), is JDK 1.5 compatible -
{{{https://commons.apache.org/exec/download_exec.cgi}Download now!}}.
Version v1.2, is JDK 1.3 compatible.
Version v1.1, is JDK 1.3 compatible.
For previous releases, see the {{{http://archive.apache.org/dist/commons/exec/}Apache Archive}}.