51 ак. ч.
- Java application structure recap
- Documenting
- JavaDoc comments demo
- Maintainability with documentation
- Key concepts
- Package
- Class
- Method declaration
- JVM memory structure
- Calling methods
- Parameters passing while calling methods
- Methods overloading
- Variable declaration
- Memory allocation size
- Evens and literals
- Fractions and literals
- Character and literals
- Logical and literals
- Wrappers
- Type operators
- Arithmetics
- Bitwise
- Logical
- Switching
- Looping
- Breaking switches and loops
- Design considerations
- Java reference types
- Reference argument passing
- Java Array reference type
- Varargs
- Strings
- Core concepts
- Dealing with state
- Enumerated types in Java
- Data and Behavior encapsulation
- Object instatiation
- Polymorphism concept
- Type-switching
- Interfaces as a case of Abstract Type
- Polymorphism with subclassing
- Code Reuse with subclassing
- Constructors issue with subclassing
- OOAD Principles: SOLID
- Creation Patterns
- Structural Patterns
- Behavioral Patterns
- Exception concept
- Trowing and handling exceptions
- Syntax sugar
- Exceptions type system
- Test scopes
- Test structure with JUnit
- Isolating tests with Mockito test doublers
- Coverage reporting
- Problem statement
- Type safety with generic programming
- Nested classes
- Local classes as closures
- Lambda syntax for anonymous inner classes
- Demo for lambda use-cases
- Core classes
- Object
- Built-in types overview
- Sets
- Lists
- Maps
- Queues
- IO Stream API overview
- File IO
- Serialization
- Socket
- ServerSocket
- Annotations
- Reflection API: introspection
- Reflection API: class loading/unloading
- Miltithreading in Java
- Thread API
- Thread pool API
- JMH intro
- Data Race issue
- Visibility and Reordering issues
- JMM intro
- Non-blocking concurrency
- Thread syncronization
- Concurrent collections