Proposed Final Draft des JSR 299 - Contexts and Dependency Injection

Die vormals unter der Bezeichnung Web Beans laufende Spezifikation soll im August final vorliegen. Die Entwicklung von "Dependency Injection for Java" innerhalb des JCP ist mittlerweile akzeptiert.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 2 Min.
Von
  • Alexander Neumann

Gavin King hat das Proposed Final Draft des Java Specification Request (JSR) 299 – Contexts and Dependency Injection – in den Java Community Process (JCP) eingebracht. King, vielen bekannt als Hibernate-Chefentwickler, geht davon aus, dass die finale Version im August folgen soll, rechtzeitig bevor der JSR in die für September angekündigte nächste Version der Java Enterprise Edition (Java EE) zu integrieren ist.

Im Januar war der JSR umbenannt worden, zuvor lief er unter dem Namen Web Beans. Die Spezifikation war initialisiert worden, die innovativen Konzepte des JBoss-Seam-Projekts in die Java EE zu integrieren. Seam integriert unterschiedliche Ansätze wie Ajax, JavaServer Faces (JSF), Enterprise Java Beans (EJB) und Java-Portlets in ein Programmiermodell, das sich an EJB 3.0 orientiert. Der Umbenennung folgte das Ziel, nicht mehr ein neues Komponentenmodell zu erstellen, sondern Services zu definieren, die alle Enterprise-Java-Komponententypen abdecken.

Mittlerweile ist die Entwicklung des JSR 330 – Dependency Injection for Java – durch den JCP akzeptiert worden. Der Unterschied zum JSR 299 liegt darin, dass dieser sich auf die Enterprise-Java-Welt fokussiert, der JSR 330 hingegen die Java Standard Edition adressieren soll. Den JSR hatten Google und SpringSource gemeinsam eingebracht, die beide ein Java-basiertes "Dependency Injection"-Framework am Start haben: Google mit Guice, SpringSource mit dem Spring Framework.

Dependecy Injection (DI) ist ein Pattern, das sich dem Problem widmet, dass in großen Anwendungen zu viele direkte Abhängigkeiten zwischen Objekten bestehen. Es setzt auf dem Prinzip "Inversion of Control" (IoC) auf, geht aber nur auf das Erzeugen und Initialisieren von Objekten ein. Die Funktionen bleiben trotz der Kontrollumkehr als Einfügung enthalten. Mit DI ist es möglich, einfach Abhängigkeiten zu erkennen. (ane)