Transfuse: Dependency Injection für Android

Transfuse: Dependency Injection für Android


Dependency Injection (DI) ist für die ­meisten Java-Entwickler ein alter Hut, auf Android war dies jedoch lange kein Thema. Das hat größtenteils mit den Beschränkungen der Plattform zu tun, eine App auf einem Telefon muss vom Start an performant sein und mit weniger Speicher auskommen. Zudem sollte man immer im Hinterkopf haben: Dalvik ist nun einmal keine JVM. In der Vergangenheit hatten viele App-Entwickler oft keinen Java-Hintergrund, sodass DI dort vor sich hin schlummerte. Seit Software­entwicklung für Smartphones den Mainstream erreicht hat, steigt der Bedarf an professionelleren Frameworks und das Wissen schwappt herüber in die mobile Welt.

Lange gab es nur RoboGuice als ernsthaftes Hilfsmittel, um in Android eine komponentenbasierte Entwicklung mit Inversion of Control (IoC) umzusetzen. Zuletzt erschienen jedoch einige Alternativen am Horizont. SpringSource startete erste Android-Gehversuche, aber auch aus bekannten Mobile-Schmieden wie Square kam ein beachtenswerter Versuch in Form von Dagger.

Das Transfuse-Projekt [1] ist eine weitere Entwicklung, welche viel Aufmerksamkeit bekommen hat. Das Besondere an dem Projekt ist, dass es sich um eine echte Umsetzung des JSR-330 handelt. Was kann Transfuse sonst bieten? Wo stellt es seine Vorgänger vielleicht gar in den Schatten? Wie einige seiner Konkurrenten geht auch Transfuse den Weg der Codegenerierung, wenn das möglich ist. Auf diese Weise holt man sich keinen Performanceverlust durch Reflection in die Anwendung. Auch kommt die App mit weniger Ballast daher, da nur der generierte Code und nicht ein komplexes Framework mit jeder Menge ungenutzter Use Cases ausgeliefert wird. Auf einem Smartphone mit wenig Platz und einer mobilen Datenverbindung mit begrenztem Datenvolumen bleibt das ein wichtiges Thema.

Transfuse versucht die Elemente einer Android-Anwendung und deren Lebenszyklus mit Annotationen auf simplen Java-Objekten zu verstecken. Auf diese Weise wird eine Menge typischer Boilerplate-Code verborgen, aber auch der Einstieg für einen Java-Entwickler in Android erleichtert. Der Unterschied einer einfachen Activity mit und ohne Transfuse spricht hier Bände, wie Listing 1 und 2 zeigen.

Listing 1

public class HelloAndroid extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }

Listing 2

@Activity @Layout(R.layout.main) public class HelloAndroid { }

Transfuse ist hier im Vergleich zu seinen Mitbewerbe...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang