Skip to content

A curated list of resources related to the Java annotation processing API (JSR 269)

License

Notifications You must be signed in to change notification settings

gunnarmorling/awesome-annotation-processing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Awesome Java Annotation Processing

Java Annotation Processing (defined by JSR 269) is a standardized API for hooking into the Java compiler, allowing you to validate the code under compilation and generate additional (source or byte) code. This Awesome List aims at providing an overview of helpful resources around that API, including existing useful annotation processors, related presentations and blog posts, implementation best practices etc.

Existing Annotation Processors

Existing annotation processors for different purposes

  • avaje-inject - Compile-time dependency injection library.

  • avaje-jsonb - JSON mapping using generated source code

  • chimera - Compile-time static analysis and generation of commands for Spigot plugins.

  • dekorate - Generates manifests for Kubernetes/OpenShift.

  • Dagger - Compile-time dependency injection framework for both Java and Android.

  • derive4j - Java 8 annotation processor and framework for deriving algebraic data types constructors, pattern-matching, folds, optics and typeclasses.

  • domino-jackson - Generates Jackson based JSON mappers where the same mapper can be used on the JVM/android or GWT client Javascript code.

  • domino-rest - Generates rest clients from JaxRs compatible interfaces.

  • Duzzt - Duzzt - Annotation-based Embedded DSL Generator for Java.

  • Google Auto - A collection of source code generators for Java.

  • Google Error Prone - A static analysis tool for Java that catches common programming mistakes at compile-time.

  • Gson Path - A Java annotation processor library which generates gson type adapters using basic JsonPath style annotations.

  • Hibernate Validator annotation processor - Compile-time checking of Bean Validation constraints.

  • JPA Static Metamodel Generator - Creates JPA 2 static metamodel classes.

  • Immutables - Java annotation processors to generate simple, safe and consistent value objects.

  • JMH Generator - Generates Java Microbenchmark Harness (JMH) benchmarks.

  • jbock - Generates command line parsers.

  • jstachio - A typesafe Java Mustache templating engine that compiles templates into readable Java code.

  • Magic Bean - A very basic library which will generate POJOs.

  • MapStruct - Compile-time generator for type-safe bean-to-bean mapping code.

  • Micronaut - A modern full-stack framework for building modular, easily testable microservice and serverless applications.

  • Pojo Analyzer - A library enables looping over POJOs' fields or access them by their names, and retreive their getters & setters.

  • Record Builder - Adds Builders and Withers for Java Records (added in Java 16).

  • Sundrio - A collection of apt-based code generating tools, including advanced builder generator, dsl generator, velocity transformer and etc.

  • Viper - A generator and a framework for injecting configurations via the java EE’s CDI. Put all your configuration keys in an enum, and make viper inject the configurations in your beans.

  • chocotea - Generates postman collection, environment and integration tests from Java code.

Android

Annotation processors specific to Android development

  • Butter Knife - Bind Android views and callbacks to fields and methods.

  • Parceler - Android Parcelables made easy through code generation.

Useful Tools

Useful tools and libraries for implementing annotation processors

  • Apache Velocity - A Java-based template engine

  • APTK - A toolbox that helps you to build annotation processors in a more efficient way.

  • Avaje Prisms - A JDK 11 fork of Hickory with some minor enhancements.

  • Compile Testing - Testing tools for javac and annotation processors.

  • CUTE - Testing tools for javac and annotation processors. Allows unit and black box testing.

  • Elementary - A suite of JUnit 5 extensions that provides a real annotation processing environment during testing

  • JavaPoet - A Java API for generating .java source files.

  • Hickory - An annotation processor for generating "prisms", allowing to access known annotation types without class references; Maven coordinates, fork repo (There is no official source repo existing)

APIs and tools going beyond what’s doable with JSR 269

  • Spoon - Source Code Analysis and Transformation for Java (allows for AST modifications, too)

  • javac Plug-in API (allows for full AST inspection)

  • Project Lombok - Generates boilerplate Java code like getters/setters and equals/hashCode methods.

About

A curated list of resources related to the Java annotation processing API (JSR 269)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published