jikes(1)

NAME
jikes - java source to bytecode compiler

SYNOPSIS
jikes [-options] [+options] [@files]
      file.java...

Options, @files, and filenames may be intermixed. Individual options should not be repeated, unless noted below.

DESCRIPTION
Jikes translates Java(TM) source files to bytecode. Features include strict adherence to the language specification, automatic makefile generation and incremental compilation. It is maintained by the Jikes Project.

At this time, jikes only recognizes the full name of options; you cannot abbreviate or group them. You can give different argument types in any order. Options are global, so they affect compilation of files listed earlier on the command line. Duplicated options override the previous one, unless otherwise listed. If an option is listed in the form +T=n, it can also be specified as +T n or even +Tn.

OPTIONS
Jikes may be invoked with the following command-line options:

-bootclasspath path

--bootclasspath path
    Use path for the bootclasspath. This path is searched first for library class files, and is usually set to java/lib/classes.zip or java/jre/lib/rt.jar. This defaults to an empty path.

-classpath path

-cp path

--classpath path
    Use path for CLASSPATH. This path is searched for both user source and compiled class files. This defaults to the current directory.

-d directory

--target-directory directory
    Write class files in the specified directory. Note that this directory is NOT in your classpath unless you list it there as well. This defaults to the current directory.

-debug
    No effect (recognized for compatibility).

-depend

--depend

-Xdepend
    Recompile all used classes.

-deprecation

--deprecation
    Report uses of deprecated features.

-encoding encoding

--encoding encoding
    Use specified encoding to read source files. This is not available in some builds, because it requires a working iconv or ICU encoder. Note that binary distributions for some platforms (such as Windows) do NOT include support for the encoding option, as there is not an adequate transcoding library available on all platforms by default. You can tell if a binary has encoding support or not by running jikes --help and looking for the --encoding option: if it is not listed, then this binary does NOT include support for encoding. This defaults to a platform-dependent encoding (such as ASCII).

-extdirs path

--extdirs path
    Use path for extensions directories. This is typically set to grab jar and zip extension files located in java/jre/lib/ext. This defaults to an empty path.

-g  Equivalent to -gsource,lines,vars.

-gnone|{source,lines,vars}
    Specify which of three classfile debug options should be enabled. If this is not specified, the default is source,lines. source stores the filename of the source file in the class file, lines adds line number tracking to tie bytecodes to their location in the source file, and vars adds a table in the class file which stores the name of local variables and parameters, as well as their scope. This defaults to line and source information, but not vars.

-help

--help

-h

-?  Prints a helpful summary of options, then exit. Overrides all other options, and nothing is compiled.

-J...
    No effect, since jikes is native code, and does not need a Virtual Machine (ignored for compatibility).

-nowarn

--nowarn

-q  Do not issue warning messages. For greater control over warnings and cautions, see the +Z option.

-nowrite

--nowrite
    Do not write any class files, but list which ones would be written if used with -verbose.

-O

--optimize
    Optimize the bytecode. Technically, this means jikes should inline private and final methods where appropriate, but currently it does nothing.

-source release

--source release
    Specify which Java SDK release the source syntax obeys. For example, to treat the assert keyword as a normal identifier, you can use -source 1.3. Setting a lower target results in backward compatibility compilation of old source files. Valid releases are 1.3 (Java Language Specification, 2nd edition), and 1.4 (addition of the assert statement, JSR 41). Plans are underway to eventually support 1.5 (addition of generics: JSR 14; autoboxing, enhanced for-loop, static import, enums, and varargs: JSR 201; metadata: JSR 175; and updated .class file format: JSR 202; ultimately the Java Language Specification, 3rd edition). If not specified, this defaults to the valid value closest to the one specified or defaulted for -target (typically 1.4).

-sourcepath path

--sourcepath path
    Use path for specifying user "source only" directories. Class files in this path are ignored unless listed in other paths. This defaults to the empty path.

-target release

--target release
    Specify which Java SDK release the bytecode should target. For example, exception chaining was introduced in the 1.4 release, so a failed class literal can chain the NoClassDefFoundError to its original ClassNotFoundException; while the behavior in the 1.3 release simply discards the original exception. To get the old behavior, you can use -target 1.3. Setting a lower target results in forward compatibility to older virtual machines, and some source constructs will be compiled to less efficient workarounds in order to avoid known virtual machine bugs or deficiencies. However, a lower target may occaisionally produce incorrect semantic behavior. Furthermore, some language features require virtual machine support, where there are no known workarounds in earlier releases: the assert statement requires 1.4 (unless you also use -noassert), and the planned addition of typesafe enumerations will require 1.5. The planned addition of type parameterization (also known as generics) will work with 1.1. Valid releases are 1.1, 1.2, 1.3, 1.4, and 1.4.2; plans are underway to support 1.5. If not specified, this defaults to the value specified for -source, and if that is not specified, this defaults to 1.4.2.

-verbose

--verbose

-v  List files read and written. Also useful with -nowrite for a dry run to track dependencies.

-version

--version

-V  Print a version message, and contact information, then exit. Overrides all other options except --help, and nothing is compiled.

-Werror
    Equivalent to +Z2, provided for javac compatibility.

-Xstdout
    Write error messages to standard output, not stderr. At the moment, this is incompatible with javac, which takes an argument as the name of the file where it will direct compiler message output.

-Xswitchcheck
    Synonym to +Pswitchcheck. Warns about fallthrough switch cases.

++

--incremental
    Compile in incremental mode. In this mode, jikes stays resident, and every keypress of Enter will trigger a recompilation of every source file rendered out-of-date by file modifications since the last compilation phase. To exit this mode, type q then Enter.

+a

--noassert
    Do not emit assert statements. This option is not recommended for disabling asserts, because asserts are compiled to have minimal overhead when disabled through the virtual machine. Rather, it is intended for reducing classfile size, and to allow the use of -target 1.3 or earlier virtual machine targets that do not support the assert statement.

+B

--nobytecode
    Do not invoke bytecode generator. Perform semantic checks only.

+D

--dump-errors
    Report errors immediately in emacs-form without buffering.

+DR=filename
    Write report of dependencies to specified file.

+E

--emacs
    List errors in emacs-form.

+F

--full-dependence
    Do full dependence check except for Zip and Jar files.

+Kname=TypeKeyWord
    Map name to type keyword. Multiple options are needed to change more than one type keyword.

+M

--makefile
    Generate makefile dependencies.

+OLDCSO
    Select to use same classpath search order as in older versions of Jikes (for compatibility).

+P[group-name]
    Pedantic compilation - issues lots of warnings. With no group name, this turns on a default set of pedantic warnings which does not correspond to any of the named groups of warnings. Specifying a group name turns on or off that particular named group of warnings, depending on the presence of the no- prefix. Some named groups are enabled by default. These are marked as such in the output of jikes --help. At present, the recognized group names are effective-java, which warns about the anti-patterns mentioned in Joshua Bloch's book "Effective Java"; modifier-order, which warns about the recommended ordering of multiple modifiers; redundant-modifiers, which warns about explicitly mentioning an implied modifier; serial, which warns about serializable classes without serialVersionUID fields; shadow, which warns about shadowing and hiding of fields; switchcheck, which warns about fallthrough between cases of switch statements; naming-convention, which warns about names that violate Java naming conventions; unused-type-imports, which warns about unused single-type import statements; and unused-package-imports, which warns about unused package import statements. In addition, the pseudo-group all stands for all named groups of warnings, but not the anonymous group controlled by +P. Multiple +P options are cumulative in effect. For example, to get all pedantic warnings except modifier ordering, use +P +Pall +Pno-modifier-order. To get just warnings about redundant modifiers, without other pedantic warnings, use +Predundant-modifiers.

--pedantic
    Synonym for +P, but does not accept flags.

+T=n

--tab=n
    Set value of tab to n spaces. If not specified, the default is 8.

+U

--unzip-dependence
    Do full dependence check including Zip and Jar files.

+Z0 Do not issue warning messages.

+Z1 Treat cautions as errors.

+Z2 Treat both warnings and cautions as errors.

+Z

--zero-cautions
    Equivalent to +Z1 for compatibility with earlier versions of Jikes.

An argument may have the form @file, which names a file holding additional command-line arguments. Each line in that file is treated as an argument, except that lines beginning with @ are not expanded recursively. Lines may optionally be quoted using either single or double quotes. There are no escape characters ('\' is not treated as special).

FILES
Jikes has several options related to classpath searching. The -bootclasspath, -extdirs, and -sourcepath options are the same as in javac. In addition to being specified on the command line, the environment variables BOOTCLASSPATH, EXTDIRS, and SOURCEPATH may also be used to specify values for these options, respectively. Jikes also has the -classpath option as in javac, with the corresponding environment variable CLASSPATH. The classpath may also be specified in the environment variable JIKESPATH, although this use is discouraged. If JIKESPATH and CLASSPATH coexist, preference will be given to JIKESPATH. A value specified on the command line will be always be given preference over the value of any environment variable. All the directories and files specified in these options or environment variables must be in the platform path format (usually a colon-separated list, e.g., ".:$HOME/java/jre/lib/rt.jar").

SEE ALSO
Jikes Project homepage http://ibm.com/developerworks/opensource/jikes/ for news of recent developments, to download new versions, to report bugs, or to learn how to participate in the development process.

COPYRIGHT
Copyright © 1996-2003, 2004 IBM Corporation and others. All Rights Reserved.

Jikes is licensed under the IBM Public License, included in the file license.htm distributed with the program, and also available at the Jikes Project URL. Portions of Jikes are derived from prior, freely distributable projects. For more details on this code, see the comments in src/double.h, src/platform.h, and src/unzip.h.

NOTES
Java is a registered trademark of Sun Microsystems, Inc.