Java 101 — Teaching Project
A comprehensive multi-module Maven project demonstrating Java fundamentals, design patterns, and advanced object-oriented programming concepts.
📚 Modules
This project is organized into independent modules for progressive learning:
TP1 — Fundamentals & Patterns
Learn core Java patterns and best practices:
- POJOs and mutability
- Immutability and value objects
- Factory and builder patterns
- Lombok for boilerplate reduction
TP2 — Interfaces & Polymorphism
Master advanced OOP concepts:
- Interfaces and contracts
- Polymorphism and inheritance
- Composition and delegation
- Interface segregation principle
TP3 — Collections & Streams
Explore Java Collections and Streams with best practices and examples:
- Lists, Sets, Maps, Queues
- Iteration vs functional operations
- Stream pipelines, collectors, and grouping
- Parallel streams and thread-safety considerations
📊 Reports & Documentation
Consolidated Reports
View Aggregated Reports — All quality metrics in one place
- JaCoCo coverage across all modules
- Combined quality analysis
Module Reports
For detailed module-level reports (tests, coverage, quality metrics), open the page of the module you want (e.g. navigate to TP1, TP2 or TP3). This homepage shows only aggregated reports:
- Aggregated Reports — consolidated metrics across all modules
API Documentation
🚀 Quick Start
# Clone and build
git clone https://github.com/ebpro/java101-tp1.git
cd java101-tp1
# Install quality hooks (recommended)
./install-hooks.sh
# Build all modules
./mvnw clean package
# Run tests
./mvnw test
# Generate this site
./mvnw clean verify site
./build-site.sh --with-tests
🎓 For Students
Recommended Learning Path:
- Start with TP1 to learn fundamental patterns
- Progress to TP2 for advanced OOP concepts
- Explore TP3 for collections & streams
- Explore the tests to see patterns in action
- Review quality reports to understand code metrics
Key Concepts Covered:
- Design Patterns: Factory, Builder, Singleton, Value Object
- OOP Principles: Encapsulation, Inheritance, Polymorphism, Composition
- Best Practices: Immutability, Interface Segregation, Testing
- Modern Java: Records, Default Methods, Lombok
🛠️ Technology Stack
- Java 21 — Modern Java LTS version
- Maven 3.9+ — Build and dependency management
- JUnit 5 — Unit testing framework
- AssertJ — Fluent assertions
- Lombok — Boilerplate reduction
- JaCoCo — Code coverage analysis
- Checkstyle, PMD, SpotBugs — Code quality tools
📖 Documentation
Each module contains comprehensive documentation:
- Learning guides with concept explanations
- Code examples demonstrating patterns
- Unit tests showing usage
- Javadoc for API reference
- Quality reports for code metrics
🌐 Preview Environments (Netlify)
Feature branches and pull requests get ephemeral preview deployments on Netlify:
- Deterministic naming:
<repo>-<branch>-preview - Central index with live status badges: Preview Sites (regenerated automatically)
- Automatic retention of recent deploys per branch; cleanup workflow removes a site after PR closure. If a preview does not appear immediately, trigger the preview workflow by pushing a commit to the branch.
ℹ️ Project Information
- Project Modules — Module hierarchy
- Licenses — Dependencies and licenses
- SCM Info — Source code management
- Team — Project contributors
Architecture: Multi-module Maven project with a dedicated aggregation module for consolidated reports. Build: Automated CI/CD with GitHub Actions deploying to GitHub Pages. Version: 0.0.1-SNAPSHOT
