# Java Programming

* Recent changes
* If you have questions related to Java
* If you are interested in editing this book
* How to format the content
* Who is contributing
* Traffic
This book is an introduction to programming in Oracle’s Java™ programming language, a widely used programming language and software platform. This book serves as a comprehensive guide, complete with a series of tutorials to help users better understand the many ways one can program in Java. In its entirety, this book is meant to be both an introductory guide and a useful reference on Java and related technologies. As is the nature of this book, the content within the book is continuously being updated and revised. With every chapter within this book, the complexity of the context increases, building up on lessons learnt in the previous chapters. Beginners should therefore start from the beginning and proceed in a sequence throughout the material of the book.
If you are not familiar with object-oriented programming, you should first read the book Object Oriented Programming. Other special purpose books such as Jakarta EE enterprise programming, Java Persistence, or Java Swing programming, with more details, would complement this book nicely.

## Contents
### Preface

* About this book
* History of Java
* Overview of the Java programming language
* The Java platform (JRE & JDK)

### Getting started

* Installing Java on Your Computer
* Compiling programs
* Running Java programs
* Understanding a Java program
* Java IDEs

### Language fundamentals

* Statements
* Conditional blocks
* Loop blocks
* Boolean expressions
* Variables
* Primitive Types
* Arithmetic expressions
* Literals
* Methods
* String
* Objects
* Packages
* Arrays
* Mathematical functions
* Large numbers
* Random numbers
* Unicode
* Comments
* Keywords
* Coding conventions

### Classes and objects

* Defining classes
* Inheritance
* Interfaces
* Overloading methods and constructors
* Object Lifecycle
* Scope
* Nested classes
* Generics

### Aggregate

* Collection
* ArrayList
* Map
* Comparing Objects

### Exceptions

* Throwing and catching exceptions
* Checked exceptions
* Unchecked exceptions
* Preventing NullPointerException
* Stack trace
* Nesting exceptions (chained exceptions)

### Concurrent Programming

* Threads and Runnables
* Basic Synchronization
* Client Server Programming
* Remote Method Invocation (RMI)
* Enterprise JavaBean Programming (EJB)
* Java Spaces Programming (Jini)

### Annotations

* Javadoc
* Introduction to Annotation
* Creating custom annotations
* Meta-annotations
* Helping the compiler

### Designing user interfaces

* Basic I/O
* Streams
* Event handling
* JavaBeans
* Canvas
* Graphics
** Drawing basic shapes
** Drawing complex shapes
** Drawing text
** Understanding gradients
* Applets
   * Overview
   * User Interface
   * Event Listeners
   * Graphics and Media

### Reflection

* Reflection Overview
* Dynamic Class Loading
* Dynamic Method Invocation
* Accessing Private Features with Reflection

### Advanced topics

* Networking
* Database programming
* Regular Expressions
* Libraries, extensions and frameworks
* 3D programming
* Java Native Interface
* Invoking C
* Byte Code

### Appendices

* Links
* Glossary
* Index