SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
OSGi: Toolunterstützung und
Softwareentwicklungsprozess


       Thementag OSGi

         03.11.2009




            Autor:
        Thorsten Vogel
Agenda
      Herausforderungen der OSGi Entwicklung: Beispiel Webanwendung

      Was wird entwickelt? - Bundles

      Wie und womit wird entwickelt? - Entwicklungswerkzeuge

      Wofür wird entwickelt? – Plattformen

      Wie wird getestet? – Testing unter OSGi

      Wie wird gebaut? – Build

      Wie wird deployed? – Auslieferung

      Zusammenfassung & Fazit

OSGi Tools und Entwicklungsprozess                                    Seite 3 / 40
Herausforderungen der OSGi-Entwicklung

      Komponenten Architektur
        – Interfaces (public), Implementierungen (private)
        – Hollywood Prinzip: Don‘t call us, we will call you!


      Service Architektur
        – Publish - Subscribe Modell
        – Abhängigkeiten zu Services programmatisch oder deklarativ


      Bei OSGi im Konzept „erzwungen"
        – „Flache“ Classpath-Modelle funktionieren auch, erlauben dann
          aber nicht die wichtigsten OSGi Features wie z.B. Dynamik und
          lose Kopplung von Komponenten zu nutzen
        – Nicht abgegrenzter Code verursacht Umstellungsaufwand



OSGi Tools und Entwicklungsprozess                                        Seite 4 / 40
Webanwendung ohne OSGi

      Querschnittsfunktionalität in Libraries (JAR Dateien)
        – Direkte Nutzung durch Auflösung im Classpath


      Nur ein Classpath
        – Reihenfolge entscheidend


      Keine Dynamik
        – Bei Austausch einer Komponente oder Library muss die gesamte
          Anwendung neu gestartet werden (zumeist)


      Entwicklung, Testing, Packaging und Deployment
        – Mit den üblichen Verdächtigen (Eclipse oder andere IDE, Maven etc.)




OSGi Tools und Entwicklungsprozess                                              Seite 5 / 40
Webanwendung mit OSGi

      Zwei Arten der Integration

      Embedded (In-Container)
        – OSGi Framework wird innerhalb eines WAR/EAR ausgeliefert
          und gestartet
        – Nutzung nur durch die entsprechende Web-Applikation




OSGi Tools und Entwicklungsprozess                                   Seite 6 / 40
Embedded OSGi Integration

      (In-Container)

               Web-Container


                                     EAR/WAR mit OSGi
                         WAR
                         WAR
                         WAR          OSGi Framework
                                      Bundle 1

                                           Bundle 2
                          EAR
                          EAR
                           EAR
                                                 Bundle 3




OSGi Tools und Entwicklungsprozess                          Seite 7 / 40
Reine OSGi Web-Applikation

      OSGi Framework stellt Web-Container zur Verfügung und
      ist gleichzeitig Ausführungsumgebung der Anwendung

      Konsequente Nutzung aller OSGi Features

      OSGi-embedded Web-Container (Jetty, Tomcat, …)

      Springsource tc/dm Server




OSGi Tools und Entwicklungsprozess                            Seite 8 / 40
Reine OSGi Web-Applikation


               OSGi-Container


                   OSGi HTTP Service

                   Application Bundle 1

                   Application Bundle 2

                   Library Bundle 1

                   Library Bundle 2



OSGi Tools und Entwicklungsprozess        Seite 9 / 40
Webanwendung mit OSGi

      Querschnittsfunktionalität als OSGi Services
        – Bundles stellen Funktionalität bereit, sind aber nicht durch
          einen statischen Classpath festgeschrieben
        – JAR-Manifest bestimmt Sichtbarkeiten


      Dynamik
        – Classpath wird durch das OSGi Framework verwaltet
        – Austausch von Komponenten zur Laufzeit ohne Neustart
          der Anwendung (zumeist)


      Entwicklung, Testing, Packaging und Deployment
        – mit den üblichen Verdächtigen (Eclipse oder andere IDE,
          Maven etc.) sowie entsprechenden Plugins und Erweiterungen
          und anderen Tools


OSGi Tools und Entwicklungsprozess                                       Seite 10 / 40
Agenda
      Herausforderungen der OSGi Entwicklung: Beispiel Webanwendung

      Was wird entwickelt? - Bundles

      Wie und womit wird entwickelt? - Entwicklungswerkzeuge

      Wofür wird entwickelt? – Plattformen

      Wie wird getestet? – Testing unter OSGi

      Wie wird gebaut? – Build

      Wie wird deployed? – Auslieferung

      Zusammenfassung & Fazit

OSGi Tools und Entwicklungsprozess                                    Seite 11 / 40
Was wird entwickelt? – Bundles!

      Bundles
        – JAR Dateien (Java-Classes & Resources)


      Manifest
        Export-Package: com.foo.bar
        Import-Package: com.baz
        etc ...

      Services
        – Public API Bundle: wird exportiert und kann somit von anderen Bundles
          genutzt werden
        – (Zumeist) Private Implementation Bundle: kann dynamisch ausgetauscht
          werden ohne das abhängige Dienste davon etwas mitbekommen
        – Bundles können Services anbieten und selber nutzen


OSGi Tools und Entwicklungsprozess                                          Seite 12 / 40
Agenda
      Herausforderungen der OSGi Entwicklung: Beispiel Webanwendung

      Was wird entwickelt? - Bundles

      Wie und womit wird entwickelt? - Entwicklungswerkzeuge

      Wofür wird entwickelt? – Plattformen

      Wie wird getestet? – Testing unter OSGi

      Wie wird gebaut? – Build

      Wie wird deployed? – Auslieferung

      Zusammenfassung & Fazit


OSGi Tools und Entwicklungsprozess                                    Seite 13 / 40
Wie wird entwickelt? – Entwicklungswerkzeuge

      BND
        –   Author Peter Kriens (aCute)
        –   Erzeugung von OSGi-Bundles
        –   Lauffähiges Standalone oder integriert mit Eclipse, Maven und Ant
        –   Arbeitet mit sogenannten Specifications (bnd files):
               • Export-Package: some.service.*
               • Private-Package: some.service.impl.*
               • Include-Resource: some.resource.*

      Bundle Inhalt
        –   META-INF/MANIFEST.MF
        –   some/service/Service.class
        –   some/service/impl/ServiceImplementation.class
        –   some/resource/Foo.gif

OSGi Tools und Entwicklungsprozess                                              Seite 14 / 40
Eclipse PDE

      Übersicht
        – Plugin == Bundle (Namensgebung hat historische Gründe)
        – Equinox-Spezifika, aber auch reine OSGi-compliant Bundles möglich
        – Wizard-getriebene Erstellung von Plugin-Projekten, reiche Auswahl an
          Templates für Eclipse-Erweiterungen
        – Run-Configurations zur Ausführung von Code
      Bearbeitung der MANIFEST Dateien
        – Volle Konfiguration über eine schicke Oberfläche
        – Bezieht Informationen aus dem Project-Classpath und den Project-
          Dependencies
      Erzeugung von Bundles
        – Build-Prozess ist integriert und konfigurierbar
        – Deployment ist Eclipse-spezifisch, d.h. kein automatisches Deployment
          in 3rd Party Container (hierzu sind Erweiterungen notwendig)

OSGi Tools und Entwicklungsprozess                                               Seite 15 / 40
Eclipse Manifest Editor




OSGi Tools und Entwicklungsprozess   Seite 16 / 40
Dependency Visualization (Incubator)




OSGi Tools und Entwicklungsprozess     Seite 17 / 40
Integration von Laufzeitumgebungen

      Integration von Laufzeitumgebungen in die IDE
        – Develop-Deploy-Test-Cycle wird vereinfacht
        – Direktes Deployment in den Container der Wahl
        – (Remote-) Debugging wird ermöglicht


      …über spezifische Plugins
        – Z.B. Apache Felix Eclipse Plugin
        – Springsource Tools Suite


      …oder über Pax Cursor / Pax Runner
        – Erlaubt, unterstützt OSGi Plattformen in Eclipse zu integrieren
        – Deploy, Run & Debug von Bundles
        – Momentan Felix, Equinox, Knopflerfish, Concierge


OSGi Tools und Entwicklungsprozess                                          Seite 18 / 40
Integration von Laufzeitumgebungen #2

      Apache Felix Eclipse Integration
        – Felix wird in Eclipse ausgeführt
        – Konsole steht zur Verfügung (install/start/stop etc.)


      Springsource Tool Suite (STS)
        –   Springsource dm und tc Integration
        –   Basiert auf Equinox, Container sind jedoch weitestgehend austauschbar
        –   Automatische OSGi MANIFEST Erzeugung und Validierung
        –   Dependency Graph




OSGi Tools und Entwicklungsprozess                                             Seite 19 / 40
Agenda
      Herausforderungen der OSGi Entwicklung: Beispiel Webanwendung

      Was wird entwickelt? - Bundles

      Wie und womit wird entwickelt? - Entwicklungswerkzeuge

      Wofür wird entwickelt? – Plattformen

      Wie wird getestet? – Testing unter OSGi

      Wie wird gebaut? – Build

      Wie wird deployed? – Auslieferung

      Zusammenfassung & Fazit


OSGi Tools und Entwicklungsprozess                                    Seite 20 / 40
Wofür wird entwickelt? – Plattformen
      Apache Felix
        –   Gestartet 2006, nicht-kommerzielles Open-Source Projekt
        –   Ziel ist die vollständige Einhaltung der OSGi R4.x Spezifikation
        –   Sehr aktive Community
        –   Wird mit Sun‘s GlassFish ausgeliefert


      Knopflerfish
        – Gestartet 1999, Contributor zu den ersten OSGi Spezifikationen
        – Auch Open-Source (BSD), kommerzieller Hintergrund (Makewave)
        – Pro-Variante der Plattform im Angebot


      Equinox
        – Gestartet 2003
        – Ist Eclipse-Basis (seit Version 3), dadurch sehr weit verbreitet
        – Viele nicht-standardisierte Erweiterungen
OSGi Tools und Entwicklungsprozess                                             Seite 21 / 40
Wofür wird entwickelt? – Plattformen #2

      Concierge
        – Hoch-Optimierte R3 Implementierung
        – 80kb Runtime, optimal für Kleingeräte


      Prosyst
        – Kommerzieller Anbieter
        – mBedded OSGi Server, auch für Android


      Oscar
        – Gestartet 2005
        – Seitdem keine Releases mehr
        – Proof-of-Concept Implementierung der heutigen Spec-Leads


      und viele weitere…

OSGi Tools und Entwicklungsprozess                                   Seite 22 / 40
Agenda
      Herausforderungen der OSGi Entwicklung: Beispiel Webanwendung

      Was wird entwickelt? - Bundles

      Wie und womit wird entwickelt? - Entwicklungswerkzeuge

      Wofür wird entwickelt? – Plattformen

      Wie wird getestet? – Testing unter OSGi

      Wie wird gebaut? – Build

      Wie wird deployed? – Auslieferung

      Zusammenfassung & Fazit


OSGi Tools und Entwicklungsprozess                                    Seite 23 / 40
Wie wird getestet? - OSGi Testing

      Unit-Testing auf Bundle-Ebene
        – Wie gehabt: JUnit et al.
        – Mocking von Services (Mockito et al.)


      Integrationstests mit dem Container
        – Notwendig, um Abhängigkeiten und Kommunikation von Bundles zu prüfen
        – Werden alle Verträge eingehalten und gibt es Seiteneffekte?


      Begriff: Provisioning
        – Bereitstellung von Bundles in eine Laufzeitumgebung (OSGi Container)


      PAX Exam / PAX Runner
        – Viele verschiedene vorgegebene Laufzeitumgebungen


OSGi Tools und Entwicklungsprozess                                           Seite 24 / 40
Integrationstests unter OSGi

      Programmierung der Tests im Prinzip wie Unit-Tests
        – org.ops4j.pax.exam.junit.JUnit4TestRunner
        – felix().version("1.8.1");
        – provision(bundle(„file://bundle.jar“));

      Annotation-getriebene Vorgehensweise
        – @Configuration – Definiert eine Methode als Konfiguration
        – @Inject – Injiziert Abhängigkeiten


       Beispiel:




OSGi Tools und Entwicklungsprozess                                    Seite 25 / 40
Beispiel für einen OSGi Integrationstest
@RunWith(JUnit4TestRunner.class)
public class MyJUnitTest {

    @Inject
    BundleContext bundleContext;

    @Configuration
    public static Option[] configuration() {
      return options(frameworks(
                                            felix(),
                                            equinox(),
                                            knopflerfish()));
    }

    @Test
    public void testMethod() throws Exception {
      System.out.println(bundleContext
           .getProperty(Constants.FRAMEWORK_VENDOR));
    }
}

OSGi Tools und Entwicklungsprozess                              Seite 26 / 40
Integrationstests unter OSGi

      Ablauf eines Integrationstests mit PAX Exam
        –   1. Start des OSGi Containers
        –   2. Provisioning der Bundles
        –   3. Dynamische Erstellung eines Test-Bundles
        –   4. Deployment in den Container
        –   5. Ausführen der Testmethoden


      Volle Debugging Möglichkeiten mit Eclipse Bordmitteln




OSGi Tools und Entwicklungsprozess                            Seite 27 / 40
Agenda
      Herausforderungen der OSGi Entwicklung: Beispiel Webanwendung

      Was wird entwickelt? - Bundles

      Wie und womit wird entwickelt? - Entwicklungswerkzeuge

      Wofür wird entwickelt? – Plattformen

      Wie wird getestet? – Testing unter OSGi

      Wie wird gebaut? – Build

      Wie wird deployed? – Auslieferung

      Zusammenfassung & Fazit


OSGi Tools und Entwicklungsprozess                                    Seite 28 / 40
Wie wird gebaut? – OSGi Buildprozess

      Automatisierung des Softwarebuilds
        –   Außerhalb der IDE mit
        –   Maven
        –   Gradle
        –   et al.

      Continuous Integration
        – Fortlaufender Build bei Änderungen am Source-Code, stetige
          Rückmeldung von evtl. Problemen

      Automatisierung der Unit- und Integrationstests
        – Maven Plugins z.B. von Apache Felix
        – maven-bundle-plugin (nutzt bnd tool)



OSGi Tools und Entwicklungsprozess                                     Seite 29 / 40
Agenda
      Herausforderungen der OSGi Entwicklung: Beispiel Webanwendung

      Was wird entwickelt? - Bundles

      Wie und womit wird entwickelt? - Entwicklungswerkzeuge

      Wofür wird entwickelt? – Plattformen

      Wie wird getestet? – Testing unter OSGi

      Wie wird gebaut? – Build

      Wie wird deployed? – Auslieferung

      Zusammenfassung & Fazit


OSGi Tools und Entwicklungsprozess                                    Seite 30 / 40
Wie wird deployed? – OSGi Deployment

      OBR – OSGi Bundle Repositories
        –   Halten Bundles in maschinenlesbarer Struktur vor
        –   Können durch automatisierte Buildprozesse befüllt werden
        –   Siehe maven-bundle-plugin deploy goal
        –   Open Source OBRs existieren, z.B. von Springsource und Codehaus


      Synchronisation der Entwicklung im Team
        – Über OBR werden beim lokalen Build Abhängigkeiten automatisch gezogen


      Verwaltung von Bundle-Versionen
        – Jede Version eines Bundles hat ein definiertes Ablageverzeichnis




OSGi Tools und Entwicklungsprozess                                            Seite 31 / 40
Wie wird deployed? – OSGi Deployment #2

      Embedded OSGi
        – Z.B. Eclipse RCP
        – Springsource tc Server
        – Oder beliebige andere Applikationserver


      OSGi Container
        –   Z.B. Springsource dm Server, Apache Felix, etc.
        –   Über Konsole oder OSGi Management Agent Implementierungen mit GUI
        –   Springsource dm: eigenes Packaging Format: PAR (Platform Archive)
        –   Beinhaltet Kollektion von Bundles und Resources (vgl. WAR/EAR)
        –   Austausch von einzelnen aktualisierten Bundles zur Laufzeit des Servers




OSGi Tools und Entwicklungsprozess                                             Seite 32 / 40
Agenda
      Herausforderungen der OSGi Entwicklung: Beispiel Webanwendung

      Was wird entwickelt? - Bundles

      Wie und womit wird entwickelt? - Entwicklungswerkzeuge

      Wofür wird entwickelt? – Plattformen

      Wie wird getestet? – Testing unter OSGi

      Wie wird gebaut? – Build

      Wie wird deployed? – Auslieferung

      Zusammenfassung & Fazit


OSGi Tools und Entwicklungsprozess                                    Seite 33 / 40
Zusammenfassung

      Es werden Komponenten entwickelt
        – Weitreichende Auswirkungen auf Architekten und Entwickler


      OSGi Toolunterstützung durch weitverbreitete IDEs
        – Durch Plugins
        – Eclipse PDE
        – Springsource ToolSuite


      Test-Unterstützung (und mehr) durch PAX Toolchain

      Build-Unterstützung durch Maven-Plugin
        – Aus dem Apache Felix Projekt



OSGi Tools und Entwicklungsprozess                                    Seite 34 / 40
Fazit

      OSGi-Konzepte müssen klar verstanden und umgesetzt werden

      Relativ steile Lernkurve

      Einige neue Plugins und Tools müssen gelernt werden

      Starke Veränderungen an Tools, teilweise wöchentlich neue
      Releases

      Einarbeitungszeit und Aktualisierungsaufwand ist signifikant
      und sollte eingeplant werden




OSGi Tools und Entwicklungsprozess                                   Seite 35 / 40
Weiterführende Literatur

      Tim O'Brien, Stuart McCulloch, Maven Handbook
      http://www.sonatype.com/books/mcookbook/reference/index.html

      Springsource Tool Suite
      http://www.springsource.com/products/sts

      Apache Felix
      http://felix.apache.org

      Knopflerfish
      http://knopflerfish.org




OSGi Tools und Entwicklungsprozess                                   Seite 36 / 40
Weiterführende Literatur

      BND Tool
      http://www.aqute.biz/Code/Bnd

      PDE Dependency Visualization
      http://www.eclipse.org/pde/incubator/dependency-visualization/index.php

      Maven
      http://maven.apache.org/

      Gradle
      http://www.gradle.org/



OSGi Tools und Entwicklungsprozess                                    Seite 37 / 40
Weiterführende Literatur

      PAX Tools
      http://www.ops4j.org

      PAX Runner
      http://paxrunner.ops4j.org/space/Pax+Runner

      PAX Exam
      http://paxrunner.ops4j.org/display/paxexam




OSGi Tools und Entwicklungsprozess                  Seite 38 / 40
Fragen?
www.iks-gmbh.com

Contenu connexe

En vedette (20)

Preguntas
PreguntasPreguntas
Preguntas
 
Collaboratives entwickeln in Bachelorprojekten
Collaboratives entwickeln in BachelorprojektenCollaboratives entwickeln in Bachelorprojekten
Collaboratives entwickeln in Bachelorprojekten
 
Erziehung sequence b1
Erziehung sequence b1Erziehung sequence b1
Erziehung sequence b1
 
Zorn
ZornZorn
Zorn
 
Dossier María de Buenos Aires
Dossier María de Buenos AiresDossier María de Buenos Aires
Dossier María de Buenos Aires
 
Jezero, Jesen
Jezero, JesenJezero, Jesen
Jezero, Jesen
 
Breitband-Verfuegbarkeit Deutschland
Breitband-Verfuegbarkeit DeutschlandBreitband-Verfuegbarkeit Deutschland
Breitband-Verfuegbarkeit Deutschland
 
Semestre en el bachilleres no
Semestre en el bachilleres noSemestre en el bachilleres no
Semestre en el bachilleres no
 
MDSD Herausforderung: Organisation und Einführung
MDSD Herausforderung: Organisation und EinführungMDSD Herausforderung: Organisation und Einführung
MDSD Herausforderung: Organisation und Einführung
 
Beichte Eines Italienischen Jungen
Beichte Eines Italienischen  JungenBeichte Eines Italienischen  Jungen
Beichte Eines Italienischen Jungen
 
Historia del sena brayan copia
Historia del sena brayan   copiaHistoria del sena brayan   copia
Historia del sena brayan copia
 
Enforex Deutsch 2013
Enforex Deutsch 2013Enforex Deutsch 2013
Enforex Deutsch 2013
 
02 la llaga
02   la llaga02   la llaga
02 la llaga
 
Colegio nacional nicolás esguerra
Colegio nacional nicolás esguerraColegio nacional nicolás esguerra
Colegio nacional nicolás esguerra
 
LAS REDES SOCIALES
LAS REDES SOCIALESLAS REDES SOCIALES
LAS REDES SOCIALES
 
Marcela sena
Marcela senaMarcela sena
Marcela sena
 
Carteras, wallets y bolígrafos
Carteras, wallets y bolígrafosCarteras, wallets y bolígrafos
Carteras, wallets y bolígrafos
 
Gestion de proyectos
Gestion de proyectosGestion de proyectos
Gestion de proyectos
 
Diferentes tipos de máquina para acoplar a un generador
Diferentes tipos de máquina para acoplar a un generadorDiferentes tipos de máquina para acoplar a un generador
Diferentes tipos de máquina para acoplar a un generador
 
Tumor benigno
Tumor benignoTumor benigno
Tumor benigno
 

Similaire à OSGi: Tools und Entwicklungsprozesse in OSGi Projekten

Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerSandro Sonntag
 
Vorstellung OSGi Users'-Forum Germany
Vorstellung OSGi Users'-Forum GermanyVorstellung OSGi Users'-Forum Germany
Vorstellung OSGi Users'-Forum GermanyKai Hackbarth
 
Mobile Anwendungen mit Apache Cordova
Mobile Anwendungen mit Apache CordovaMobile Anwendungen mit Apache Cordova
Mobile Anwendungen mit Apache CordovaYvette Teiken
 
Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010
Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010
Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010Christian Baranowski
 
JSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael GreifenederJSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael GreifenederChristoph Pickl
 
Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007smancke
 
B3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite ApplicationsB3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite ApplicationsAndreas Schulte
 
German: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptGerman: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptRalf Schwoebel
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit MavenStefan Scheidt
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...Marc Müller
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreGregor Biswanger
 
Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios
Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios
Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios simmerl121
 
EnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heuteEnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heutePhilipp Burgmer
 
Li So G Osci
Li So G OsciLi So G Osci
Li So G OsciCloudcamp
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtOPITZ CONSULTING Deutschland
 
Python-IDEs - PyDev und Eclipse
Python-IDEs - PyDev und EclipsePython-IDEs - PyDev und Eclipse
Python-IDEs - PyDev und EclipseThomas Koch
 
Bob the Builder - Build & Deploy von ADF Enterprise Anwendungen
Bob the Builder - Build & Deploy von ADF Enterprise AnwendungenBob the Builder - Build & Deploy von ADF Enterprise Anwendungen
Bob the Builder - Build & Deploy von ADF Enterprise AnwendungenTorsten Kleiber
 
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Wiest Simon
 

Similaire à OSGi: Tools und Entwicklungsprozesse in OSGi Projekten (20)

OSGi: Grundlagen und Konzepte
OSGi: Grundlagen und KonzepteOSGi: Grundlagen und Konzepte
OSGi: Grundlagen und Konzepte
 
iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb
iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb
iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM Server
 
Vorstellung OSGi Users'-Forum Germany
Vorstellung OSGi Users'-Forum GermanyVorstellung OSGi Users'-Forum Germany
Vorstellung OSGi Users'-Forum Germany
 
Mobile Anwendungen mit Apache Cordova
Mobile Anwendungen mit Apache CordovaMobile Anwendungen mit Apache Cordova
Mobile Anwendungen mit Apache Cordova
 
Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010
Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010
Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010
 
JSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael GreifenederJSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael Greifeneder
 
Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007
 
B3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite ApplicationsB3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite Applications
 
German: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptGerman: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit Javascript
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit Maven
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
 
Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios
Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios
Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios
 
EnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heuteEnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heute
 
Li So G Osci
Li So G OsciLi So G Osci
Li So G Osci
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
 
Python-IDEs - PyDev und Eclipse
Python-IDEs - PyDev und EclipsePython-IDEs - PyDev und Eclipse
Python-IDEs - PyDev und Eclipse
 
Bob the Builder - Build & Deploy von ADF Enterprise Anwendungen
Bob the Builder - Build & Deploy von ADF Enterprise AnwendungenBob the Builder - Build & Deploy von ADF Enterprise Anwendungen
Bob the Builder - Build & Deploy von ADF Enterprise Anwendungen
 
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
 

Plus de IKS Gesellschaft für Informations- und Kommunikationssysteme mbH

Plus de IKS Gesellschaft für Informations- und Kommunikationssysteme mbH (20)

Es wird Zeit KI zu nutzen - Wie es mit Azure KI Services und .NET MAUI gelingt
Es wird Zeit KI zu nutzen - Wie es mit Azure KI Services und .NET MAUI gelingtEs wird Zeit KI zu nutzen - Wie es mit Azure KI Services und .NET MAUI gelingt
Es wird Zeit KI zu nutzen - Wie es mit Azure KI Services und .NET MAUI gelingt
 
Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...
Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...
Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...
 
Thementag 2023 04 Lindern, heilen oder gar fit machen.pdf
Thementag 2023 04 Lindern, heilen oder gar fit machen.pdfThementag 2023 04 Lindern, heilen oder gar fit machen.pdf
Thementag 2023 04 Lindern, heilen oder gar fit machen.pdf
 
Thementag 2023 05 Wer zu spät kommt, den bestraft das Leben - Modernisierung ...
Thementag 2023 05 Wer zu spät kommt, den bestraft das Leben - Modernisierung ...Thementag 2023 05 Wer zu spät kommt, den bestraft das Leben - Modernisierung ...
Thementag 2023 05 Wer zu spät kommt, den bestraft das Leben - Modernisierung ...
 
Thementag 2023 01 Mut zur Modernisierung - ein Praxisbeispiel.pdf
Thementag 2023 01 Mut zur Modernisierung - ein Praxisbeispiel.pdfThementag 2023 01 Mut zur Modernisierung - ein Praxisbeispiel.pdf
Thementag 2023 01 Mut zur Modernisierung - ein Praxisbeispiel.pdf
 
Thementag 2023 03 Einführung in die Softwaremodernisierung.pdf
Thementag 2023 03 Einführung in die Softwaremodernisierung.pdfThementag 2023 03 Einführung in die Softwaremodernisierung.pdf
Thementag 2023 03 Einführung in die Softwaremodernisierung.pdf
 
Thementag 2022 01 Verpassen Sie nicht den Anschluss.pdf
Thementag 2022 01 Verpassen Sie nicht den Anschluss.pdfThementag 2022 01 Verpassen Sie nicht den Anschluss.pdf
Thementag 2022 01 Verpassen Sie nicht den Anschluss.pdf
 
Thementag 2022 04 ML auf die Schiene gebracht.pdf
Thementag 2022 04 ML auf die Schiene gebracht.pdfThementag 2022 04 ML auf die Schiene gebracht.pdf
Thementag 2022 04 ML auf die Schiene gebracht.pdf
 
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdfThementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
 
Thementag 2022 02 Der Deutschen Bahn in die Karten geschaut.pdf
Thementag 2022 02 Der Deutschen Bahn in die Karten geschaut.pdfThementag 2022 02 Der Deutschen Bahn in die Karten geschaut.pdf
Thementag 2022 02 Der Deutschen Bahn in die Karten geschaut.pdf
 
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine LearningDaten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
 
Erste Schritte in die neue Welt-So gelingt der Einstieg in Big Data und Machi...
Erste Schritte in die neue Welt-So gelingt der Einstieg in Big Data und Machi...Erste Schritte in die neue Welt-So gelingt der Einstieg in Big Data und Machi...
Erste Schritte in die neue Welt-So gelingt der Einstieg in Big Data und Machi...
 
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
 
Big Data und Machine Learning - Wer braucht das schon!?
Big Data und Machine Learning - Wer braucht das schon!?Big Data und Machine Learning - Wer braucht das schon!?
Big Data und Machine Learning - Wer braucht das schon!?
 
Erste Schritte in die neue Welt - So gelingt der Einstieg in Big Data und Mac...
Erste Schritte in die neue Welt - So gelingt der Einstieg in Big Data und Mac...Erste Schritte in die neue Welt - So gelingt der Einstieg in Big Data und Mac...
Erste Schritte in die neue Welt - So gelingt der Einstieg in Big Data und Mac...
 
Darf es ein bisschen mehr sein - Konzepte Strategien zur Bewältigung großer u...
Darf es ein bisschen mehr sein - Konzepte Strategien zur Bewältigung großer u...Darf es ein bisschen mehr sein - Konzepte Strategien zur Bewältigung großer u...
Darf es ein bisschen mehr sein - Konzepte Strategien zur Bewältigung großer u...
 
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine LearningDaten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
 
Big Data und Machine Learning - Wer braucht das schon!?
Big Data und Machine Learning - Wer braucht das schon!?Big Data und Machine Learning - Wer braucht das schon!?
Big Data und Machine Learning - Wer braucht das schon!?
 
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine LearningDaten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
 
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
 

OSGi: Tools und Entwicklungsprozesse in OSGi Projekten

  • 1. OSGi: Toolunterstützung und Softwareentwicklungsprozess Thementag OSGi 03.11.2009 Autor: Thorsten Vogel
  • 2. Agenda Herausforderungen der OSGi Entwicklung: Beispiel Webanwendung Was wird entwickelt? - Bundles Wie und womit wird entwickelt? - Entwicklungswerkzeuge Wofür wird entwickelt? – Plattformen Wie wird getestet? – Testing unter OSGi Wie wird gebaut? – Build Wie wird deployed? – Auslieferung Zusammenfassung & Fazit OSGi Tools und Entwicklungsprozess Seite 3 / 40
  • 3. Herausforderungen der OSGi-Entwicklung Komponenten Architektur – Interfaces (public), Implementierungen (private) – Hollywood Prinzip: Don‘t call us, we will call you! Service Architektur – Publish - Subscribe Modell – Abhängigkeiten zu Services programmatisch oder deklarativ Bei OSGi im Konzept „erzwungen" – „Flache“ Classpath-Modelle funktionieren auch, erlauben dann aber nicht die wichtigsten OSGi Features wie z.B. Dynamik und lose Kopplung von Komponenten zu nutzen – Nicht abgegrenzter Code verursacht Umstellungsaufwand OSGi Tools und Entwicklungsprozess Seite 4 / 40
  • 4. Webanwendung ohne OSGi Querschnittsfunktionalität in Libraries (JAR Dateien) – Direkte Nutzung durch Auflösung im Classpath Nur ein Classpath – Reihenfolge entscheidend Keine Dynamik – Bei Austausch einer Komponente oder Library muss die gesamte Anwendung neu gestartet werden (zumeist) Entwicklung, Testing, Packaging und Deployment – Mit den üblichen Verdächtigen (Eclipse oder andere IDE, Maven etc.) OSGi Tools und Entwicklungsprozess Seite 5 / 40
  • 5. Webanwendung mit OSGi Zwei Arten der Integration Embedded (In-Container) – OSGi Framework wird innerhalb eines WAR/EAR ausgeliefert und gestartet – Nutzung nur durch die entsprechende Web-Applikation OSGi Tools und Entwicklungsprozess Seite 6 / 40
  • 6. Embedded OSGi Integration (In-Container) Web-Container EAR/WAR mit OSGi WAR WAR WAR OSGi Framework Bundle 1 Bundle 2 EAR EAR EAR Bundle 3 OSGi Tools und Entwicklungsprozess Seite 7 / 40
  • 7. Reine OSGi Web-Applikation OSGi Framework stellt Web-Container zur Verfügung und ist gleichzeitig Ausführungsumgebung der Anwendung Konsequente Nutzung aller OSGi Features OSGi-embedded Web-Container (Jetty, Tomcat, …) Springsource tc/dm Server OSGi Tools und Entwicklungsprozess Seite 8 / 40
  • 8. Reine OSGi Web-Applikation OSGi-Container OSGi HTTP Service Application Bundle 1 Application Bundle 2 Library Bundle 1 Library Bundle 2 OSGi Tools und Entwicklungsprozess Seite 9 / 40
  • 9. Webanwendung mit OSGi Querschnittsfunktionalität als OSGi Services – Bundles stellen Funktionalität bereit, sind aber nicht durch einen statischen Classpath festgeschrieben – JAR-Manifest bestimmt Sichtbarkeiten Dynamik – Classpath wird durch das OSGi Framework verwaltet – Austausch von Komponenten zur Laufzeit ohne Neustart der Anwendung (zumeist) Entwicklung, Testing, Packaging und Deployment – mit den üblichen Verdächtigen (Eclipse oder andere IDE, Maven etc.) sowie entsprechenden Plugins und Erweiterungen und anderen Tools OSGi Tools und Entwicklungsprozess Seite 10 / 40
  • 10. Agenda Herausforderungen der OSGi Entwicklung: Beispiel Webanwendung Was wird entwickelt? - Bundles Wie und womit wird entwickelt? - Entwicklungswerkzeuge Wofür wird entwickelt? – Plattformen Wie wird getestet? – Testing unter OSGi Wie wird gebaut? – Build Wie wird deployed? – Auslieferung Zusammenfassung & Fazit OSGi Tools und Entwicklungsprozess Seite 11 / 40
  • 11. Was wird entwickelt? – Bundles! Bundles – JAR Dateien (Java-Classes & Resources) Manifest Export-Package: com.foo.bar Import-Package: com.baz etc ... Services – Public API Bundle: wird exportiert und kann somit von anderen Bundles genutzt werden – (Zumeist) Private Implementation Bundle: kann dynamisch ausgetauscht werden ohne das abhängige Dienste davon etwas mitbekommen – Bundles können Services anbieten und selber nutzen OSGi Tools und Entwicklungsprozess Seite 12 / 40
  • 12. Agenda Herausforderungen der OSGi Entwicklung: Beispiel Webanwendung Was wird entwickelt? - Bundles Wie und womit wird entwickelt? - Entwicklungswerkzeuge Wofür wird entwickelt? – Plattformen Wie wird getestet? – Testing unter OSGi Wie wird gebaut? – Build Wie wird deployed? – Auslieferung Zusammenfassung & Fazit OSGi Tools und Entwicklungsprozess Seite 13 / 40
  • 13. Wie wird entwickelt? – Entwicklungswerkzeuge BND – Author Peter Kriens (aCute) – Erzeugung von OSGi-Bundles – Lauffähiges Standalone oder integriert mit Eclipse, Maven und Ant – Arbeitet mit sogenannten Specifications (bnd files): • Export-Package: some.service.* • Private-Package: some.service.impl.* • Include-Resource: some.resource.* Bundle Inhalt – META-INF/MANIFEST.MF – some/service/Service.class – some/service/impl/ServiceImplementation.class – some/resource/Foo.gif OSGi Tools und Entwicklungsprozess Seite 14 / 40
  • 14. Eclipse PDE Übersicht – Plugin == Bundle (Namensgebung hat historische Gründe) – Equinox-Spezifika, aber auch reine OSGi-compliant Bundles möglich – Wizard-getriebene Erstellung von Plugin-Projekten, reiche Auswahl an Templates für Eclipse-Erweiterungen – Run-Configurations zur Ausführung von Code Bearbeitung der MANIFEST Dateien – Volle Konfiguration über eine schicke Oberfläche – Bezieht Informationen aus dem Project-Classpath und den Project- Dependencies Erzeugung von Bundles – Build-Prozess ist integriert und konfigurierbar – Deployment ist Eclipse-spezifisch, d.h. kein automatisches Deployment in 3rd Party Container (hierzu sind Erweiterungen notwendig) OSGi Tools und Entwicklungsprozess Seite 15 / 40
  • 15. Eclipse Manifest Editor OSGi Tools und Entwicklungsprozess Seite 16 / 40
  • 16. Dependency Visualization (Incubator) OSGi Tools und Entwicklungsprozess Seite 17 / 40
  • 17. Integration von Laufzeitumgebungen Integration von Laufzeitumgebungen in die IDE – Develop-Deploy-Test-Cycle wird vereinfacht – Direktes Deployment in den Container der Wahl – (Remote-) Debugging wird ermöglicht …über spezifische Plugins – Z.B. Apache Felix Eclipse Plugin – Springsource Tools Suite …oder über Pax Cursor / Pax Runner – Erlaubt, unterstützt OSGi Plattformen in Eclipse zu integrieren – Deploy, Run & Debug von Bundles – Momentan Felix, Equinox, Knopflerfish, Concierge OSGi Tools und Entwicklungsprozess Seite 18 / 40
  • 18. Integration von Laufzeitumgebungen #2 Apache Felix Eclipse Integration – Felix wird in Eclipse ausgeführt – Konsole steht zur Verfügung (install/start/stop etc.) Springsource Tool Suite (STS) – Springsource dm und tc Integration – Basiert auf Equinox, Container sind jedoch weitestgehend austauschbar – Automatische OSGi MANIFEST Erzeugung und Validierung – Dependency Graph OSGi Tools und Entwicklungsprozess Seite 19 / 40
  • 19. Agenda Herausforderungen der OSGi Entwicklung: Beispiel Webanwendung Was wird entwickelt? - Bundles Wie und womit wird entwickelt? - Entwicklungswerkzeuge Wofür wird entwickelt? – Plattformen Wie wird getestet? – Testing unter OSGi Wie wird gebaut? – Build Wie wird deployed? – Auslieferung Zusammenfassung & Fazit OSGi Tools und Entwicklungsprozess Seite 20 / 40
  • 20. Wofür wird entwickelt? – Plattformen Apache Felix – Gestartet 2006, nicht-kommerzielles Open-Source Projekt – Ziel ist die vollständige Einhaltung der OSGi R4.x Spezifikation – Sehr aktive Community – Wird mit Sun‘s GlassFish ausgeliefert Knopflerfish – Gestartet 1999, Contributor zu den ersten OSGi Spezifikationen – Auch Open-Source (BSD), kommerzieller Hintergrund (Makewave) – Pro-Variante der Plattform im Angebot Equinox – Gestartet 2003 – Ist Eclipse-Basis (seit Version 3), dadurch sehr weit verbreitet – Viele nicht-standardisierte Erweiterungen OSGi Tools und Entwicklungsprozess Seite 21 / 40
  • 21. Wofür wird entwickelt? – Plattformen #2 Concierge – Hoch-Optimierte R3 Implementierung – 80kb Runtime, optimal für Kleingeräte Prosyst – Kommerzieller Anbieter – mBedded OSGi Server, auch für Android Oscar – Gestartet 2005 – Seitdem keine Releases mehr – Proof-of-Concept Implementierung der heutigen Spec-Leads und viele weitere… OSGi Tools und Entwicklungsprozess Seite 22 / 40
  • 22. Agenda Herausforderungen der OSGi Entwicklung: Beispiel Webanwendung Was wird entwickelt? - Bundles Wie und womit wird entwickelt? - Entwicklungswerkzeuge Wofür wird entwickelt? – Plattformen Wie wird getestet? – Testing unter OSGi Wie wird gebaut? – Build Wie wird deployed? – Auslieferung Zusammenfassung & Fazit OSGi Tools und Entwicklungsprozess Seite 23 / 40
  • 23. Wie wird getestet? - OSGi Testing Unit-Testing auf Bundle-Ebene – Wie gehabt: JUnit et al. – Mocking von Services (Mockito et al.) Integrationstests mit dem Container – Notwendig, um Abhängigkeiten und Kommunikation von Bundles zu prüfen – Werden alle Verträge eingehalten und gibt es Seiteneffekte? Begriff: Provisioning – Bereitstellung von Bundles in eine Laufzeitumgebung (OSGi Container) PAX Exam / PAX Runner – Viele verschiedene vorgegebene Laufzeitumgebungen OSGi Tools und Entwicklungsprozess Seite 24 / 40
  • 24. Integrationstests unter OSGi Programmierung der Tests im Prinzip wie Unit-Tests – org.ops4j.pax.exam.junit.JUnit4TestRunner – felix().version("1.8.1"); – provision(bundle(„file://bundle.jar“)); Annotation-getriebene Vorgehensweise – @Configuration – Definiert eine Methode als Konfiguration – @Inject – Injiziert Abhängigkeiten Beispiel: OSGi Tools und Entwicklungsprozess Seite 25 / 40
  • 25. Beispiel für einen OSGi Integrationstest @RunWith(JUnit4TestRunner.class) public class MyJUnitTest { @Inject BundleContext bundleContext; @Configuration public static Option[] configuration() { return options(frameworks( felix(), equinox(), knopflerfish())); } @Test public void testMethod() throws Exception { System.out.println(bundleContext .getProperty(Constants.FRAMEWORK_VENDOR)); } } OSGi Tools und Entwicklungsprozess Seite 26 / 40
  • 26. Integrationstests unter OSGi Ablauf eines Integrationstests mit PAX Exam – 1. Start des OSGi Containers – 2. Provisioning der Bundles – 3. Dynamische Erstellung eines Test-Bundles – 4. Deployment in den Container – 5. Ausführen der Testmethoden Volle Debugging Möglichkeiten mit Eclipse Bordmitteln OSGi Tools und Entwicklungsprozess Seite 27 / 40
  • 27. Agenda Herausforderungen der OSGi Entwicklung: Beispiel Webanwendung Was wird entwickelt? - Bundles Wie und womit wird entwickelt? - Entwicklungswerkzeuge Wofür wird entwickelt? – Plattformen Wie wird getestet? – Testing unter OSGi Wie wird gebaut? – Build Wie wird deployed? – Auslieferung Zusammenfassung & Fazit OSGi Tools und Entwicklungsprozess Seite 28 / 40
  • 28. Wie wird gebaut? – OSGi Buildprozess Automatisierung des Softwarebuilds – Außerhalb der IDE mit – Maven – Gradle – et al. Continuous Integration – Fortlaufender Build bei Änderungen am Source-Code, stetige Rückmeldung von evtl. Problemen Automatisierung der Unit- und Integrationstests – Maven Plugins z.B. von Apache Felix – maven-bundle-plugin (nutzt bnd tool) OSGi Tools und Entwicklungsprozess Seite 29 / 40
  • 29. Agenda Herausforderungen der OSGi Entwicklung: Beispiel Webanwendung Was wird entwickelt? - Bundles Wie und womit wird entwickelt? - Entwicklungswerkzeuge Wofür wird entwickelt? – Plattformen Wie wird getestet? – Testing unter OSGi Wie wird gebaut? – Build Wie wird deployed? – Auslieferung Zusammenfassung & Fazit OSGi Tools und Entwicklungsprozess Seite 30 / 40
  • 30. Wie wird deployed? – OSGi Deployment OBR – OSGi Bundle Repositories – Halten Bundles in maschinenlesbarer Struktur vor – Können durch automatisierte Buildprozesse befüllt werden – Siehe maven-bundle-plugin deploy goal – Open Source OBRs existieren, z.B. von Springsource und Codehaus Synchronisation der Entwicklung im Team – Über OBR werden beim lokalen Build Abhängigkeiten automatisch gezogen Verwaltung von Bundle-Versionen – Jede Version eines Bundles hat ein definiertes Ablageverzeichnis OSGi Tools und Entwicklungsprozess Seite 31 / 40
  • 31. Wie wird deployed? – OSGi Deployment #2 Embedded OSGi – Z.B. Eclipse RCP – Springsource tc Server – Oder beliebige andere Applikationserver OSGi Container – Z.B. Springsource dm Server, Apache Felix, etc. – Über Konsole oder OSGi Management Agent Implementierungen mit GUI – Springsource dm: eigenes Packaging Format: PAR (Platform Archive) – Beinhaltet Kollektion von Bundles und Resources (vgl. WAR/EAR) – Austausch von einzelnen aktualisierten Bundles zur Laufzeit des Servers OSGi Tools und Entwicklungsprozess Seite 32 / 40
  • 32. Agenda Herausforderungen der OSGi Entwicklung: Beispiel Webanwendung Was wird entwickelt? - Bundles Wie und womit wird entwickelt? - Entwicklungswerkzeuge Wofür wird entwickelt? – Plattformen Wie wird getestet? – Testing unter OSGi Wie wird gebaut? – Build Wie wird deployed? – Auslieferung Zusammenfassung & Fazit OSGi Tools und Entwicklungsprozess Seite 33 / 40
  • 33. Zusammenfassung Es werden Komponenten entwickelt – Weitreichende Auswirkungen auf Architekten und Entwickler OSGi Toolunterstützung durch weitverbreitete IDEs – Durch Plugins – Eclipse PDE – Springsource ToolSuite Test-Unterstützung (und mehr) durch PAX Toolchain Build-Unterstützung durch Maven-Plugin – Aus dem Apache Felix Projekt OSGi Tools und Entwicklungsprozess Seite 34 / 40
  • 34. Fazit OSGi-Konzepte müssen klar verstanden und umgesetzt werden Relativ steile Lernkurve Einige neue Plugins und Tools müssen gelernt werden Starke Veränderungen an Tools, teilweise wöchentlich neue Releases Einarbeitungszeit und Aktualisierungsaufwand ist signifikant und sollte eingeplant werden OSGi Tools und Entwicklungsprozess Seite 35 / 40
  • 35. Weiterführende Literatur Tim O'Brien, Stuart McCulloch, Maven Handbook http://www.sonatype.com/books/mcookbook/reference/index.html Springsource Tool Suite http://www.springsource.com/products/sts Apache Felix http://felix.apache.org Knopflerfish http://knopflerfish.org OSGi Tools und Entwicklungsprozess Seite 36 / 40
  • 36. Weiterführende Literatur BND Tool http://www.aqute.biz/Code/Bnd PDE Dependency Visualization http://www.eclipse.org/pde/incubator/dependency-visualization/index.php Maven http://maven.apache.org/ Gradle http://www.gradle.org/ OSGi Tools und Entwicklungsprozess Seite 37 / 40
  • 37. Weiterführende Literatur PAX Tools http://www.ops4j.org PAX Runner http://paxrunner.ops4j.org/space/Pax+Runner PAX Exam http://paxrunner.ops4j.org/display/paxexam OSGi Tools und Entwicklungsprozess Seite 38 / 40