OSGi: Toolunterstützung und Softwareentwicklungsprozess



Ähnliche Dokumente
Spring Dynamic Modules for OSGi Service Platforms

OSGi-basierte Webapplikationen Ein Erfahrungsbericht

OSGi. The Next Generation Java Service Platform. SOA - The Java Way or My classpath is killing me. Michael Greifeneder

Spring Dynamic Modules for OSGi Service Platforms

Das Interceptor Muster

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

C. Schädel, C. Schmidt-Casdorff iks GmbH. Provisioning unter OSGi für Test und Betrieb

OSGi: Anwendungsszenarien, Auswahlkriterien und Ausblick

Mit OSGi Webanwendungen entwickeln Was geht, was nicht?

Gerd Wütherich Nils Hartmann. OSGi Service Platform by example

Maven 2 Softwareprojekte mit Kultur

Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern

Gerd Wütherich Martin Lippert. OSGi Service Platform by example

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Java Entwicklung für Embedded Devices Best & Worst Practices!

E-Business Architekturen

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

MO 27. Aug. 2007, 17:00 UHR JAVA FRAMEWORKS TIPPS VON PROFI-GÄRTNERN GEGEN WILDWUCHS

Automatisiertes Testen von Java EE-Applikationen mit Arquillian

Content Management mit JSR-170 und dem Open Source CMS Magnolia

Make-loses Java für mehr Produktivität: Das z 2 -Environment. Henning Blohm

Nils Hartmann Gerd Wütherich. Build my bundle! oder: Es muss nicht immer PDE sein

Einreichung zum Call for Papers

Build-Pipeline mit Jenkins

Task: Nmap Skripte ausführen

Kurzfassung der Studienarbeit

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Avira Server Security Produktupdates. Best Practice

Testplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw,

Weblogic Server: Administration für Umsteiger

Business Application Framework für SharePoint Der Kern aller PSC-Lösungen

Softwareprojekte mit Kultur

Open Source. Hendrik Ebbers 2015

eclipse und Komponenten

Continuous Delivery. für Java Anwendungen. Axel Fontaine Software Development Expert

Entwicklungsumgebungen. Packer, Vagrant, Puppet. Alexander Pacnik Mannheim,

Planung für Organisation und Technik

Consultant & Geschäftsführer, enpit consulting OHG ugb@enpit.de

Build Management Tool?

Das Build-Tool ANT ETIS SS05

Installation der SAS Foundation Software auf Windows

Multimedia im Netz. Wintersemester 2011/12. Übung 10. Betreuer: Verantwortlicher Professor: Sebastian Löhmann. Prof. Dr.

Windows Server 2012 R2 Essentials & Hyper-V

Dynamische Plug-ins mit Eclipse 3. Martin Lippert Tammo Freese

Ohne Build geht's besser: Makeloses Java mit dem z 2 -Environment. Henning Blohm

Eclipse Plugins für die komfortablere Verwendung von ibatis SQLMaps

Continuous Delivery in der Realität eines Großunternehmens

LEHRSTUHL FÜR DATENBANKEN

Testen mit JUnit. Motivation

Dr. Klaus Körmeier BlueBridge Technologies AG

Vector Software. Verwendung des VectorCAST/Requirement Gateways mit DOORS > > >

MetaQuotes Empfehlungen zum Gebrauch von

Erfolgreicher Ums9eg auf Git

Webseiten und Web-Apps grafisch gestalten mit HTML5 Canvas ohne Flash und sonstige Tools

Build Management Tool

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

HMS. Statistiken mit SAS ins Internet. HMS Analytical Software GmbH - Johannes Lang

Vortrag von: Ilias Agorakis & Robert Roginer

Automatisiertes End-to-end Testen von Enterprise Applikationen

Java Server Faces. Andy Bosch. Das Standard-Framework zum Aufbau webbasierter Anwendungen. An imprint of Pearson Education

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Lokale Installation von DotNetNuke 4 ohne IIS

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Microsoft SharePoint 2013 Designer

Anbindung Borland CaliberRM

Ora Education GmbH. Lehrgang: Oracle Application Server 10g R3: Administration

Citrix Dazzle. Die Zukunft der XenApp Bereitstellung? Thomas Kötzing - Freiberufler, Analyst Microsoft MVP, Citrix CTP / ThomasKoetzing.

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

WebService in Java SE und EE

Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail:

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Infrastruktur entwickeln mit Chef

jbpm5 in Java EE 6 Marek Iwaszkiewicz Pascal Schaerf akquinet AG

Titel. SCSM ITIL - CMDB - neue CI Klasse erstellen und benutzen. Eine beispielhafte Installationsanleitung zur Verwendung im Testlab

SAP NetWeaver Gateway. 2013

Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2

Datenhaltung für Android Model First Christian Ingenhaag, Frederik Götz, Carl Steeg

OS IDE Webserver Integration des Webservers in die IDE Wireshark Webserver II Dynamisches Webprojekt in Eclipse

EIDAMO Webshop-Lösung - White Paper

BIF/SWE - Übungsbeispiel

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Einsatzbearbeitung im Sanitätsdienst

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

SpringSource Enterprise & Application Platform: Wo geht die Reise hin?

Database Change Management für Continuous Delivery. Diana Lander und Andreas Falk NovaTec Consulting GmbH

Produktionsfähige Applikationen

Übung: Verwendung von Java-Threads

Testen von graphischen Benutzeroberflächen. 24. Juni 2015

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

Robot Karol für Delphi

Software-Engineering 2. Software-Engineering 2. Entwicklungsumgebungen (IDE) IT works. Klaus Mairon

Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool

Anleitung zum Arbeiten mit Microsoft Visual Studio 2008 im Softwarepraktikum ET/IT

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

DOKUMENTATION VOGELZUCHT 2015 PLUS

Transkript:

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 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 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.) 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 Seite 6 / 40

Embedded OSGi Integration (In-Container) Web-Container WAR EAR EAR/WAR mit OSGi OSGi Framework Bundle 1 Bundle 2 Bundle 3 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 Seite 8 / 40

Reine OSGi Web-Applikation OSGi-Container OSGi HTTP Service Application Bundle 1 Application Bundle 2 Library Bundle 1 Library Bundle 2 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 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 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 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 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 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) Seite 15 / 40

Eclipse Manifest Editor Seite 16 / 40

Dependency Visualization (Incubator) 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 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 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 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 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 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 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 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: 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)); } 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 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 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) 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 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 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 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 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 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 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 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/ 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 Seite 38 / 40

Fragen?

www.iks-gmbh.com