Java Secrets
|
- Part IHow Java Works
- Chapter 1Introducing Java SECRETS
- A Little Knowledge Can Be a Dangerous Thing
- Whats 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 arent these things documented?
- FUD (fear, uncertainty, and doubt)
- How secret is this, anyway?
- Summary
- Chapter 2Primitive 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 2Primitive 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 3Classes, 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 4The 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 5Java 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
- Part IIThe Sun Classes
- Chapter 6Threads and Garbage Collection
- Threads
- Cooperative versus preemptive threads
- Native versus emulated threads
- Garbage Collection
- Reference counting
- Mark and sweep
- Generational garbage collection
- Summary
- Chapter 7Controlling 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 8Introducing 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 9Using 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 10Controlling 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 11Controlling the AWT with the sun.awt Package
- Aligning Objects with the sun.awt LayoutManagers
- HorizBagLayout
- VerticalBagLayout
- VariableGridLayout
- OrientableFlowLayout
- FocusingTextField
- Controlling Screen Updating
- Summary
- Chapter 12Encoding 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 13Network 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
- Chapter 14Sending Mail with the sun.net.smtp Package
- SmtpClient
- The constructors
- The methods
- Exceptions
- Choosing an SMTP Server
- Summary
- Chapter 15Reading 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
- Chapter 16Transferring 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 17Communicating 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
- Part IIIPlatform-Dependent Java
- Chapter 18Character Conversion with sun.io
- Available Conversions
- Using the Converters
- Direct Conversions
- The convertAll() method
- The convert() method
- Substitution Mode
- Summary
- Chapter 19Mixed 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 20Creating 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
Appendix A
Appendix B
Appendix C
Appendix D
Appendix E
Appendix F
Appendix G
Appendix H