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