Advanced Java Programming

Advanced Java Programming


Course code: 
Time Unit: 

This course provides advanced training in developing software using the Java Platform, Standard Edition, or Java SE. It is intended for students with solid experience in structured and object-oriented Java programming, including use of the Collections API and exception handling.

The course covers several general-purpose topics: using and building generic types, writing multi-threaded applications, the Reflection API and annotations, and network programming using sockets. It combines nicely with various other courses in the Java curriculum, each of which is also "advanced Java" of some sort: JDBC, secure coding, Swing GUI programming, design patterns, and so on.

Learning Objectives :
- Make effective use of Java generic types.
- Write multi-threaded Java applications.
- Use the Reflection API for highly generic tasks, discovery, or code-generation.
- Use standard annotations and develop custom annotations to express meta-data in Java source files.
- Communicate between processes using network sockets



Chapter 1. Generics

Using Generics
Type Erasure
Type Boundaries
Generic Methods
Strengths and Weaknesses of Generics
Legacy Code and Generics

Chapter 2. Threads

Java Thread Model
Creating and Running Threads
Manipulating Thread State
Thread Synchronization
Volatile Fields vs. Synchronized Methods
wait and notify
join and sleep
The Concurrency API
Atomic Operations

Chapter 3. Reflection

Uses for Meta-Data
The Reflection API
The Class Class
The java.lang.reflect Package
Reading Type Information
Navigating Inheritance Trees
Dynamic Instantiation
Dynamic Invocation
Reflecting on Generics

Chapter 4. Annotations

Aspect-Oriented Programming and Java
The Annotations Model
Annotation Types and Annotations
Built-In Annotations
Annotations vs. Descriptors (XML)

Chapter 5. Sockets

The OSI Reference Model
Network Protocols
The Socket Class
The ServerSocket Class
Connecting Through URL Objects
HTTP and Other TCP Servers
Datagram Clients and Servers
Non-Blocking Sockets



Solid Java programming experience is essential -- especially object-oriented use of the language.
Language features and techniques that are integral to some lab exercises include interfaces and abstract classes, threading, generics and collections, and recursive methods.
Course JVN001, "Java Programming Language", is excellent preparation.



Java programmers who wish to increase their depth of knowledge in Java programming and explore the uses of the various advanced packages