Table of Contents

  1. From Objects to Components
  2. The Class Loader Architecture
    1. Assembling an Application
    2. Goals of the Class Loader Architecture
    3. Explicit and Implicit Class Loading
    4. The Class Loader Rules
    5. Hot Deployment
    6. Unloading Classes
    7. Bootpath, Extensions Path, and Classpath
    8. Debugging Class Loading
    9. Inversion and the Context Class Loader
  3. Type Information and Reflection
    1. The Binary Class Format
    2. Reflection
    3. Reflective Invocation
    4. Dynamic Proxies
    5. Reflection Performance
    6. Package Reflection
    7. Custom Metadata
  4. Serialization
    1. Serialization and Metadata
    2. Serialization Basics
    3. Using readObject and writeObject
    4. Matching Streams with Classes
    5. Explicitly Managing Serializable Fields
    6. Abandoning Metadata
    7. Object Graphs
    8. Object Replacement
    9. Finding Class Code
  5. Customizing Class Loading
    1. Java 2 Security
    2. Custom Class Loaders 
    3. Protocol Handlers
    4. Getting Past Security to the Loader You Need
    5. Reading Custom Metadata
  6. The Java Native Interface
    1. Why Interoperate?
    2. The Dangers of Native Code
    3. Finding and Loading Native Code
    4. Calling Java From C++
    5. Error Handling in JNI
    6. Resource Management
  7. Generative Programming
    1. Why Generate Code?
    2. OO Approaches to Modeling Variabilities
    3. Why Generate Code with Java?
    4. Code Generation in RMI
    5. Code Generation in JSP
    6. Code Generation in EJB
    7. Generating Strongly-typed Collections
    8. Generating Custom Serialization Code

Stuart Halloway