# Annotation Interface Name

@Target({TYPE,FIELD,METHOD}) @Retention(RUNTIME) public @interface Name
Annotation that sets the default name for an element.

For event classes, the name must be a legal class name as specified in the Java language, (for example, `"com.example.Transaction"`. For event fields or event settings, the name must be a valid identifier (for example, `"message"`). See section 3.8 and 3.9 of the Java Language Specification for more information.

If the specified name is invalid, the annotation is ignored.

A stable and easy-to-use event name is of the form:

`[org|com|net].[organization|product].EventName`

Events without a `@Name` annotation get their name from the fully qualified class name, which works well for experimentation but should be avoided in production.

- The name should be stable to avoid breaking setting files and code that consumes or configures the event.
- The name should not contain redundant or unnecessary information such as `"jfr"`, `"internal"`, `"events"`, or `"Event"`.
- The name should be short, but not so short that it clashes with other organizations or products.
- The name should be easy to understand and remember for users that want to configure the event. This is especially true if the event is part of a framework or library that is meant to be used by others. It is usually enough to put all the events for a library or product in the same namespace. For example, all the events for OpenJDK are in the `"jdk"` namespace, with no sub-namespaces for `"hotspot"`, `"gc"`, or `"compiler"`. This avoids unnecessary cognitive load for users. Events can instead be arranged into categories, by using the `@Category` annotation. Categories can be renamed freely without causing disruption to dependencies

Since:
  9

- ## Required Element Summary

  Required Elements
  Modifier and Type
  Required Element
  Description
  `String`
  `value`
  Returns the name.

- ## Element Details

  - ### value

    String value
    Returns the name.
    Returns:
      the name