Annotations are tags inserted into source code that can be processed by tools. Annotations can be applied to classes, fields, methods, and other program elements. Common Java annotations include @Override, @Deprecated, and @SuppressWarnings. Annotations are defined by annotation interfaces and can include named elements. The apt tool supports annotation processing by running annotation processors that can generate new source code files.