The java tool launches a Java application. It does this by
starting a Java runtime environment, loading a
specified class, and invoking that class's main method. The
method declaration must look like the following:
public static void main(String args[])
The method must be declared public and static, it must not
return any value, and it must accept a String array as a
parameter. By default, the first non-option argument is the name
of the class to be invoked. A fully-qualified class name should be used.
If the -jar option is specified, the first non-option argument
is the name of a JAR archive containing class and resource files
for the application, with the startup class indicated by the
Main-Class manifest header.
The Java runtime searches for the startup class, and other classes
used, in three sets of locations: the bootstrap class path, the
installed extensions, and the user class path.
Non-option arguments after the class name or JAR file name are passed
to the main function.
The javaw command is identical to java, except that with
javaw there is no associated console window. Use javaw when
you don't want a command prompt window to appear. The javaw
launcher will, however, display a dialog box with error information
if a launch fails for some reason.
These are the differences between java and oldjava
The oldjava launcher does not support the extension
mechanism. Extension packages can still be used as class and
resource archives.
The oldjava launcher uses the bootstrap class loader for
all classes, while the java launcher uses the bootstrap
class loader only for bootstrap classes. This allows programming
techniques that are incompatible with the base class loader.
With java, the -classpath and -cp
options specify a search path for user classes, and cannot be used
to specify locations for bootstrap classes. With oldjava the
-classpath and -cp options specify locations for
all classes, including bootstrap classes.
Note that java and oldjava do not differ in
their use of the CLASSPATH environment variable. Unless
overridden by -classpath or -cp, CLASSPATH
always specifies the location of user classes, but says nothing
about the bootstrap classes.
The oldjava launcher supports all the Java 2 platform security
features. With oldjava, however, classes loaded from the
class path will not have a protection domain and will therefore
have all permissions which is true only for bootstrap classes with
the java launcher.
This command using oldjava
oldjava -classpath <path> ...
is equivalent to this command using java
java -Xbootclasspath:<path> -Djava.ext.dirs= ...
where in both cases <path> contains
the file rt.jar. (See the SDK File
Structure document for a description of rt.jar and its
location in the SDK software.)
The launcher has a set of standard options that
are supported on the current runtime environment and will be supported in
future releases.
In addition, the default Java HotSpot Client VM provides a set of
non-standard options. The non-standard options
are subject to change in future releases. The Java 2 Classic VM,
invoked by using the -classic option, has a different set of
non-standard options which are described at
Non-Standard Options of the Classic VM.
The Java 2 Classic VM is included only in the Java 2 SDK. It is
not included in the Java 2 Runtime Environment. The -classic
option will not work with the Java 2 Runtime Environment.
Specify a list of directories, JAR archives, and ZIP
archives to search for class files. Class path entries are
separated by semicolons (;). Specifying
-classpath or -cp overrides any setting of the
CLASSPATH environment variable.
Used with java or javaw, -classpath or
-cp only specify the class path for user classes. Used
with oldjava or oldjavaw, -classpath or
-cp specify the class path for both user classes and
bootstrap classes.
If -classpath and -cp are not used and
CLASSPATH is not set, the user class path consists of
the current directory (.).
Set a system property value. If value is a
string that contains spaces, you must enclose the string
in double quotes:
java -Dfoo="some string" SomeClass
-jar
Execute a program encapsulated in a JAR file. The first
argument is the name of a JAR file instead of a startup
class name. In order for this option to work, the manifest of
the JAR file must contain a line of the form
Main-Class: classname.
Here, classname identifies the class having the
public static void main(String[] args)
method that serves as your application's starting point. See
the Jar tool reference page and
the Jar trail of the
Java
Tutorial for information about working with Jar files and
Jar-file manifests.
When you use this option, the
JAR file is the source of all user classes, and other user class
path settings are ignored.
The oldjava and oldjavaw tools do
not support the -jar option.
-verbose
-verbose:class
Display information about each class loaded.
-verbose:gc
Report on each garbage collection event.
-verbose:jni
Report information about use of native methods and other
Java Native Interface activity.
-version
Display version information and exit.
-showversion
Display version information and continue.
-?
-help
Display usage information and exit.
-X
Display information about non-standard options and exit.
Operate in mixed-only mode (the default).
This means that heavily used program segments (hot spots) are
compiled to native code, and the remaining bytecodes are executed
by a bytecode interpreter. This mode provides the fullest
performance benefit offered by the Java HotSpot Client VM.
-Xint
Operate in interpreted-only mode. Compilation to native code
is disabled, and all bytecodes are executed by the interpreter.
The performance benefits offered by the Java HotSpot Client VM's
adaptive compiler will not be present in this mode.
-Xdebug
Start with the debugger enabled. Refer to
jdb description for more
details and an example.
-Xbootclasspath:bootclasspath
Specify a semicolon-separated list of directories, JAR
archives, and ZIP archives to search for boot class files.
These are used in place of the boot class files included in the
Java 2 SDK. Note: Applications that use this option for the
purpose of overriding a class in rt.jar should not be deployed
as doing so would contravene the Java 2 Runtime Environment
binary code license.
-Xbootclasspath/a:path
Specify a semicolon-separated path of directires, JAR
archives, and ZIP archives to append to the default bootstrap
class path.
-Xbootclasspath/p:path
Specify a semicolon-separated path of directires, JAR
archives, and ZIP archives to prepend in front of the default
bootstrap class path. Note: Applications that use this option
for the purpose of overriding a class in rt.jar should not be
deployed as doing so would contravene the Java 2 Runtime Environment
binary code license.
-Xfuture
Perform strict class-file format checks. For purposes of backwards
compatibility, the default format checks performed by the
Java 2 SDK's virtual machine are no stricter than
the checks performed by 1.1.x versions of the JDK software. The
-Xfuture flag turns on stricter class-file format checks
that enforce closer conformance to the class-file format
specification. Developers are encouraged to use this flag
when developing new code because the stricter checks will
become the default in future releases of the Java application
launcher.
-Xnoclassgc
Disable class garbage collection.
-Xincgc
Enable the incremental garbage collector. The incremental
garbage collector, which is off by default, will eliminate
occasional garbage-collection pauses during program execution.
However, it can lead to a roughly 10% decrease in overall
GC performance.