


jikes(1)                                                 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 gen-
       eration and incremental compilation. It is maintained by the Jikes Pro-
       ject.

       At  this time, jikes only recognizes the full name of options; you can-
       not 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.




                                                                1





jikes(1)                                                 jikes(1)


       -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  avail-
              able  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  avail-
              able  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  plat-
              form-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 -g:source,lines,vars.


       -g:none|{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  loca-
              tion 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.





                                                                2





jikes(1)                                                 jikes(1)


       -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 Vir-
              tual 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 writ-
              ten if used with -verbose.


       -O

       --optimize
              Optimize the bytecode.  Technically,  this  means  jikes  should
              inline  private  and  final  methods where appropriate, but cur-
              rently 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;  auto-
              boxing,  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).





                                                                3





jikes(1)                                                 jikes(1)


       -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 fea-
              tures 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  com-
              piled.


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





                                                                4





jikes(1)                                                 jikes(1)


       -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 resi-
              dent, 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 min-
              imal   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.





                                                                5





jikes(1)                                                 jikes(1)


       +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-pat-
              terns  mentioned  in Joshua Bloch's book "Effective Java"; modi-
              fier-order, which warns about the recommended ordering of multi-
              ple modifiers; redundant-modifiers, which warns about explicitly
              mentioning an implied modifier; serial, which warns about  seri-
              alizable  classes without serialVersionUID fields; shadow, which
              warns about shadowing and hiding of fields;  switchcheck,  which
              warns about fallthrough between cases of switch statements; nam-
              ing-convention, which warns about names that violate Java naming
              conventions;  unused-type-imports, which warns about unused sin-
              gle-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 warn-
              ings 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.





                                                                6





jikes(1)                                                 jikes(1)


       +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 addi-
       tional command-line arguments.  Each line in that file is treated as an
       argument,  except  that  lines beginning with @ are not expanded recur-
       sively.  Lines may optionally be quoted using either single  or  double
       quotes.   There  are  no  escape characters ('\' is not treated as spe-
       cial).


FILES
       Jikes has several options related to classpath searching.   The  -boot-
       classpath,  -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 vari-
       able 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").





                                                                7





jikes(1)                                                 jikes(1)


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  (C)  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 com-
       ments in src/double.h, src/platform.h, and src/unzip.h.


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





































                                                                8


