Advanced programming skills in Java
Programme
Introspection and reflection
- Class, Method, … classes
- Dynamically manipulating objects
- Creating an instance
- Modifying an attribute
- Invoking a method
Understanding the JVM (Virtual Machine)
- Understanding the GC and memory management
- Different CG algorithms
- Modifying launch parameters
- Understanding the ClassLoader
- Class loading strategy
- Writing a ClassLoader
Stream management
- Input/output
- Serialization/deserialization of objects
- Java modifiers and their impacts
- NIO API: Buffer, Channel, …
- NIO2 API: WatchService, …
Multi-tasking and concurrent access
- Reminders on Threads
- Advanced parallelism (Future, Executor, …)
- Fork/Join framework
- Synchronized collections: BlockingQueue, ConcurrentMap, …
- Atomic objects using CAS principles
- Lock management
Annotations
- Create annotations
- Exploitation at runtime
- Exploitation by the compiler
JMX
- Architecture overview
- Types of MBean
- Services of a JMX agent
- Notifications
- Monitoring a JVM
Service Provider Interface
- Overview
- Service exposure
- Service consumption (ServiceLoader)
AOP with AspectJ
- Introduction
- Aspect definition
- Compile/load time weaving