A Descriptor is a bean-like structure that describes a service declaration in HK2. A descriptor is comprised only of basic objects such as String or boolean (e.g., not Class or Annotation}. A described service does not need to be classloaded in order to have a Descriptor. However, this does imply that a Descriptor will have some loss of information when compared to a classloaded service, which is described with an {@link ActiveDescriptor}. For example, a Descriptor can know that a service has a qualifier named Foo, but will not know (without the use of {@link Metadata}) what values Foo contains.
Services have a number of optional attributes such as name and scope. A service is required to minimally have a type name representing the concrete (i.e., byType) definition.
@see {@link ActiveDescriptor}, {@link Metadata}
@author Jerome Dochez, Jeff Trent, Mason Taube