This repository contains example projects and code snippets designed to accompany the lessons of the course “Diseño e Implementación de Bibliotecas de Software” (DIBS), taught in Spanish.
Although the course materials and instruction are in Spanish, this repository is written in English to ensure greater accessibility for a broader audience and to align with common programming conventions in documentation and tooling.
The repository is organized to reflect the conceptual structure of the course, covering topics like:
- Algebraic types: product types (e.g., records and data classes)
- Modern Java idioms and patterns for library design
- Immutable data modeling and comparison by value
- Clean and expressive APIs for data-centric components
All examples are language-specific and are built using idiomatic Java code, leveraging features introduced in recent versions of the language (e.g., record
types in Java 16+).
This is a Gradle-based multi-project repository. Each lesson module is located within a structured path that mirrors the course’s conceptual units.
type-fundamentals/
└── algebraic-types/
└── product-types/
└── records/
├── build.gradle.kts
└── src/main/java/cl/ravenhill/music/
├── Song.java
└── Main.java
You can run or test each lesson independently.
To build or run the examples:
./gradlew build # Build all projects
# Run a specific project
./gradlew :type-fundamentals:algebraic-types:product-types:records:run
You can also open the project in IntelliJ IDEA or any Java-compatible IDE.
- Java 17 or newer
- Gradle 8.13+
- Git (for cloning the repository)
Contributions are welcome! Please follow the Code of Conduct and ensure that your changes are relevant to the course content or improve clarity and accessibility.
This repository is distributed under the BSD 2-Clause License.
For the full set of lessons and materials (in Spanish), visit the official DIBS website.