Analyze and summarize characteristics
of Java classes as a result of both intraprocedural and interprocedural
analyses.
This package is divided into seven groups of functions:
-
ClassLoaders:
-
As in Java, all classes analyzed are members of a ClassLoader. Each ClassLoader
is unique, and has a unique name. ClassLoaders define the name space used
for binding symbolic references to classes, fields and methods. ClassLoaders
are organized as a tree, with the root ClassLoader generally being referred
to as the "primordial" ClassLoader.
-
The ClassLoader classes in this package are:
-
{@link com.ibm.jcs.cs.JCSClassLoader JCSClassLoader}:
Provides the base set of ClassLoader functions.
-
{@link com.ibm.jcs.cs.JarUrlLoader JarUrlLoader}: Loads classes from
JAR and ZIP files. These files may be in the local file system
or specified via URLs. This is an abstract class.
-
{@link com.ibm.jcs.cs.JarUrlLoaderCFP JarUrlLoaderCFP}:
Implements JarUrlLoader.
This class is not intended to be used directly.
-
Classes:
-
Classes contain members: fields and methods. Classes are also members
of ClassLoaders. Each Class instance is unique, belonging to a single
ClassLoader. Also, each ClassLoader can only have one Class with
the same fully qualified name (which includes the package name).
As in Java, two Class with the same name can not be in the same name space.
So, if a Class with the same name exists in a ClassLoader between the ClassLoader
attempting to add the class and the primoridal ClassLoader, the request
to add the Class will be rejected. However, two Classes with the
same fully qualifed name can be in different name spaces (different branches
of the ClassLoader tree). The fully qualified Class name and the
ClassLoader in which it is a member uniquely defines a Class.
-
The Classes classes are:
-
{@link com.ibm.jcs.cs.JCSClass JCSClass}:
Provides the base set of ClassLoader functions.
-
{@link com.ibm.jcs.cs.JCSClassLP JCSClassLP}:
This abstract subclass of JCSClass that enables lazy loading / processing
of class files.
-
{@link com.ibm.jcs.cs.JCSClassCFP JCSClassCFP}:
Implements JCSClassLP.
This class is not intended to be used directly.
-
Fields:
-
Fields are members of Classes. Each field instance "declared" in a class
must have a unique name. While each field instance is unique, the
fully qualified name (the name including the package and class names) may
not be unique since a Class with the same name and a field with the same
name may exist in more than one ClassLoader.
-
The Fields classes are:
-
{@link com.ibm.jcs.cs.JCSField JCSField}
-
Methods:
-
Methods are members of Classes. Each method instance "declared" in a class
must have a unique signature. While each method instance is unique,
the fully qualified signature (the signature including the package and
class names) may not be unique since a Class with the same name and a method
with the same signature may exist in more than one ClassLoader.
-
The Methods classes are:
-
{@link com.ibm.jcs.cs.JCSMethod JCSMethod}
-
{@link com.ibm.jcs.cs.JCSMethodLP JCSMethodLP}
-
{@link com.ibm.jcs.cs.JCSMethodCFP JCSMethodCFP}
-
{@link com.ibm.jcs.cs.JCSMethodXML JCSMethodXML}
-
Sites:
-
During intraprocedural analysis for each method, sites of interest are
identified and state associated with those sites is recorded, usually in
a JCSMethod instance. Some of these sites also are referenced by
TypeFunct instances.
-
The sites classes are:
-
{@link com.ibm.jcs.cs.CallSite CallSite}
-
{@link com.ibm.jcs.cs.FieldReference FieldReference}
-
{@link com.ibm.jcs.cs.PutReference PutReference}
-
{@link com.ibm.jcs.cs.ThrowReference ThrowReference}
-
Security classes:
-
Several classes are defined to provide security related information needed
by analyses. (Should go into com.ibm.jcs.security)
-
The security classes are:
-
{@link com.ibm.jcs.cs.JCSSecurityManager JCSSecurityManager}
-
{@link com.ibm.jcs.cs.JCSProtectionDomain JCSProtectionDomain}
-
Other classes:
-
The other class in this package are most utility methods or base classes
for the classes described above.
-
The other classes include:
-
{@link com.ibm.jcs.cs.JCSBasicBlock JCSBasicBlock}
-
{@link com.ibm.jcs.cs.JCSExceptionHandler JCSExceptionHandler}
-
{@link com.ibm.jcs.cs.LoadersSetup LoadersSetup} (put into a cs.util package?)
Package Specification
Links and descriptions to other documentation that may be relevant
Related Documentation
Links for overviews, tutorials, examples, etc.: