Provided by: japitools_0.9.7+git20150619-1_all bug

NAME

       japize - Produce a listing of an API in a machine-readable format.

SYNOPSIS

       japize [unzip] [as <name>] apis <zipfile>|<dir> ... +|-<pkgpath> ...

DESCRIPTION

       japize is part of japitools, designed to test for compatibility between Java APIs.

       They  were  originally  designed  for  testing free implementations of Java itself for compatibility with
       Sun's JDK, but they can also be used for testing backward compatibility between versions of any API.

       The tools are japize and japicompat. Japize is a Java program which emits  a  listing  of  an  API  in  a
       machine-readable  format.  Japicompat  then  takes  two  such  listings  and  compares  them  for  binary
       compatibility, as defined by Sun in the Java Language Specification.

       At least one +<pkgpath> is required. <name> will have ".japi" and/or ".gz" appended as appropriate.

       The word "apis" can be replaced  by  "explicitly",  "byname",  "packages"  or  "classes".  These  options
       indicate whether something of the form "a.b.C" should be treated as a class or a package. You may specify
       this unambiguously by using one of the forms "a.b.cpackage," or "a.b,CClass".

OPTIONS

       unzip  disable  zipping  of the output with gzip. Zipping the output is highly recommended since it saves
              huge amounts of space. The only situations where you might not want to use  gzip  compression  are
              when  memory  and CPU usage are extremely tight or if your JVM does not implement GZIPOutputStream
              correctly (in which case you might still want to gzip the resulting file manually).

       as <name>
              Specifying this option tells japize to write its output to a file with the  specified  name.  When
              writing  to  a  file  with  the  "as"  option,  japize insists on writing to a file name ending in
              .japi.gz for compressed files, or .japi for  uncompressed  files.  If  the  filename  you  specify
              doesn't have the right extension, japize will add parts to it to ensure that it does.

              If  the  "as"  option is omitted, japize will write to standard output. In this case japize has no
              control over the filename you use, but it is strongly recommended  to  use  a  filename  with  the
              correct  extension  (".japi.gz"  unless  the  "unzip"  option was specified). If you use any other
              extension, japicompat and other tools may be unable to recognize the format.

       apis | explicitly | byname | packages | classes
              This option has a dual role: it indicates the boundary between  japize  options  (unzip,  as)  and
              other arguments (files and packages), but also tells japize how to deal with ambiguously specified
              arguments.  See "+|-<pkgpath>" below for details on the behavior of each option. If you are unsure
              which to specify, "apis" is a safe choice.

              apis
              a.b.c is tried both as a package and a class. This will always do what you want (which is why apis
              is described as the safe  default)  but  at  the  expense  of  possibly  doing  extra  unnecessary
              processing trying to find the wrong thing.

              explicitly
              pkgpaths of the form a.b.c are illegal - you must use the explicit form.

              byname
              a.b.c  will  be  processed as a package if "c" starts with a lowercase letter, or as a class if it
              starts with an uppercase  one.  This  usually  does  what  you  want  but  fails  on  things  like
              org.omg.CORBA.

              packages
              a.b.c  will  be  processed as a package. If processing for a class is needed, it must be specified
              explicitly.

              classes
              a.b.c will be processed as a class. If processing for a package is needed, it  must  be  specified
              explicitly.

       <zipfile> | <dir>
              Any  arguments  after  "apis"  that  do  not  start  with  "+"  or "-" are taken to be zipfiles or
              directories. These should be specified exactly as you would put them  in  your  CLASSPATH  (except
              separated  by  spaces  rather than colons). Anything that's a file will be assumed to be a zip (or
              jar) file, so you can't specify a .class file directly - if you need to do that you should specify
              the folder containing it and then name the class for processing.

       +|-<pkgpath>
              To specify which classes are included, use +pkgpath to add pkgpaths to be scanned and -pkgpath  to
              exclude  sub-pkgpaths  of  these.  You  MUST specify at least one +pkgpath option to specify which
              pkgpath to include, otherwise Japize could happily scan through all the zipfiles  and  directories
              but  not  actually  process  any of the classes. Since that would be a useless thing to do, japize
              gives an error instead.

              A "pkgpath" refers to either a package (which includes, by implication, all sub-packages of it) or
              a single class. A pkgpath for a package looks like "com.foo.pkg.sub," and a pkgpath  for  a  class
              looks  like  "com.foo.pkg,Cls".  The  existence and placement of the comma indicates unambiguously
              which type of path is intended.

              Most of the time, though, it's a pain to have to put in commas in names  that  are  familiar  with
              dots  instead, and get the comma placement exactly right. For this reason, japize accepts pkgpaths
              containing only dots, and lets you tell it what to make of  those  names.  The  interpretation  of
              "a.b.c"  as  a  pkgpath  depends  on  whether you specified apis, explicitly, byname, packages, or
              classes.

EXAMPLE

       Sun's JDK 1.1 includes classes in java.awt.peer and in java.text.resources  that  are  not  part  of  the
       public  API,  even  though  they  are  public  classes;  however, every other class in the java.* package
       hierarchy is part of the public API. The syntax to construct a useful jdk11.japi.gz would therefore be:

       $ japize as jdk11 apis classes.zip +java -java.awt.peer -java.text.resources

       Note that since all pkgpath arguments here are packages, you could save a small amount of  processing  by
       doing this instead:

       $ japize as jdk11 packages classes.zip +java -java.awt.peer -java.text.resources

       or even this:

       $ japize as jdk11 explicitly classes.zip +java, -java.awt.peer, -java.text.resources,

SEE ALSO

       japicompat(1) Test Java APIs for binary backwards compatibility.
       japilist(1) List the contents of japi files.
       japiohtml(1) Convert japicompat output to pretty html format.
       japiotext(1) Convert japicompat output to readable plain text format.

                                                 October 6, 2005                                       JAPIZE(1)