Blog

Alle Beiträge mit dem Tag Maven

Androiden kontinuierlich integriert

Web und Mobile Developer - Ausgabe 12/2012

Web und Mobile Developer – Ausgabe 12/2012

Kontinuierlich integriert

Jan Weinschenker und Sven Bunge

web & mobile developer 12/2012

Auf diesem Blog wurde bereits in mehreren Artikeln erläutert, welche Vorteile Software-Lifecycle-Management für die professionelle Softwareentwicklung bringt. Die beschriebenen Konzepte und Verfahren lassen sich genau so auch auf die Entwicklung von Apps im Android-Umfeld anwenden.

Ein Werkzeug, das dabei eine zentrale Rolle einnimmt, ist der Build- oder CI-Server. Im Artikel von Jan Weinschenker und Sven Bunge wird beschrieben, wie ein solcher CI-Server mithilfe der freien Werkzeuge Jenkins und Maven speziell für die Android-Entwicklung aufgesetzt wird.

Weiterhin geht der Artikel auf die Vorteile des Software-Lifecycle-Managements, insbesondere im Hinblick auf die Testautomatisierung, ein.

Den kompletten Artikel gibt es dank freundlicher Genehmigung der Web & Mobile hier als PDF.

Scalafizierte Androiden – Teil 1: Werkzeuge

Scala ist eine moderne objektfunktionale Programmiersprache, deren Hype noch immer nicht abgeklungen ist. Für die ereignisorientierte Entwicklung von Android-Applikationen scheint Scala mit seiner funktionalen Ausrichtung und dem starken Typsystem besonders gut geeignet zu sein. Mittlerweile ist die Werkzeugentwicklung so weit fortgeschritten, dass man erste Gehversuche mit Scala auf der Android-Plattform wagen kann. Die in dieser Artikelserie vorgestellte Beispiel-App soll dabei sowohl durch die IDE Eclipse mit den Android Development Tools (ADT) als auch auf der Kommandozeile mit Maven gebaut werden können.

weiterlesen

PhoneGap meets Maven

Es ist ja modern, sich nicht sofort festzulegen – warum dies also bei der mobilen Plattform einer App tun? Ob iOS, Android, Symbian, Windows Mobile, Blackberry und viele mehr – wer kann es sich schon leisten, für jede dieser Plattformen eine eigene App zu entwickeln? Für diesen Zweck gibt es mittlerweile verschiedene Frameworks, von denen wir einige hier im Blog auch schon vorgestellt haben. PhoneGap ist eines, das von der eigentlichen Plattform abstrahiert und eine einheitliche Programmierschnittstelle anbietet. Konkret heißt das, dass anstatt auf Java für Android-Apps auf Webtechnologien wie HTML5, JavaScript und CSS3 gesetzt wird. Die App kann später relativ einfach für andere Plattformen veröffentlicht werden.

Mit dem Build-Management Maven kann man auch solche Apps bauen und auf das Gerät deployen lassen. Für ein Beispiel greifen wir die Grundlage aus einem vorhergegangenen Blog-Artikel wieder auf und bauen das dort angelegte Projekt etwas zurück:

  • ProGuard aus dem Profil „production“ entfernen (oder gleich das ganze Profil) und die Datei proguard.cfg aus dem Root-Verzeichnis des Projekts löschen.
  • JUnit und das Verzeichnis „src/test/java“ entfernen, da wir bis auf die Initialisierung von PhoneGap keinen Java-Code mehr schreiben werden.
  • Nicht mehr benötigten Java-Code entfernen: DateStringUtils.java löschen, HelloWorld.java wird später mit anderem Inhalt befüllt (siehe weiter unten).
  • Auch das Verzeichnis „/src/main/resources/layout“ samt Inhalt entfernen.
  • Alle Einträge bis auf den „app_name“ aus der Datei strings.xml löschen.

Eine Installation des Android-SDK ist ebenfalls für PhoneGap nötig. Die Anwendung wird zwar abstrakt implementiert, dann aber explizit für die Android-Plattform gebaut.

weiterlesen

Maven baut auch Android-Apps

Wie oft hört man heute die Worte „Dafür gibt’s doch eine App!“ – Und wenn nicht? Dann muss man wohl selbst eine entwickeln. Ob nun iOS, Android, Symbian oder gleich eine Hybrid-App, die Entscheidung kann einem keiner abnehmen. Entscheidet man sich für Android, so beginnt man in der Regel als Einsteiger in die Android-Welt nach der Installation des Android-SDK mit einer einfachen App wie einem Hello World. Gebaut, getestet und gepackt – natürlich alles aus Eclipse heraus.

Klingt nach einem ähnlichen Vorgehen, mit dem ich vor ca. 10 Jahren die Java-Entwicklung begonnen habe. Da schrieb ich Ant-Scripts und baute damit meine Java-Projekte. Aber liest man sich die offiziellen Entwickler-Tutorials durch, so wird empfohlen, das Projekt mit einem Befehl aus dem SDK auf der Kommando-Zeile zu bauen. Geht das nicht anders?

weiterlesen

Das reine Vergnügen – RIA mit Vaadin und Guice

Vorweg: Vaadin ist cool. Das auf dem Google Web Toolkit basierende Framework erlaubt die komponenten-orientierte Entwicklung hochqualitativer Rich Internet Applications. Dabei wird weitestgehend vom HTML/Servlet Code abstrahiert – das Programmiermodell erinnert somit stark an die vom Desktop gewohnte Entwicklung mit Swing oder RCP. JSP-Taglibs, XML-Wüsten und Platzhalter-Replacements sucht man vergebens, und man vermisst sie auch nicht.

Eine typische Vaadin-Applikation (aus Book of Vaadin, Getting started):

public void init() {
   final Window mainWindow =
      new Window("Myproject Application");

   Label label = new Label("Hello Vaadin user");
   mainWindow.addComponent(label);

   mainWindow.addComponent(
      new Button("What is the time?",
         new Button.ClickListener() {
         public void buttonClick(ClickEvent event) {
            mainWindow.showNotification(
               "The time is " + new Date());
         }
      }));

 setMainWindow(mainWindow);
}

Sobald die Anwendung etwas größer wird, bekommt man jedoch zwangsläufig die klassischen Stand-Alone-Anwendungsprobleme: verschachtelte Komponenten, ausgelagerte Handler, implementierte Listener, gekapselte Service-Facaden … ein Haufen Instanzen will erzeugt und verwaltet werden. Nebenbei arbeitet man auf 3 Scopes (Application, Session, Request), bemüht sich um Separation of Concern und achtet auf maximale Testbarkeit.
Das wird „per Hand“ schnell unübersichtlich. Naheliegend ist, sich bei der Verwaltung der Instanzen helfen zu lassen. Wenn man das Pech hat, nicht auf JEE6 und CDI zurückgreifen zu können (konkret arbeiten wir nach wie vor auf JBoss 5.1), ist die Frage:

Wie?
Oder anders formuliert: Spring oder Guice?

weiterlesen