Five years ago, 
Spring 1.0 brought Java 
dependency injection into the mainstream. Three years later, 
Google
      Guice 1.0 introduced annotation-based dependency injection and made Java programming
      a little easier. Since then, developers have had to choose between a) writing external
      configuration or b) importing vendor-specific annotations.
Today, we hope
      to give developers the best of both worlds. 
Google Guice and SpringSource have
      partnered to standardize a proven, non-controversial set of annotations that make injectable
      classes portable  across frameworks. At the
      moment, the set of specified annotations consists of:
- @Inject - Identifies injectable
      constructors, methods, and fields
- @Qualifier - Identifies qualifier
      annotations
- @Scope - Identifies scope annotations
- @Named - String-based
      qualifier
- @Singleton - Identifies a type that the injector only instantiates
      once
One additional interface is specified for use in conjunction with
      these annotations:
- Provider<T> - Provides instances of a type T. For any type T
      that can be injected, you can also inject Provider<T>.
You can check out an early
      draft of the 
specification. We deliberately left external dependency configuration
      out, so as not to quash ongoing innovation. We haven't formally submitted this standard to the
      JCP yet, but we plan to do so shortly. Standards wonks can read a draft of our 
JSR
      proposal.
The expert group will be inclusive and will work in
      the open. For example, our mailing list is publicly readable, and we host the specification at
      
Google
      Code. Several industry players have already expressed interest in supporting this
      effort. 
Contact us if you'd like to help out.
Interested in learning more about dependency injection? Don't miss Jesse and
      Dhanji's Big Modular Java with
      Guice session at Google I/O!By Bob Lee, Google Guice founder