-
Java Secrets
- Preface
-
About the Author
-
Part I—How Java Works
-
Chapter 1—Introducing Java SECRETS
- A Little Knowledge Can Be a Dangerous Thing
-
What’s in This Book?
- Part I: How Java Works
- Part II: The sun Classes
- Part III: Platform-Dependent Java
-
Why Java Secrets?
- Broader applicability
- More power
- Inspiration
-
Where Did the Secrets Come From?
- Where is the documentation?
- The source code
- The API documentation
- What Versions of Java Are Covered?
-
Some Objections
- Java is supposed to be platform independent
- Why aren’t these things documented?
- FUD (fear, uncertainty, and doubt)
- How secret is this, anyway?
- Summary
-
Chapter 2—Primitive Data Types
- Bytes in Memory
- Variables, Values, and Identifiers
-
Place-Value Number Systems
- Binary notation
- Hexadecimal notation
- Octal notation
-
Integers
- ints
- Long, short, and byte
-
Floating-Point Numbers
- Representing floating-point numbers in binary code
- Special values
- Denormalized floating-point numbers
-
CHAR
- ASCII
- ISO Latin-1
- Unicode
- UTF8
- Boolean
-
Cross-Platform Issues
- Byte order
- Unsigned integers
- Integer widths
-
Conversions and Casting
- Using a cast
- The mechanics of conversion
-
Bit-Level Operators
- Some terminology
- Bitwise operators
- Bit shift operators
- Summary
-
Chapter 2—Primitive Data Types
- Bytes in Memory
- Variables, Values, and Identifiers
-
Place-Value Number Systems
- Binary notation
- Hexadecimal notation
- Octal notation
-
Integers
- ints
- Long, short, and byte
-
Floating-Point Numbers
- Representing floating-point numbers in binary code
- Special values
- Denormalized floating-point numbers
-
CHAR
- ASCII
- ISO Latin-1
- Unicode
- UTF8
- Boolean
-
Cross-Platform Issues
- Byte order
- Unsigned integers
- Integer widths
-
Conversions and Casting
- Using a cast
- The mechanics of conversion
-
Bit-Level Operators
- Some terminology
- Bitwise operators
- Bit shift operators
- Summary
-
Chapter 3—Classes, Strings, and Arrays
- The Heap
-
Pointers, Handles, and References
- What is a pointer?
- What is a handle?
- What is a reference?
- The Class Class
-
The Object Class
- Cloning
- Equality
- Finalization
- Runtime type information
- Hash codes
- Threading
- Strings
-
Arrays
- Multidimensional arrays
- Array classes and objects
- System.arraycopy()
-
Strings
- String implementation
- StringBuffers
-
java.util Data Structures
- Vectors
- Bitsets
- Stack
- Summary
-
Chapter 4—The Java Virtual Machine
- Reading Compiled Files
-
Reading Class Files
- Magic number
- Minor version
- Major version
- Constant pool
- Access flags
- thisClass
- Superclass
- Interfaces
- Attributes
- Fields
- Methods
-
Putting It All Together
- Import statements
- Access specifiers
- Class and superclass
- Interfaces
- Fields
- Methods
- Legal Issues
-
Accessing Class Files
- Copying .class files
- Zip files
- Jar files
- Summary
-
Chapter 5—Java Byte Code
- Byte Code Mnemonics
- Using Mnemonics in the Disassembler
- Stacks, Frames, and Pools
-
The Opcodes
- Nop
- Pushing values onto the stack
- Stack manipulation
- The local variable array
- Arithmetic
- Bit manipulation
- The iinc instruction
- Conversion codes
- Comparison instructions
- Unconditional branching
- Switching
- Objects
- Arrays
- Exceptions
- Type checking
- Threads: monitorenter and monitorexit
- Decompilers and Other Tools
- Summary
-
Chapter 1—Introducing Java SECRETS
-
Part II—The Sun Classes
-
Chapter 6—Threads and Garbage Collection
-
Threads
- Cooperative versus preemptive threads
- Native versus emulated threads
-
Garbage Collection
- Reference counting
- Mark and sweep
- Generational garbage collection
- Summary
-
Threads
-
Chapter 7—Controlling Applets
- What Is An Applet?
-
Applets Are Components Too
- main() methods for applets
- Including applets in non-applets
- Dynamically loading applets
-
Stubs and Context
- Writing applet contexts
- Writing applet stubs
- Better main() methods for applets
- Loading Classes
- Setting Security Policies
- Loading Applets from Web Pages
- Summary
-
Chapter 8—Introducing the Sun Classes
- What the Sun Classes Are
- Why the Sun Classes Exist
-
Using the Sun Classes Safely
- Put the classes you use on your Web server
- Distribute the classes with your application
- Write an equivalent class
- Legal issues
- Checking for the presence of the sun classes
- Checking for methods and fields
- Summary
-
Chapter 9—Using the sun.applet Classes to View Applets
- The sun.applet Package
-
The AppletViewer Class
- The constructor
- Other methods
- The AppletContext methods
- The AppletPanel and AppletViewerPanel Classes
- The AppletClassLoader Class
-
The AppletSecurity Class
- Network security
- Host security
- Runtime security
- Class system security
- File system security
-
Support Classes
- AppletAudioClip
- AppletThreadGroup
- AppletCopyright
- AppletProps
- TextFrame
- Summary
-
Chapter 10—Controlling Audio Playback with sun.audio
- AppletAudioClip
- AudioData
- AudioPlayer
-
The Audio Streams
- AudioStream
- NativeAudioStream
- AudioTranslatorStream
- AudioDataStream
- ContinuousAudioDataStream
- AudioStreamSequence
- AudioDevice
- The Process
- Putting It All Together
- Summary
-
Chapter 11—Controlling the AWT with the sun.awt Package
-
Aligning Objects with the sun.awt LayoutManagers
- HorizBagLayout
- VerticalBagLayout
- VariableGridLayout
- OrientableFlowLayout
- FocusingTextField
- Controlling Screen Updating
- Summary
-
Aligning Objects with the sun.awt LayoutManagers
-
Chapter 12—Encoding and Decoding Data with the sun.misc Package
- Coding Binary Data in ASCII
- The CharacterEncoder and CharacterDecoder Classes
- HexDump Encoding
- Base64 Encoding
- UUEncoding
- UCEncoding
- Creating New Encodings
- The CRC class
- Summary
-
Chapter 13—Network Servers and Clients in the sun.net Package
-
Writing Network Servers
- The sun.net.NetworkServer Class
- Subclassing NetworkServer
-
Writing Network Clients
- The sun.net.NetworkClient class
- Subclassing NetworkClient
-
TransferProtocolClient
- The TransferProtocolClient class
- Subclassing TransferProtocolClient
- Summary
-
Writing Network Servers
-
Chapter 14—Sending Mail with the sun.net.smtp Package
-
SmtpClient
- The constructors
- The methods
- Exceptions
- Choosing an SMTP Server
- Summary
-
SmtpClient
-
Chapter 15—Reading News via NNTP with the sun.net.nntp Package
-
NewsgroupInfo
- Creating NewsGroupInfo objects
- Resetting article numbers
-
NntpClient
- Opening a connection to the server
- Reading articles
- Posting news
- Other commands
- Summary
-
NewsgroupInfo
-
Chapter 16—Transferring Files with the sun.net.ftp Package
- Overview of the sun.net.ftp Package
- The FTP Protocol
- The FtpClient Class
-
Subclassing FtpClient
- IftpClient
- DebugFtpClient
- FullFtpClient
- Summary
-
Chapter 17—Communicating with Web Servers
-
Message Formats
- MessageHeader
- HeaderParser
- MIME types
- Tracking Downloads: Metered Streams
- sun.net.www.URLConnection
-
sun.net.www.http
- HttpClient
- KeepAliveCache
- KeepAliveKey
- ClientVector
- KeepAliveStream
- sun.net.www.httpd and the BasicHttpServer
-
Content Handlers
- The text content handlers
- The image content handlers
-
Protocol Handlers
- appletresource
- doc
- file
- FTP
- gopher
- HTTP
- mailto
- netdoc
- The netdoc.Handler class
- systemresource
- verbatim
- Summary
-
Message Formats
-
Chapter 6—Threads and Garbage Collection
-
Part III—Platform-Dependent Java
-
Chapter 18—Character Conversion with sun.io
- Available Conversions
- Using the Converters
-
Direct Conversions
- The convertAll() method
- The convert() method
- Substitution Mode
- Summary
-
Chapter 19—Mixed Language Programming with Native Methods
- Disadvantages
-
Code in Java First
- Profiling
- Hand-Optimizing
-
The Java Native Method Interface
- Returning primitive values from native methods
- Passing primitive data type arguments to native methods
-
Using Objects in Native Methods
- Invoking instance methods
- Calling Java methods from C
- Passing arguments to Java methods
- Using strings in native methods
- Using arrays in native methods
- Accessing fields from native methods
- Static methods and fields in native methods
- Errors and exceptions in native methods
- Garbage collection and native methods
- Threading and native methods
- Determining at Runtime Whether Native Code Is Available
- Summary
-
Chapter 20—Creating Stand-Alone Programs
- Writing Stand-Alone Programs for UNIX
-
Creating Stand-alone Programs for the MacOS
- The Macintosh DDEncoder class
- Using type and creator codes
- The Macintosh Runtime for Java
- Creating Stand-Alone Windows Programs
- Summary
-
Chapter 18—Character Conversion with sun.io