Annotations and Its Benefits in Java

Introduction

  • Annotation is code about the code, that is metadata about the program itself. In other words, organized data about the code, embedded within the code itself. It can be parsed by the compiler, annotation processing tools and can also be made available at run-time too.
  • First introduced in Java 5.0. So responsibility for writing boilerplate Java code shifted from the programmer to the compiler.  Means the source code becomes easier to maintain indirectly we can say it easy to debug and less chances of bugs.
  •  Annotation-based Java development is certainly one of the most notable recent development trends.
  • Annotations are like meta-tags that you can add to your code and apply to
    1. Package declarations,
    2. Type declarations,
    3. Constructors,
    4. Methods,
    5. Fields,
    6. Parameters
  • They provide a helpful way to indicate
    1. Whether your methods are dependent on other methods,
    2. Whether they are incomplete,
    3. Whether your classes have references to other classes, and so on.
  • Its declarative programming style where the programmer says what should be done and tools emit the code to do it.”
  • Simply speaking, an annotation is a mechanism for associating a meta-tag with program elements and allowing the compiler or the VM to extract program behaviors from these annotated elements and generate interdependent code when necessary.

Note: In computer programming, boilerplate code or boilerplate refers to sections of code that have to be included in many places with little or no alteration. It is often used when referring to languages that are considered verbose, i.e. the programmer must write a lot of code to do minimal jobs.

 

Benefits

  • Annotation-based development relieves Java developers from the pain of cumbersome configuration.
  • It offers ‘Static Type Checking‘. It means Type Checking will be done at Compile Time.
  • Javadoc facility gives option for understanding the code in an external way, instead of opening the code the javadoc document can be used separately.
  • Annotations are not only comments, it brings in new possibilities in terms of automated processing.
  • In java we have been passing information to compiler for long. For example take ‘serialization’, we have the keyword transient to tell that this field is not serializable. Now instead of having such keywords, decorating an attribute annotations provide a generic way of adding information to class/method/field/variable. This is information is meant for programmers, automated tools, java compiler and runtime. Transient is a modifier and annotations are also a kind of modifiers.
  • Not only info passing, we can generate code using these annotations. ‘Webservices’ where we need to adhere by the service interface contract. The skeleton can be generated using annotations automatically by annotation parser. This avoids human errors and decreases development time as always with automation.
  • Frameworks like Axis, Spring, Hibernate make heavy use of annotations. When a language needs to be made popular one of the best thing to do is support development of frameworks based on the language. Annotation is a good step towards that and will help grow Java.

When Not To Use Annotations

  • Do not heavily use Annotation, since it will look dense and it can populate the code.
  • Do not try to change the behavior of Object using Annotation.
  • Code is the real PROGRAM and annotation is the META. So do not try to over generalize as it may complicate the code.
  • Do not use when dealing with database information.

 

@Annotations

  1. Annotations and Its Benefits in Java
  2. Advantages Of Annotations Over XML
  3. Annotation Programming Basics
  4. Annotation Types
    1. Simple Annotation
    2. Meta Annotation
      1. Meta ‘Target’ Annotation
      2. Meta ‘Retention’ Annotation
      3. Meta ‘Documented’ Annotation
      4. Meta ‘Inherited’ Annotation
  5. Reflection to Extract Annotation Details

Leave a Reply

Your email address will not be published. Required fields are marked *