This project implements a basic HTTP server in Java for learning experience in low-level design (LLD) concepts. It's designed for:
- Understanding LLD: Gain practical experience with threading, sockets, and other core LLD principles.
- Testable Code: Write robust and verifiable code using a custom or lightweight testing framework.
- Configuration Management: Effectively manage configuration data using the Singleton pattern.
- Data Binding: Utilize Jackson for convenient mapping between POJOs and configuration files.
- Scalability Potential: Explore code structure considerations for future scalability improvements.
- Languages: Java
- Build Tool (Optional): Maven
- Concurrency: Multithreading
- Networking: Sockets
- Testing Framework: Custom or Lightweight Alternative (e.g., JUnit)
- Data Binding: Jackson
- Logging (Optional): SLF4J, Logback (dependencies included)
- Development Environment (IDE): Any Java IDE (e.g., IntelliJ IDEA, Eclipse)
This project focuses on hands-on exploration of LLD principles while building a functional HTTP server. It offers a structured environment for learning about:
- Threading mechanisms for handling concurrent client connections.
- Low-level network communication using sockets.
- Importance of writing testable code for verification and reliability.
- Utilizing the Singleton pattern for managing configuration data.
- Leveraging Jackson for seamless POJO-to-JSON data binding.
While initial performance may not be optimized, the code is structured with considerations for potential scalability improvements in the future.
This project serves as a valuable starting point for those interested in exploring LLD concepts and building their understanding of HTTP servers.