java - The Java Interpreter

java interprets (executes) Java bytecodes.

SYNOPSIS

java [ options ] entryname [ argument ... ]
javaw [ options ] entryname [ argument ... ]

DESCRIPTION

The java tool is a simple command-line launcher for a Java virtual machine. The javaw tool is special Win32 launcher which uses a special console window.

Invocation

The entryname argument specifies the initial point of execution. This argument can have one of two meanings:

The entry point class must have a method with this signature:

    public static void main(String[])

The java tool calls main(), passing it any command line arguments supplied after entryname.

Typically, the compiled class is in a .class file produced by a java compiler, such as javac. For example if the file MyClass.class contains class MyClass, then this command:

    C:\> java MyClass 
loads MyClass from MyClass.class and calls MyClass.main(). Any additional command line arguments are passed to main().

The specific behavior of java depends on the CLASSPATH environment variable. The .class file can be in any directory, ZIP archive, or JAR archive mentioned in CLASSPATH. (Archives must not use compression.) Note that java won't search the current directory unless the current directory is in CLASSPATH.

If CLASSPATH is properly set and java still can't find entryname, try using a fully-qualified class name. For example:

    % java COM.MyCompany.MyPackage.MyClass

The virtual machine also uses CLASSPATH to resolve any class references.

JAR Files and Extensions

In this release, the -new option must be used when launching a program that is contained in a JAR file or when launching a program that makes use of extensions. The need to use the -new option will be removed in a future release.

JAR files
A program can be encapsulated in a JAR archive. The archive can contain all the class files and resources that define the program. In this release, program files in a JAR archive can be passed to the launcher as a unit, using the -new and -jar options in conjunction:

% java -new -jar foo.jar

Extensions
In this release, programs that make use of extensions must be launched by using the -new option:

% java -new MyClass

Verification

The interpreter can determine whether a class is legitimate through the mechanism of verification. Verification ensures prior to their execution that class files do not violate any language constraints.

Using a JIT

This release supports execution with a Just In Time bytecode compiler, or JIT. When a class is loaded, the JIT translates the class bytecodes into native machine code. Using a JIT causes a slight delay after each class load, but can improve overall program performance. In some cases, execution time will improve by a factor of ten.

This release does not use a JIT by default. To use a JIT, pass the name of the JIT via the JAVA_COMPILER environment variable or the java.compiler property. If JAVA_COMPILER and java.compiler have conflicting values, java.compiler is used. On Windows, a JIT is in a file named jitname.dll, where jitname is the name of the JIT. The launcher first searches for the JIT file in its own directory, then in each directory in the PATH environment variable.

The Windows version of the JDK software includes a Symantec JIT named "symcjit". (Symantec JIT copyright © 1996-1998 by Symantec Corporation. All rights reserved.) You can enable this JIT via the JAVA_COMPILER environment variable:

    C:\> set JAVA_COMPILER=symcjit
    C:\> java MyClass 
To disable the JIT, unset JAVA_COMPILER:
    C:\> set JAVA_COMPILER= 
To enable the JIT from the command line, use the -D option:
    C:\> java -Djava.compiler=symcjit MyClass 

OPTIONS

The Java Interpreter has a set of standard options that are supported on the current Java virtual vachine and will be supported on future VMs. In addition, there is a set of non-standard options that are supported on the current virtual machine, but are subject to change in future virtual machines. The non-standard options begin with -X.



Standard Options

-classpath   path
Specifies the path java uses to look up classes. Overrides the default or the CLASSPATH environment variable if it is set. Directories are separated by semicolons. Thus the general format for path is:
   .:<your_path>
For example:
      C:\xyz\classes;C:\usr\local\java\classes
      

-version
Print the build version information.

-help
Print a usage message.

-v,  -verbose,  -verbose:class
Causes java to print a message to stdout each time a class file is loaded.

-verbose:gc
Causes the garbage collector to print out messages whenever it frees memory.

-verbose:jni
Prints JNI-related messages including information about which native methods have been linked and warnings about excessive creation of local references.

-DpropertyName=newValue
Redefines a property value. propertyName is the name of the property whose value you want to change and newValue is the value to change it to. For example, this command line
   C:\> java -Dawt.button.color=green ...
sets the value of the property awt.button.color to "green". java accepts any number of -D options on the command line.

-jar
Note: In this release, the -jar option must be used in conjunction with the -new flag:  java -new -jar ...

Execute a Java program encapsulated in a JAR archive. The java tool gets the initial class from the jarfile manifest header Main-Class. For example, if the program entry point is COM.MyCompany.MyPackage.MyClass.main(), then this entry must appear in the manifest:

    Main-Class: COM.MyCompany.MyPackage.MyClass

-usepolicy[:policyfile]
Note: In this release, the -usepolicy option must be used in conjunction with the -new flag:  java -new -usepolicy[:policyfile] ...

Use a security policy. The policy is defined in policyfile, if specified, or in a installation-dependent default if policyfile is not specified.

Without -usepolicy, a Security Manager is not installed, and the program runs without security restrictions.

-X
Prints help on non-standard options and exits.


Non-Standard Options

-Xdebug
Allows the Java debugger, jdb, to attach itself to this java session. When -Xdebug is specified on the command line java displays a password which must be used when starting the debugging session.

-Xmxx
Sets the maximum size of the memory allocation pool (the garbage collected heap) to x. The default is 16 megabytes of memory. x must be greater than or equal to 1000 bytes. The maximum memory size must be greater than or equal to the startup memory size (specified with the -Xms option, default 16 megabytes).

By default, x is measured in bytes. You can specify x in either kilobytes or megabytes by appending the letter "k" for kilobytes or the letter "m" for megabytes.

-Xmsx
Sets the startup size of the memory allocation pool (the garbage collected heap) to x. The default is 1 megabyte of memory. x must be > 1000 bytes. The startup memory size must be less than or equal to the maximum memory size (specified with the -Xmx option, default 16 megabytes).

By default, x is measured in bytes. You can specify x in either kilobytes or megabytes by appending the letter "k" for kilobytes or the letter "m" for megabytes.

-Xnoasyncgc
Turns off asynchronous garbage collection. When activated no garbage collection takes place unless it is explicitly called or the program runs out of memory. Normally garbage collection runs as an asynchronous thread in parallel with other threads.

-Xnoclassgc
Turns off garbage collection of Java classes. By default, the Java interpreter reclaims space for unused Java classes during garbage collection.

-Xprof
Starts the Java Runtime with Java profiling enabled. By default, this puts profile results in the file ./java.prof.

-Xprof:file
Starts the Java Runtime with Java profiling enabled. This form of the flag allows the user to specify a different output file for the profile information. For example, the flag -Xprof:myprog.prof enables profiling and puts the profile results in the file myprog.prof rather than in the default file ./java.prof.

-Xhprof[:file=<file>,depth=<n>,top=<n>,sort=a|l]
Outputs heap profiling data.
file=<file> specify output file (default is ./heap.prof).
depth=<n> limit the stack trace to n (default is 5).
top=<n> print the top n allocation sites (default is 20).
sort=<a|l> sort the output based on the number of allocation (a) or the number of live objects (l) (default is "a").

-Xssx
Each Java thread has two stacks: one for Java code and one for C code. The -Xss option sets the maximum stack size that can be used by C code in a thread to x. Every thread that is spawned during the execution of the program passed to java has x as its C stack size. The default units for x are bytes. The value of x must be greater than or equal to 1000 bytes.

You can modify the meaning of x by appending either the letter "k" for kilobytes or the letter "m" for megabytes. The default stack size is 128 kilobytes ("-Xss128k").

-Xossx
Each Java thread has two stacks: one for Java code and one for C code. The -Xoss option sets the maximum stack size that can be used by Java code in a thread to x. Every thread that is spawned during the execution of the program passed to java has x as its Java stack size. The default units for x are bytes. The value of x must be greater than or equal to 1000 bytes.

You can modify the meaning of x by appending either the letter "k" for kilobytes or the letter "m" for megabytes. The default stack size is 400 kilobytes ("-Xoss400k").

-Xverify
Performs byte-code verification on the class file.

-Xverifyremote
Runs the verifier on all code that is loaded into the system via a classloader. Xverifyremote is the default for the interpreter.

-Xnoverify
Turns verification off.

ENVIRONMENT VARIABLES

CLASSPATH
A semicolon-separated list of locations to search for classes. Each entry is a file directory, a ZIP archive, or JAR archive. The following example searches the current directory, a private classes directory, a public JAR archive, and a public ZIP archive.
   .;c:\home\me\classes;c:\usr\local\java\classes.jar;c:\usr\local\browser

SEE ALSO

javac, jar, javadoc, CLASSPATH

On the JavaSoft Web Site
Default Policy Implementation and Policy File Syntax
Security Enhancements