The language model for CDI provides a reflection-free model of the Java language. It allows inspecting the high-level structure of programs without having to load any of their classes or instantiate any of the present annotations.

The root interface {@link jakarta.enterprise.lang.model.AnnotationTarget AnnotationTarget} represents anything that can be {@linkplain jakarta.enterprise.lang.model.AnnotationInfo annotated}. Two kinds of annotation targets are distinguished:

- {@linkplain jakarta.enterprise.lang.model.declarations.DeclarationInfo declarations}
- {@linkplain jakarta.enterprise.lang.model.types.Type types}

Structure of declarations and types may be further inspected.