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. Generic types should be understood, at least at a basic level; the course does begin with a refresher and then a more advanced treatment of generic types.
After a quick introduction to the Java Time API, students get familiar with the I/O streams model, file handling, and object serialization, and learn to use streams to communicate over network sockets. A two-chapter unit covers multi-threaded programming and concurrency techniques. We look at dynamic typing in Java, in the Reflection API and with dynamic proxies, and understand the underpinnings of source-code annotations.
Finally, several chapters at the end of the course introduce unit-testing and test-driven-development practices. Here for the first time we introduce external libraries — JUnit, and the Mockito dynamic-mocking library — and the study is not entirely about technology but leans more into design and good practice.
Delegates will learn to
- Make effective use of Java generic types.
- Understand the structure of streams in Java, and learn how to use streams to manage file I/O.
- Learn how to use Java Serialization to internalize and externalize potentially complex graphs of objects.
- Communicate between processes using network sockets.
- Write multi-threaded Java applications that safely manage concurrent access to application state.
- Use the Reflection API and dynamic proxies for highly generic tasks, discovery, or code-generation.
- Use standard annotations and develop custom annotations to express meta-data in Java source files.
- Build unit tests for Java classes using JUnit.
- Write effective tests, and design classes for testability.
- Understand test-driven development (TDD) and use dynamic mocking to support isolated testing.