An ultra-lightweight, easy-to-use dependency injection library for Java and Android that implements JSR-330.
Feather is an ultra-lightweight dependency injection library for Java and Android that implements the JSR-330 standard. It simplifies managing object dependencies by automating instantiation and injection through reflection, eliminating the need for manual factory methods. The library focuses on being tiny, fast, and easy to understand, making DI accessible without the overhead of larger frameworks.
Java and Android developers seeking a minimal, performant dependency injection solution that adheres to standards without the complexity of larger frameworks like Guice or Dagger.
Developers choose Feather for its exceptional simplicity and small footprint—it's one of the smallest DI libraries available while offering competitive performance. Its straightforward design reduces learning curve and avoids 'magical' behavior, making dependency injection obvious and maintainable.
Lightweight dependency injection for Java and Android (JSR-330)
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Feather is just a few hundred lines of code, with a library size 1/50 of Guice and 1/4 of Dagger's runtime, making it ideal for resource-constrained environments like Android.
The README notes ~10x faster startup speed compared to Guice and ~2x faster than Dagger, crucial for applications where quick initialization is key.
Implements the standard dependency injection specification, ensuring compatibility with common annotations like @Inject and @Singleton across Java ecosystems.
Promotes immutability and solid design by primarily using constructor injection, which is explicitly supported and encouraged in the library's examples.
Feather explicitly does not support method injection, as stated in the README, which may force design changes or require workarounds for teams accustomed to this pattern.
Requires developers to manually write @Provides methods for all dependencies, unlike frameworks with automatic scanning, increasing setup and maintenance effort for large projects.
Lacks features like aspect-oriented programming, interceptors, or extensive community modules found in more comprehensive DI frameworks like Spring or Guice.