<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.4.2-rc) on Fri Jun 13 00:14:19 PDT 2003 -->
<TITLE>
Process (Java 2 Platform SE v1.4.2)
</TITLE>
<META NAME="keywords" CONTENT="java.lang.Process class">
<META NAME="keywords" CONTENT="getOutputStream()">
<META NAME="keywords" CONTENT="getInputStream()">
<META NAME="keywords" CONTENT="getErrorStream()">
<META NAME="keywords" CONTENT="waitFor()">
<META NAME="keywords" CONTENT="exitValue()">
<META NAME="keywords" CONTENT="destroy()">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="Process (Java 2 Platform SE v1.4.2)";
}
</SCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/Process.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<b>Java<sup><font size=-2>TM</font></sup> 2 Platform<br>Std. Ed. v1.4.2</b></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../java/lang/Package.html" title="class in java.lang"><B>PREV CLASS</B></A>
<A HREF="../../java/lang/Runtime.html" title="class in java.lang"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html" target="_top"><B>FRAMES</B></A>
<A HREF="Process.html" target="_top"><B>NO FRAMES</B></A>
<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY: NESTED | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
java.lang</FONT>
<BR>
Class Process</H2>
<PRE>
<A HREF="../../java/lang/Object.html" title="class in java.lang">java.lang.Object</A>
<IMG SRC="../../resources/inherit.gif" ALT="extended by"><B>java.lang.Process</B>
</PRE>
<HR>
<DL>
<DT>public abstract class <B>Process</B><DT>extends <A HREF="../../java/lang/Object.html" title="class in java.lang">Object</A></DL>
<P>
The <code>Runtime.exec</code> methods create a native process and
return an instance of a subclass of <code>Process</code> that can
be used to control the process and obtain information about it.
The class <code>Process</code> provides methods for performing
input from the process, performing output to the process, waiting
for the process to complete, checking the exit status of the process,
and destroying (killing) the process.
Runtime.exec方法创建一个本地进程,返回Process的子类实例,可以用来控制进程和获取信息。
类Process提供了方法用来从进程输入,输出到进程,等待进程完成,检查进程退出值和杀死进程。
<p>
The <code>Runtime.exec</code> methods may not work well for special
processes on certain native platforms, such as native windowing
processes, daemon processes, Win16/DOS processes on Microsoft Windows, or shell
scripts. The created subprocess does not have its own terminal or
console. All its standard io (i.e. stdin, stdout, stderr) operations
will be redirected to the parent process through three streams
(<code>Process.getOutputStream()</code>,
<code>Process.getInputStream()</code>,
<code>Process.getErrorStream()</code>).
The parent process uses these streams to feed input to and get output
from the subprocess. Because some native platforms only provide
limited buffer size for standard input and output streams, failure
to promptly write the input stream or read the output stream of
the subprocess may cause the subprocess to block, and even deadlock.
Runtime.exec方法对于某些本地平台的特定进程(比如本地窗口进程、守护进程、微软Windows的Win16/DOS进程
或者shell脚本)可能不会工作的很好。这些被创建的子进程没有自己的终端或控制台。所有它们的标准io(即标准输入、标准输出、标准错误)
操作通过三种流(Process.getOutputStream()、Process.getInputStream()、Process.getErrorStream())被重定向至父进程。
父进程使用这些流来写入子进程的输入和获取子进程的输出。因为某些本地平台随标准输入输出流仅提供有限的缓冲大小。
快速地向子进程写入输入或读取输出的失败可能会造成子进程阻塞,甚至死锁。
<p>
The subprocess is not killed when there are no more references to
the <code>Process</code> object, but rather the subprocess
continues executing asynchronously.
当Process对象没有引用时,子进程不会被杀死,而是子进程继续异步执行。
<p>
There is no requirement that a process represented by a <code>Process</code>
object execute asynchronously or concurrently with respect to the Java
process that owns the <code>Process</code> object.
就属于Process对象的Java进程而言,并不要求Process对象表示的进程异步或同步执行。
<P>
<P>
<DL>
<DT><B>Since:</B></DT>
<DD>JDK1.0</DD>
<DT><B>See Also:</B><DD><A HREF="../../java/lang/Runtime.html#exec(java.lang.String)"><CODE>Runtime.exec(java.lang.String)</CODE></A>,
<A HREF="../../java/lang/Runtime.html#exec(java.lang.String, java.lang.String[])"><CODE>Runtime.exec(java.lang.String, java.lang.String[])</CODE></A>,
<A HREF="../../java/lang/Runtime.html#exec(java.lang.String[])"><CODE>Runtime.exec(java.lang.String[])</CODE></A>,
<A HREF="../../java/lang/Runtime.html#exec(java.lang.String[], java.lang.String[])"><CODE>Runtime.exec(java.lang.String[], java.lang.String[])</CODE></A></DL>
<HR>
<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->
<!-- =========== FIELD SUMMARY =========== -->
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../java/lang/Process.html#Process()">Process</A></B>()</CODE>
<BR>
</TD>
</TR>
</TABLE>
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../java/lang/Process.html#destroy()">destroy</A></B>()</CODE>
<BR>
Kills the subprocess.
杀死子进程。</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../java/lang/Process.html#exitValue()">exitValue</A></B>()</CODE>
<BR>
Returns the exit value for the subprocess.
返回子进程的退出值。</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract <A HREF="../../java/io/InputStream.html" title="class in java.io">InputStream</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../java/lang/Process.html#getErrorStream()">getErrorStream</A></B>()</CODE>
<BR>
Gets the error stream of the subprocess.
返回子进程的错误流。</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract <A HREF="../../java/io/InputStream.html" title="class in java.io">InputStream</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../java/lang/Process.html#getInputStream()">getInputStream</A></B>()</CODE>
<BR>
Gets the input stream of the subprocess.
返回子进程的输入流。</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract <A HREF="../../java/io/OutputStream.html" title="class in java.io">OutputStream</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../java/lang/Process.html#getOutputStream()">getOutputStream</A></B>()</CODE>
<BR>
Gets the output stream of the subprocess.
返回子进程的输出流。</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../java/lang/Process.html#waitFor()">waitFor</A></B>()</CODE>
<BR>
causes the current thread to wait, if necessary, until the
process represented by this <code>Process</code> object has
terminated.
使当前线程等待,如果有必要,直到该Process对象表示的进程被终止。</TD>
</TR>
</TABLE>
<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class java.lang.<A HREF="../../java/lang/Object.html" title="class in java.lang">Object</A></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../java/lang/Object.html#clone()">clone</A>, <A HREF="../../java/lang/Object.html#equals(java.lang.Object)">equals</A>, <A HREF="../../java/lang/Object.html#finalize()">finalize</A>, <A HREF="../../java/lang/Object.html#getClass()">getClass</A>, <A HREF="../../java/lang/Object.html#hashCode()">hashCode</A>, <A HREF="../../java/lang/Object.html#notify()">notify</A>, <A HREF="../../java/lang/Object.html#notifyAll()">notifyAll</A>, <A HREF="../../java/lang/Object.html#toString()">toString</A>, <A HREF="../../java/lang/Object.html#wait()">wait</A>, <A HREF="../../java/lang/Object.html#wait(long)">wait</A>, <A HREF="../../java/lang/Object.html#wait(long, int)">wait</A></CODE></TD>
</TR>
</TABLE>
<P>
<!-- ============ FIELD DETAIL =========== -->
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TD>
</TR>
</TABLE>
<A NAME="Process()"><!-- --></A><H3>
Process</H3>
<PRE>
public <B>Process</B>()</PRE>
<DL>
</DL>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Method Detail</B></FONT></TD>
</TR>
</TABLE>
<A NAME="getOutputStream()"><!-- --></A><H3>
getOutputStream</H3>
<PRE>
public abstract <A HREF="../../java/io/OutputStream.html" title="class in java.io">OutputStream</A> <B>getOutputStream</B>()</PRE>
<DL>
<DD>Gets the output stream of the subprocess.
Output to the stream is piped into the standard input stream of
the process represented by this <code>Process</code> object.
返回子进程的输出流。输出流传入Process对象表示的进程的标准输入流。
<p>
Implementation note: It is a good idea for the output stream to
be buffered.
实现注意:将输出流缓冲是个好办法。
<P>
<DD><DL>
<DT><B>Returns:</B><DD>the output stream connected to the normal input of the
subprocess. 连接子进程正常输入流的输出流。</DL>
</DD>
</DL>
<HR>
<A NAME="getInputStream()"><!-- --></A><H3>
getInputStream</H3>
<PRE>
public abstract <A HREF="../../java/io/InputStream.html" title="class in java.io">InputStream</A> <B>getInputStream</B>()</PRE>
<DL>
<DD>Gets the input stream of the subprocess.
The stream obtains data piped from the standard output stream
of the process represented by this <code>Process</code> object.
返回子进程的输入流。该流包括Process对象表示的进程的标准输出流传入的数据。
<p>
Implementation note: It is a good idea for the input stream to
be buffered.
实现注意:将输入流缓冲是个好办法。
<P>
<DD><DL>
<DT><B>Returns:</B><DD>the input stream connected to the normal output of the
subprocess. 连接子进程正常输出流的输入流。</DL>
</DD>
</DL>
<HR>
<A NAME="getErrorStream()"><!-- --></A><H3>
getErrorStream</H3>
<PRE>
public abstract <A HREF="../../java/io/InputStream.html" title="class in java.io">InputStream</A> <B>getErrorStream</B>()</PRE>
<DL>
<DD>Gets the error stream of the subprocess.
The stream obtains data piped from the error output stream of the
process represented by this <code>Process</code> object.
返回子进程的错误流。该流包括Process对象表示的进程的错误输出流传入的数据。
<p>
Implementation note: It is a good idea for the input stream to be
buffered.
实现注意:将输入流缓冲是个好办法。
<P>
<DD><DL>
<DT><B>Returns:</B><DD>the input stream connected to the error stream of the
subprocess.
连接子进程错误流的输入流。</DL>
</DD>
</DL>
<HR>
<A NAME="waitFor()"><!-- --></A><H3>
waitFor</H3>
<PRE>
public abstract int <B>waitFor</B>()
throws <A HREF="../../java/lang/InterruptedException.html" title="class in java.lang">InterruptedException</A></PRE>
<DL>
<DD>causes the current thread to wait, if necessary, until the
process represented by this <code>Process</code> object has
terminated. This method returns
immediately if the subprocess has already terminated. If the
subprocess has not yet terminated, the calling thread will be
blocked until the subprocess exits.
使当前线程等待,如果有必要,直到该Process对象表示的进程被终止。
如果子进程已经被终止则该方法立即返回,调用线程将被锁住直到子进程退出。
<P>
<DD><DL>
<DT><B>Returns:</B><DD>the exit value of the process. By convention,
<code>0</code> indicates normal termination.
进程对象表示的子进程的退出值。按照约定,值0表示正常终止。
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../java/lang/InterruptedException.html" title="class in java.lang">InterruptedException</A></CODE> - if the current thread is
<A HREF="../../java/lang/Thread.html#interrupt()"><CODE>interrupted</CODE></A> by another thread
while it is waiting, then the wait is ended and an
<code>InterruptedException</code> is thrown.
如果该线程等待时被另一线程中断,那么等待结束,抛出InterruptedException。</DL>
</DD>
</DL>
<HR>
<A NAME="exitValue()"><!-- --></A><H3>
exitValue</H3>
<PRE>
public abstract int <B>exitValue</B>()</PRE>
<DL>
<DD>Returns the exit value for the subprocess.
返回子进程的退出值。
<P>
<DD><DL>
<DT><B>Returns:</B><DD>the exit value of the subprocess represented by this
<code>Process</code> object. by convention, the value
<code>0</code> indicates normal termination.
该Process对象表示的子进程的退出值。按照约定,值0表示正常终止。
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../java/lang/IllegalThreadStateException.html" title="class in java.lang">IllegalThreadStateException</A></CODE> - if the subprocess represented
by this <code>Process</code> object has not yet terminated. 如果该Process对象表示的子进程还没有被终止时抛出。</DL>
</DD>
</DL>
<HR>
<A NAME="destroy()"><!-- --></A><H3>
destroy</H3>
<PRE>
public abstract void <B>destroy</B>()</PRE>
<DL>
<DD>Kills the subprocess. The subprocess represented by this
<code>Process</code> object is forcibly terminated.
杀死子进程。该Process对象表示的子进程被强行终止。
<P>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/Process.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<b>Java<sup><font size=-2>TM</font></sup> 2 Platform<br>Std. Ed. v1.4.2</b></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../java/lang/Package.html" title="class in java.lang"><B>PREV CLASS</B></A>
<A HREF="../../java/lang/Runtime.html" title="class in java.lang"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html" target="_top"><B>FRAMES</B></A>
<A HREF="Process.html" target="_top"><B>NO FRAMES</B></A>
<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY: NESTED | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
<font size="-1"><a href="http://java.sun.com/cgi-bin/bugreport.cgi">Submit a bug or feature</a><br>For further API reference and developer documentation, see <a href="../../../relnotes/devdocs-vs-specs.html">Java 2 SDK SE Developer Documentation</a>. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples. <p>Copyright 2003 Sun Microsystems, Inc. All rights reserved. Use is subject to <a href="../../../relnotes/license.html">license terms</a>. Also see the <a href="http://java.sun.com/docs/redist.html">documentation redistribution policy</a>.</font>
</BODY>
</HTML>