Skip to content
airliftPublic

About

Modernized Guice Fork

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Zest

Zest is Airlift's fork of Google Guice, a lightweight dependency injection framework, targeting Java 25 and above.

Classes still live in the com.google.inject packages, so existing imports keep working; moving from Guice to Zest is mostly a matter of switching Maven coordinates.

Overview

Put simply, Zest alleviates the need for factories and the use of new in your Java code. Think of Zest's @Inject as the new new. You will still need to write factories in some cases, but your code will not depend directly on them. Your code will be easier to change, unit test and reuse in other contexts.

Zest embraces Java's type safe nature. You might think of Zest as filling in missing features for core Java. Ideally, the language itself would provide most of the same features, but until such a language comes along, we have Zest.

Zest helps you design better APIs, and the Zest API itself sets a good example. Zest is not a kitchen sink. We justify each feature with at least three use cases. When in doubt, we leave it out. We build general functionality which enables you to extend Zest rather than adding every feature to the core framework.

Zest aims to make development and debugging easier and faster, not harder and slower. In that vein, Zest steers clear of surprises and magic. You should be able to understand code with or without tools, though tools can make things even easier. When errors do occur, Zest goes the extra mile to generate helpful messages.

For an introduction to Guice (and therefore Zest) and a comparison to new and the factory pattern, see Bob Lee's video presentation. After that, check out the upstream user's guide.

Guice has been running in mission critical applications since 2006, and Zest carries that lineage forward. We hope you enjoy it as much as we do.

Installation Instructions

Zest Core (Maven)

<dependency>
  <groupId>io.airlift</groupId>
  <artifactId>zest</artifactId>
  <version>{version}</version>
</dependency>

Zest Extension (Maven)

<dependency>
  <groupId>io.airlift</groupId>
  <!-- {extension-name} can be one of: assistedinject, grapher, jmx,
       servlet, testlib or throwingproviders -->
  <artifactId>zest-{extension-name}</artifactId>
  <!-- {version} must match the zest core version. -->
  <version>{version}</version>
</dependency>

To keep all modules on the same version, import the BOM:

<dependency>
  <groupId>io.airlift</groupId>
  <artifactId>zest-bom</artifactId>
  <version>{version}</version>
  <type>pom</type>
  <scope>import</scope>
</dependency>

About

Modernized Guice Fork

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages