- Java Language Basics
- Java Syntax
- Identifiers
- Literals
- Integer Literals
- Floating-Point Literals
- Boolean Literals
- Character Literals
- Escape Sequences
- String Literals
- Keywords
- Statements
- Code Blocks
- Comments
- Expressions
- Operators
- Arithmetic Operators
- Logical Operators
- Comparison Operators
- Assignment Operators
- Bitwise Operators
- A Special Operator: the ?: Operator
- Java's Data Types
- Variables
- Built-in Data Types
- Numeric Data Types
- Boolean Data Types
- Character Data Types
- Composite Data Types
- Arrays
- Creating and Initializing Arrays
- Accessing Array Elements
- Strings
- Type Casting
- Implicit Casting
- Scope Rules
- Flow Control Structures
- The while Loop
- The do Loop
- The for Loop
- Loop Control Statements
- The break Statement
- The continue Statement
- Conditional Statements
- The if-else Statement
- The switch Statement
- Summary
- Object-Oriented Programming in Java
- Introduction to OOP
- Classes
- Declaring and Instantiating Classes
- Data Members
- Class Methods
- Constructors and Finalizers
- Case Study: A Simple OOP Example
- Class Inheritance
- Using this and super
- Access Modifiers
- Access from within class's package
- Access outside of a class's package
- Accessor Methods
- Abstract Classes
- Polymorphism
- Method Overloading
- Using Interfaces
- Java Packages
- The import Statement
- Declaring Packages
- Project Options Related to Packages
- Summary
- The Java Class Libraries
- Introduction
- The Language Package
- The Object Class
- Type Wrapper Classes
- The Math Class
- The String Class
- The StringBuffer Class
- The System Class
- The Utilities Package
- The Enumeration Interface
- The Vector Class
- The I/O Package
- Input Stream Classes
- Output Stream Classes
- File Classes
- The StreamTokenizer Class
- The JBCL Packages
- Controls
- Dataset Components
- I/O Components
- Layout Components
- Model and View Components
- Utility Components
- Java Generic Library (JGL)
- Summary
- Threading Techniques
- Overview
- Why Are Threads Useful?
- Why Haven't I Heard of Threads Before?
- Creating a Thread
- Subclassing the Thread Class
- Example: Implementing countingThread
- Implementing the Runnable Interface
- The Thread API
- Constructors
- The start() and stop() Methods
- The suspend() and resume() Methods
- The sleep() Method
- The yield() Method
- The join() Method
- A Thread's Lifecycle
- Making Your Code Thread-Safe
- The synchronized Keyword
- Monitors
- Summary
- Serialization
- Overview
- Why Serialize?
- Serialization in JDK 1.1
- The Serializable Interface
- Using Output Streams
- ObjectOutputStream Methods
- Using Input Streams
- ObjectInputStream Methods
- Writing and Reading Object Streams
- Summary
- Java Virtual Machine Security
- Overview
- Why is the Java VM Necessary?
- What Are the Main Roles of the JVM?
- Java VM Security
- The Security Model
- The Java Verifier
- The Security Manager
- The class loader
- Java's Safety as a Language
- What About Just-In-Time Compilers?
- Summary
- Working with the Native Code Interface
- Overview
- Using the JNI
- Using the native Keyword
- Using the javah Tool
- Summary