Annotation or Attribute oriented programming
There are two types of code generation processes.
Passive code generation: is template driven. Input process are used in modern IDEs like WebSphere Studio Application Developer (WSAD), eclipse etc where parameters are supplied and the program generator carries out the process of source code generation and parameter substitution. For example: in eclipse or WSAD you can make a new class by supplying the "New Java class" wizard appropriate input parameters like package name, class name, modifiers, superclass name, interface name etc to produce the source code.
Active code generation: As like passive code generators the active code generators may inject programs directly into the application as and when needed. Attribute/Annotation oriented programming languages leverages active code generation with the need of declarative tags embedded within the application source code to create any other type of configuration files, source code, deployment descriptors etc. These declarative metadata tags are named annotations or attributes. The purpose of these attributes is to implement the functionality of the base language like Java, with the help of custom attributes given by other providers like Spring framework, Hibernate framework, XDoclet etc. The annotations or attributes are specified with the symbol "@". J2SE 5.0 has a make-up runtime support for attributes.