A company’s commitment to Java as a development language for internal applications or customer products means that eventually programmers will need to develop knowledge and skills beyond those learned in a basic Java course. Most production programs will need to interface with technologies such as XML, threading, and networking.
This intensive, hands-on course explores advanced Java 5.0 Standard Edition language features and packages. Students will learn to parse XML documents using the JAXP API. Multi-threaded applications will be covered in detail including concepts such as deadlocks and race conditions. Students will also learn how to utilize more advanced I/O capabilities with object serialization and low-level file I/O with the java.nio package. Client/server applications will be written utilizing both the java.net and java.rmi packages. Additional topics on JNI, performance tuning, and advanced RMI are included as appendices for further study.
Objectives
Access XML content with the Java API for XML Processing (JAXP).
Use threads to improve performance of Java programs.
Store and retrieve a serialized Java object.
Use buffers and channels from Java’s New I/O packages
Use reflection classes to examine objects and classes at runtime.
Create client/server Java applications using sockets and Remote Method Invocation (RMI).
Bind and lookup objects in a naming service using the Java Naming and Directory Interface (JNDI).
Detailed Outline
- Course Introduction
- Course Objectives
- Overview
- Suggested References
- Processing XML with Java – JAXP
- The Java API for XML Processing
- Introduction to SAX Parsing
- SAXParser and JAXP
- SAX Event Methods
- Introduction to DOM
- Parsing DOM with JAXP
- The DOM API
- Validation
- Transformation
- Introduction to Threads
- Non-Threaded Applications
- Threaded Applications
- Creating Threads
- Thread States
- Runnable Threads
- Coordinating Threads
- Interrupting Threads
- Runnable Interface
- ThreadGroups
- Thread Synchronization and Concurrency
- Race Conditions
- Synchronized Methods
- Deadlocks
- Synchronized Blocks
- Thread Communication — wait()
- Thread Communication — notify()
- Executor
- Callable
- Advanced I/O – Object Serialization
- What is Serialization?
- Serializable Objects
- Writing an Object
- Reading an Object
- Handling Exceptions
- Customizing Serialization
- Controlling Serialization
- Versioning
- Advanced I/O – New I/O
- The java.nio package
- Buffers and Channels
- Buffer Implementations
- Buffer Methods
- ByteBuffer Methods
- FileChannel
- File Locking
- MappedByteBuffer
- Transferring Data Between Channels
- Character Sets
- Reflection
- Introduction to Reflection
- The Class Class
- The reflect Package
- Constructors
- Fields
- Methods
- Exception Handling and Reflection
- JavaBeans
- Dynamic Programming
- Networking with Sockets
- Clients and Servers
- Ports, Addresses and Protocols
- The Socket Class
- Communication Using I/O
- Servers
- The ServerSocket Class
- Concurrent Servers
- The URL Class
- The URLConnection Class
- Remote Method Invocation
- Distributed Applications
- Stubs
- Steps to Create a Remote Object
- An RMI Client
- An RMI Server
- RMI Classes and Interfaces
- Class Distribution
- Parameter Passing and Serialization
- Java Naming and Directory Interface (JNDI)
- Naming and Directory Services
- Namespaces and Contexts
- Naming Operations
- Bindings
- Attributes
- Directory Operations
- DNS Lookups with JNDI
- JNDI in J2EE
- Java Performance Tuning
- Is Java Slow?
- Don’t Optimize Until You Profile
- HotSpot Virtual Machine
- Garbage Collection Concepts
- Garbage Collection Generations
- Garbage Collection Algorithms
- Object Creation
- String, StringBuffer, and StringBuilder
- Synchronized
- Inline methods
- Tuning Collections
- Appendix A – Encryption with the javax.crypto Package
- Cryptography Concepts
- Encryption Keys
- Cipher Algorithms
- Modes and Padding Schemes
- The Cipher Class
- Encrypting and Decrypting Data
- Cipher Output Stream
- Cipher Input Stream
- Encryption Using Password Ciphers
- Exchanging Encrypted Keys
- Sealed Objects
- Appendix B – Native Methods
- Overview of Java Native Methods and JNI
- How to Create and Use Native Methods
- Native Method Declaration
- Using javah
- Creating the Implementation Code
- Compilation
- Distribution
- Using the Native Methods
- JNI
- Passing Arguments
- Calling Java Methods in Native Code
- JNI Signatures