Modularity-Patterns mit Java 9 / Jigsaw

Größe: px
Ab Seite anzeigen:

Download "Modularity-Patterns mit Java 9 / Jigsaw"

Transkript

1 Modularity-Patterns mit Java 9 / Jigsaw MARTIN LEHMANN, DR. v.3.12 v.3 1 Java Forum Stuttgart, 5. Juli 2018

2 Abstract Java Forum Stuttgart Mit Java 9 kam im September 2017 (endlich!) das lange angekündigte und lang ersehnte Modulsystem Jigsaw. Jigsaw ist eine grundlegende Strukturänderung von Java-Plattform und -Sprache, mit deren Auswirkungen man sich möglichst früh beschäftigen sollte. Komponentenbasierte Software ist nichts Neues. Mit Java 9 steht nach über 20 Jahren Java- Entwicklung nun direkt ein natives Sprachmittel zur Verfügung, um Komponenten zu definieren und in der Architektur zu verankern. Was bisher nur mit Tools wie Maven oder Ivy bzw. durch statische Code-Analyse möglich war, ist nun direkt als Sprachfeature verfügbar. Wir betrachten verschiedene bekannte Modularity-Design-Patterns und zeigen, wie man diese mit Jigsaw umsetzen kann, darunter Patterns zu Architektur- und Komponentenschnitt, Patterns zu Abhängigkeiten, Patterns zu Test, Patterns zu Erweiterbarkeit und zur Evolution / Migration. Welche Patterns werden gut unterstützt, welche erfordern zusätzliche Klimmzüge oder gar eigene Erweiterungen? Welche Features kann Jigsaw in Java 9 noch nicht (Beispiel: Modul- Versionierung)? 2

3 Martin Lehmann, Accso - Accelerated Solutions GmbH Cheftechnologe Martin Lehmann ist Diplom-Informatiker und arbeitet als Cheftechnologe und Softwarearchitekt bei der Accso - Accelerated Solutions GmbH. Seit Ende der 90er-Jahre wirkt er als Software-entwickler und -architekt in der Softwareentwicklung in diversen Projekten der Individual-entwicklung für Kunden verschiedener Branchen. Seit den Zeiten von Java 1.0 beschäftigt er sich mit Java als Programmiersprache und als Ökosystem. Kristine Schaal, Accso - Accelerated Solutions GmbH Softwarearchitektin Dr. Kristine Schaal ist als Softwarearchitektin bei der Accso - Accelerated Solutions GmbH tätig. Sie arbeitet seit 20 Jahren in der Softwareentwicklung und ist in Projekten der Individualentwicklung für Kunden verschiedener Branchen unterwegs, technisch überwiegend im Java- Umfeld. 3

4 4 Project Jigsaw seit Java 9: JSR 376 und seine Ziele JSR 376 für das Java Platform Module System (JPMS) Project Jigsaw seit Java 9-Release vom 21. September 2017 enthalten. Aktuell: Releases und JEP 261, 200, 201, 220, 260, 282 mit Modulsystem, modularisiertem JDK und der Kapselung interner APIs Strong Encapsulation Eine Komponente kann ihr öffentliches API definieren und den Zugriff auf Implementierungsgeheimnisse verhindern. Reliable Configuration Ablösung des Classpath (fehleranfällig, wenn Klassen mehrfach enthalten sind Reihenfolgeprobleme). Scalable Java SE Platform Die Java-Plattform ist nun modularisiert. Man kann individuell angepasste, schlanke Plattformen bauen.

5 Wichtige Anforderungen aus der JPMS-Spec Module mit Dependencies, Resolution, Encapsulation, Non-Interference: In allen Phasen (Compile, Laufzeit). Exports müssen von außen überschreibbar sein. Resource Encapsulation Services: Binding, Selective Binding Java Platform Modularization Interoperabilität mit anderen Modulsystemen (OSGi explizit genannt) Refactoring: Module aufspaltbar / zusammenlegbar, ohne Auswirkungen auf Clients Whitebox-Tests müssen möglich bleiben Schrittweise Migration, Weiterbenutzung von existierenden Tools wie Maven Linking, um optimierte Plattform bauen zu können Keine Verschlechterung der Performance Versionierung ist explizit ausgeklammert (Modul hat nur einen Versionsstring!) 5

6 Modularity Patterns Der Pattern- Katalog 6

7 Kirk Knoernschild Java Application Architecture Modularity Patterns with Examples Using OSGi Series: Robert C. Martin Series Paperback: 384 pages Publisher: Prentice Hall; 1 edition March 25, 2012 ISBN-10: ISBN-13:

8 8 Base Patterns Manage Relationships Module Reuse Cohesive Modules Dependency Patterns Acyclic Relationships Levelize Modules Physical Layers Container Independence Independent Deployment Usability Patterns Published Interface External Configuration Default Implementation Module Facade Extensibility Patterns Abstract Modules Implementation Factory Separate Abstractions Utility Patterns Collocate Exceptions Levelized Build Test Module Design module relationships Emphasize reusability at the module level Module behavior should serve a singular purpose Module relationships must be acyclic Module relationships should be levelized Module relationships should not violate the conceptual layers Modules should be independent of the runtime container Modules should be independently deployable units Pattern Catalog Make a module s published interface well known Modules should be externally configurable Provide modules with a default implementation Facade as a coarse-grained entry point to fine-grained underlying implementation Depend upon the abstract elements of a module Use factories to create a module s implementation classes Place abstractions and the classes that implement them in separate modules modularity/pattern-catalog/ Exceptions should be close to the classes that throw them Execute the build in accordance with module levelization Each module should have a test module that validates it s behavior and illustrates it s usage

9 Base Pattern Manage Relationships Design module relationships 9

10 Base Pattern Manage Relationships 10 Pattern Komponenten = wiederverwendbare Software- Bausteine Wohldefinierte Schnittstellen Eingehende Schnittstellen Ausgehende Schnittstellen Der Grad der Abhängigkeiten bestimmt die Komplexität einer Anwendung maßgeblich. Vorteile Komponenten brechen den Monolithen auf. Nachvollziehbare Auswirkungen von Änderungen Es wird nur geladen, was wirklich benötigt wird. Nachteile Es wird nur geladen, was wirklich modelliert wurde.

11 Ein Module als First-Class-Citizen in Java Module := Menge von Java-Packages & Resources Wird in ein Modular JAR kompiliert. Dieses liegt im neuen Module-Path. Module-Namen müssen eindeutig sein (erlaubt sind. und _, aber nicht -) Im Module-Deskriptor stehen: Name Abhängigkeiten Zugriffsschutz Keine weiteren Syntax- oder Sprachkonstrukte! module moda { requires modb; exports pkg1; opens pkg2; } moda/module-info.java 11

12 Ein Module als First-Class-Citizen in Java Module := Menge von Java-Packages & Resources read -Abhängigkeitsbeziehungen zu anderen Modulen modb read moda exports : Welche Packages des Modules werden exportiert? (Default: nichts!) pkgb inter nal pkg b exports pkga 12

13 Base Pattern Manage Relationships 13 Pattern Komponenten = wiederverwendbare Software- Bausteine Wohldefinierte Schnittstellen Eingehende Schnittstellen Ausgehende Schnittstellen Der Grad der Abhängigkeiten bestimmt die Komplexität einer Anwendung maßgeblich. mit Jigsaw Module-Deskriptor Module-Name Abhängigkeiten Zugriffsschutz Keine weiteren Syntax- oder Sprachkonstrukte!

14 Base Pattern Manage Relationships Pattern Komponenten = wiederverwendbare Software- Bausteine Wohldefinierte Schnittstellen Eingehende Schnittstellen Ausgehende Schnittstellen Der Grad der Abhängigkeiten bestimmt die Komplexität einer Anwendung maßgeblich. mit Jigsaw Komponente als Module Beziehungen Keine Scopes (wie in Maven) Statische Bindung über Namen Dynamische Bindung zur Startzeit Nutzung Statische Aufrufe Dynamisch per Reflection 14

15 Manage Relationships Explizite Abhängigkeiten Ein Module kann ein anderes Module nur benutzen, wenn es eine read -Beziehung zu ihm hat (aka: requires ). modb modc read moda module moda { // read auf modb requires modb; } 15 Das Module moda hat eine read-beziehung zu Module modb, jedoch keine zu modc moda kann nur auf modb zugreifen.

16 Base Pattern Manage Relationships Vertiefte Konzepte Optionale Abhängigkeiten? Transitive Abhängigkeiten? Ja! Ja! mit Jigsaw Versionierung? Gruppierungen? Hierarchien? Remote oder lokal? Checks zu Compile-Time? Checks zu Start/Runtime? Nein (nur informell)! Nicht einfach*! Nicht einfach*! Nur lokal, keine Verteilung! Ja! Ja! *) Zumindest nicht wie in Maven mit group-id. Nicht-triviale Lösungen über Aggregrator-Modules und ModuleLayer. 16

17 Jigsaw-Module-Graphen z.b. mit DepVis java9-jigsaw-depvis Basiert auf GraphViz mit Java-API 17

18 Dependency Pattern Acyclic Relationships Module relationships must be acyclic 18

19 19

20 Dependency Pattern Acyclic Relationships Pattern azyklische Komponenten- Abhängigkeiten! Unterscheide: Zyklen zur Compile-Zeit Zyklen zur Laufzeit z.b. durch Aufruf per Reflection Auflösung von Zyklen Auslagern von Funktionalität Callback Nachteile von Zyklen Die Komponenten eines Zyklus bilden de facto eine einzige große Komponente. Hohe Koppelung zwischen den betroffenen Komponenten Eine Änderung an einer Komponente hat i.d.r. Auswirkungen auf alle anderen Komponenten des Zyklus. 20

21 Acyclic Relationships Jigsaw verbietet read-zyklen Statische read -Zyklen sind in Jigsaw verboten Compile-Fehler * Jigsaw erlaubt jedoch Zyklen zur Laufzeit (durch reflektive Aufrufe). read * Vorsicht: Compiler-Bug in findet nicht alle Zyklen! modb read moda modb\module-info.java:2: error: cyclic dependence involving moda requires moda; ^ 1 error 21

22 Dependency Pattern Acyclic Relationships Pattern azyklische Komponenten- Abhängigkeiten Unterscheide: Zyklen zur Compile-Zeit Zyklen zur Laufzeit z.b. durch Aufruf per Reflection Auflösung von Zyklen Auslagern von Funktionalität Callback mit Jigsaw Statische Zyklen mit requires in Modulen nicht erlaubt. Sie führen zu Compilerfehlern * Dynamische Zyklen zur Laufzeit (per Reflection) möglich * Vorsicht: Compiler-Bug in findet nicht alle Zyklen! 22

23 Usability Pattern Published Interface Make a module s published interface well known 23

24 Usability Pattern Published Interface Pattern Komponente definiert ihre öffentliche Schnittstelle. Nutzer verwenden die Komponente nur über diese Schnittstelle. Von außen ist kein Zugriff auf die Implementierung möglich. 24

25 Usability Pattern Published Interface Pattern Komponente definiert ihre öffentliche Schnittstelle. Nutzer verwenden die Komponente nur über diese Schnittstelle. Vorteile Fördert explizite Definition von Komponenten-Grenzen Dokumentation Von außen ist kein Zugriff auf die Implementierung möglich. Änderung der gekapselten Implementierung hat keine Auswirkung auf Nutzer. 25

26 Usability Pattern Published Interface Pattern Komponente definiert ihre öffentliche Schnittstelle. Nutzer verwenden die Komponente nur über diese Schnittstelle. Von außen ist kein Zugriff auf die Implementierung möglich. Nachteile Höhere Komplexität durch Indirektion zum Erzeugen der Implementierung Instabile Schnittstellen Abwärtskompatibilitätsfalle Law of Leaky Abstraction: All non-trivial abstractions, to some degree, are leaky. (Joel Spolsky) 26

27 Usability Pattern Published Interface Pattern Komponente definiert ihre öffentliche Schnittstelle. Nutzer verwenden die Komponente nur über diese Schnittstelle. Von außen ist kein Zugriff auf die Implementierung möglich. Abgrenzungen Manche Komponenten haben keine echte Schnittstelle, z.b. Datentypen-Komponenten. Reflektiver Zugriff durch Frameworks auch auf gekapselte Implementierung sinnvoll Vollständige Implementierung austauschen? Pattern Separate Abstractions 27

28 Was gehört zur Schnittstelle einer Komponente? Interfaces Factories zum Erzeugen der Implementierung Datentypen Exceptions public interface MyInterface { public MyData mymethod (String param) throws MyException; } 28

29 Published Interface exports von Packages modb read module modb { exports pkg.myapi; } pkg. myapi pkg. myimpl exports moda 29 Nur exportierte Packages eines Modules sind von außen zugreifbar. Per Default nichts exportiert. Export nur auf Package-Ebene möglich! Keine Wildcards möglich! Gerichteter Export an ein / mehrere Module mit exports to

30 Published Interface exports von Packages modb read module modb { exports pkg.myapi; } pkg. myapi pkg. myimpl exports moda 30 Checks zu Compile-Zeit und zur Laufzeit: 1. neu: Readability (read) 2. neu: Accessibility (exports) 3. Sichtbarkeitsmodifier public, private, protected, <pkg> Gilt alles auch für System-Module (wie java.base)

31 Published Interface exports von Packages module modb { exports pkg.myapi; } modb pkg. myapi pkg. myimpl read exports moda Varianten zur Umsetzung des Patterns: API- und Implementierungsklassen in verschiedene Packages legen Oder Implementierung zur API dazulegen als package-sichtbar. 31

32 Published Interface Typensichtbarkeit public class Factory { public MyInterface create() { return new MyImpl(); } public class Caller { MyInterface myint = new MyFactory().create(); pkg. myapi modb My Fact ory MyIn ter face read exports moda pkga Call er Instanzen von MyImpl behalten ihren Typ auch über Modulegrenze hinaus, obwohl dessen Package nicht exportiert ist. pkg. myimpl My Impl 32

33 Published Interface opens von Packages exports erlaubt statische Zugriffe. opens öffnet für Deep Reflection mit setaccessible(true) Compile-Zeit Reflection (Shallow) Reflection (Deep) exports pkg erlaubt erlaubt nicht erlaubt opens pkg nicht erlaubt erlaubt erlaubt exports pkg und opens pkg erlaubt erlaubt erlaubt 33

34 Usability Pattern Separate Abstractions Place abstractions and the classes that implement them in separate modules 34

35 Usability Pattern Separate Abstractions 35 Pattern Trenne Implementierung von API in verschiedene Komponenten API-Komponente hat keine Abhängigkeit zu der Implementierung. Auswahl/Konfiguration einer Implementierung erfolgt außerhalb API-Komponente. Factories nicht enthalten. Vorteile Implementierung kann komplett ausgetauscht werden, erlaubt späte Wahl (zur Laufzeit). Beispiel: Nachteile Datenbank-Treiber Weitere Indirektionen Mehr Aufwand Höhere Komplexität, Zusammenspiel schwerer nachvollziehbar

36 Usability Pattern Separate Abstractions - 3 Ebenen IService1 pkg.service IService2 36

37 Usability Pattern Separate Abstractions - 3 Ebenen IService1 IFoo pkg.service pkg.foobar IService2 IBar 37

38 Usability Pattern Separate Abstractions - 3 Ebenen api IService1 IFoo pkg.service pkg.foobar IService2 IBar 38

39 Usability Pattern Separate Abstractions - 3 Ebenen blue.impl Impl1 FooImpl pkg.service.blue pkg.foobar.blue Impl2 BarImpl 39

40 Usability Pattern Separate Abstractions - 3 Ebenen green.impl OtherImpl 1 FooImpl pkg.service.green OtherImpl 2 pkg.foobar.green BarImpl 40

41 Usability Pattern Separate Abstractions - 3 Ebenen red.impl RedImpl1 pkg.service.red RedImpl2 41

42 Usability Pattern Separate Abstractions - 3 Ebenen client factory 42

43 Usability Pattern Separate Abstractions - 3 Ebenen Auswahl der Implementierung als ganze Komponente client factory 43

44 Usability Pattern Separate Abstractions - 3 Ebenen Auswahl der Implementierung in Teilen (einmalig oder nach Bedarf) client factory 44

45 Separate Abstractions mit Jigsaw-Modules exports blue.impl read api read red.impl read green.impl 45

46 Separate Abstractions 1. Factory-Module client blue.impl api red.impl factory green.impl 46

47 Separate Abstractions 1. Factory-Module client blue.impl read api red.impl factory read read green.impl 47

48 Separate Abstractions 1. Factory-Module Factory muss Implementierungsklassen kennen! client blue.impl api exports to red.impl factory exports to exports to green.impl 48

49 Separate Abstractions 2. DI-Module Zugriff per Reflection mit opens z.b. für Spring-Fwk client blue.impl opens to DI- Framework api opens to opens to green.impl red.impl 49

50 Separate Abstractions Split-Package-Problem 50 Vorsicht: Modules müssen disjunkte Packages haben. Ein Split eines Package auf mehrere Modules ist nicht erlaubt! Gilt auch, wenn das Package nicht exportiert ist!! Selbst dann, wenn es keine Klassen-Duplikate in den Modules gibt!!! api exports read read read blue.impl green.impl red.impl

51 Separate Abstractions 3. Dynamische Bindung Schnittstelle java.sql.driver Implementierung in Module java.sql im MySQL-Driver module java.sql { // Definiert und exportiert // Schnittstelle uses java.sql.driver; exports java.sql; } module com.mysql.jdbc { requires java.sql; // Implementiert Schnittstelle } provides java.sql.driver with com.mysql.jdbc.driver; Dynamische Bindung beim Start über ServiceLoader, also keine statische Auflösung über Module-Namen wie bei requires! 51

52 Usability Pattern Separate Abstractions 52 Pattern Trenne Implementierung von API in verschiedene Komponenten API-Komponente hat keine Abhängigkeit zu der Implementierung. Auswahl/Konfiguration einer Implementierung erfolgt außerhalb API-Komponente. Factories nicht enthalten. mit Jigsaw Trennung in verschiedene Jigsaw-Module möglich Split-Package beachten! uses-provides für dynamische Bindung zur Startzeit per ServiceLoader Eigene Auswahl der Implementierung möglich

53 Usability Pattern Module Facade Facade as a coarse-grained entry point to another module s underlying implementation 53

54 Usability Pattern Module Facade Pattern Vgl. GOF-Patterns Facade, Adapter, Decorator Eine Komponente dient als zentrale Facade zu anderen Komponenten. Abhängigkeit idealerweise nur zur Facade nötig, nicht zu den dahinter liegenden Komponenten Vorteile Kapselt dahinterliegende Details an zentraler Stelle Kapselt Schnittstellen Höhere Lesbarkeit Einfachere Nutzung Erzwingt Reihenfolgen erlaubt automatische Vor- / Nach-Bearbeitung 54

55 Module Facade mit eigenen Facade-Modules In eigenen Facade-Modules kann man andere Module kapseln. 55

56 Module Facade Transitive Abhängigkeiten In eigenen Facade-Modules kann man andere Module kapseln. Jigsaw ermöglicht auch, Abhängigkeiten transitiv weiterzugeben. module modfacade { requires modx; requires transitive mody; } 56

57 Module Facade Transitive Abhängigkeiten 1-transitiv 2-transitiv 57

58 Usability Pattern Module Facade Pattern Vgl. GOF-Patterns Facade, Adapter, Decorator Eine Komponente dient als zentrale Facade zu anderen Komponenten. Abhängigkeit idealerweise nur zur Facade nötig, nicht zu den dahinter liegenden Komponenten mit Jigsaw requires transitive in module-info reicht Abhängigkeit automatisch weiter Ermöglicht leere Aggregator- Modules Ermöglicht nicht die Kapselung dahinter liegender APIs: Im Gegenteil werden diese ja durchgereicht! 58

59 Utility Pattern Test Module Each module should have a corresponding test module that validates it s behavior 59

60 Utility Pattern Test Module Pattern Zu jeder Komponente eine korrespondierende Testkomponente erstellen. Blackbox-Test testet nur die öffentlichen Schnittstelle. Die Testkomponente hängt nicht von weiteren Komponenten ab (Mocking). Separate Integrationstestkomponenten erstellen Vorteile Komponenten sind unabhängig voneinander testbar, Fehler leichter lokalisierbar Dokumentation der Nutzung der Schnittstelle Nachteile Hoher Aufwand durch Mocks 60

61 Test Module Blackbox-Tests Blackbox-Tests werden in separates Jigsaw-Module ausgelagert. Dieses Testmodule benötigt keinen Zugriff auf interne Klassen. pkga exports moda pkga internal read pkg black test moda. test. black 61

62 Test Module Whitebox-Tests Whitebox-Test testet interne Klassen von moda aus pkgainternal. Verschiedene Varianten denkbar, z.b. Test-Module & exports to Besser: Testcode getrennt ablegen und für Compile der Tests und für Testdurchführung in das Module reinpatchen. pkga exports moda pkga internal pkga internal Test 62

63 Utility Pattern Test Module Pattern Zu jeder Komponente eine korrespondierende Testkomponente erstellen. Blackbox-Test testet nur die öffentlichen Schnittstelle. Die Testkomponente hängt nicht von weiteren Komponenten ab (Mocking). Separate Integrationstestkomponenten erstellen mit Jigsaw Blackbox als eigenes Test- Module gegen öffentliche API, Abhängigkeiten per Mocks Whitebox: Testcode auslagern und reinpatchen Integrationstests gegen öffentliche API ohne Mocks 63

64 Dependency Patterns Levelize Modules Physical Layers Levelized Build 64 Module relationships should be levelized Module relationships should not violate the conceptual layers Execute the build in accordance with module levelization

65 Komponenten sortieren sich in Schichten/Säulen ein. Säule 1 Säule 2 Säule 3 Schicht Präsentation Component Component Component Component Schicht Anwendungskern Component Component Component Component Schicht Persistenz Component Component Component Component 65

66 Jigsaw-Modules als gerichteter Graph 66 mit Jigsaw Jigsaw erstellt einen Abhängigkeitsgraph: Modellierung der Abhängigkeiten mit requires Keine zyklischen Abhängigkeiten Dieser Graph sollte auch die Schichten und Säulen abbilden. Eine Unterstützung durch Jigsaw gibt es dafür nicht.

67 Jigsaw-Modules als gerichteter Graph im Build mit Jigsaw Den Module-Graph sollte auch Build/Deployment/Test berücksichtigen. Die Graph-Abbildung unterstützt bereits Maven / Gradle (Modellierung von Abhängigkeiten; keine Zyklen erlaubt). Nur Teil-Build/DeploymentTest notwendig bei Änderungen von Modulen der unteren Stufen. 67

68 Module-Layer für Laufzeitgruppierung mit Jigsaw Jigsaw erlaubt Laufzeit-Gruppierung mit Module-Layer. Layer funktioniert ähnlich wie ein Container. Per Default: Alles im Boot-Layer Keine gute Unterstützung für Schichten/Säulen (Calls nur per Reflection über Layergrenzen) 68

69 Module-Layer für Laufzeitgruppierung mit Jigsaw Umgeht aber andere Einschränkungen Kein Split-Package bei Geschwister-Layern Module in verschiedenen Versionen nutzbar, wenn mit CL / Layer getrennt Komplexes Zusammenspiel von Configuration, Classloader, Layer 69

70 Wo gibt es Dokumentation? 70

71 Jigsaw-Dokumentation zum Nachlesen 71 Homepage Project Jigsaw OpenJDK: JDK 9 Oracle: JDK 9 Documentation Jigsaw-Issues Specification (2015) State of the Module System (2016) Quickstart Guide JSR376 JEPs The modular JDK 261 Module System 220 Modular Runtime Images 275 Modular Java App. Packaging 260 Encapsulate Most Internal APIs 282 jlink: The Java Linker Mailinglisten jigsaw-dev, jdk9-dev, jpms-spec-comments, jpms-spec-experts, jpms-spec-observers

72

73 heise/ix Sonderheft Java 2017 JavaSPEKTRUM- Sonderdruck Als PDF-Download bei 73 Accso Accelerated Solutions GmbH T E Berliner Allee 58 Moltkestraße 131a Balanstraße Darmstadt Köln München

74 Github Beispiele 74

75 Unsere Jigsaw-Beispiele stehen auf Github Läuft mit Java Release-Build b181 und 9.0.1, und JDK 10 Bash-Skripte für Compile, Run, Test (in Windows z.b. mit Babun nutzbar) Projektstrukturen für Eclipse Oxygen.3 Unsere 32 Beispiele zeigen alles Wissenswerte zu Jigsaw zu Requires, Exports, Exports-To, Requires-Static, Requires-Transitive, Blackbox-Test, Whitebox-Test, Uses, Provides, Maven-Integration, Opens, Open Module, Manifest-Optionen, versteckte Main-Klasse, Automatic Modules, Reflection, Resolved Modules (Configuration), Naming von Modulen, Unnamed Module (Classpath), Layer, Javadoc, Annotations, jlink etc. pp. usw. usf. 75

76 76

77 77

78 78

79 @mrtnlhmnn Accso Accelerated Solutions GmbH T E Berliner Allee 58 Moltkestraße 131a Balanstraße Darmstadt Köln München

3.5 Arten von Modulen

3.5 Arten von Modulen D3kjd3Di38lk323nnm 78 3 Das Java-Modulsystem Modulübergreifender Ressourcenzugriff Das Paket, in welchem die Ressource liegt, die für andere Module zugreifbar sein soll, mit opens nach außen öffnen und

Mehr

Java 9: Endlich Jigsaw! Salem Ben Nasr, DOAG

Java 9: Endlich Jigsaw! Salem Ben Nasr, DOAG Java 9: Endlich Jigsaw! Salem Ben Nasr, DOAG 2017 22.11.2017 Facts & Figures Technologie-orientiert Branchen-unabhängig Hauptsitz Ratingen 240 Beschäftigte Inhabergeführt 24 Mio. Euro Umsatz Gründung 1994

Mehr

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi Projektgruppe Thomas Kühne Komponentenbasiertes Software Engineering mit OSGi Anforderungen der PG IDSE an ein Komponenten- Client Nativer Client Web Client Alternativen IDSE Nutzer Szenario Pipe IDSE

Mehr

Modulare Webanwendungen mit Java Theorie und Praxis. Jan Paul Buchwald 18. Java Forum Stuttgart,

Modulare Webanwendungen mit Java Theorie und Praxis. Jan Paul Buchwald 18. Java Forum Stuttgart, Modulare Webanwendungen mit Java Theorie und Praxis Jan Paul Buchwald 18. Java Forum Stuttgart, 09.07.2015 Agenda Modularisierung" Motivation" Vor- und Nachteile" Definition Modul Theorie Module im Java

Mehr

Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern andreas.moesching@rtc.ch

Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern andreas.moesching@rtc.ch Eclipse Runtime (OSGi) als Plattform eines Swing Rich Client Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern andreas.moesching@rtc.ch Zu meiner Person

Mehr

Das neue Modulsystem Jigsaw in Java 9 Einführung Migration Laufzeit.

Das neue Modulsystem Jigsaw in Java 9 Einführung Migration Laufzeit. Das neue Modulsystem Jigsaw in Java 9 Einführung Migration Laufzeit www.javaspektrum.de VORWORT Java ist seit vielen Jahren eine der wichtigsten Programmiersprachen und Plattformen und daher eine Kerntechnologie

Mehr

Build Management Tool?

Build Management Tool? Build Management Tool? Funktionen Dependency Management Kompiliert den Sourcecode in Binaries Führt automatisierte Tests aus Installiert Software oder Lädt sie in Repositories Erstellt eine Dokumentation

Mehr

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

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Eclipse Equinox als Basis für Smart Client Anwendungen Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Übersicht Definition / Architektur Smart Client Smart Client mit RCP / Equinox Gesamtfazit

Mehr

Herzlich willkommen zum DevDay Neuerungen der Java SE 9. Dominic A. Merz Fachbereichsleiter Java, Web und Mobile Technologies

Herzlich willkommen zum DevDay Neuerungen der Java SE 9. Dominic A. Merz Fachbereichsleiter Java, Web und Mobile Technologies Herzlich willkommen zum DevDay 2017 Neuerungen der Java SE 9 Dominic A. Merz Fachbereichsleiter Java, Web und Mobile Technologies Agenda n Einführung des Module System n Anpassung der Sprache n Erweiterung

Mehr

Build Management Tool?

Build Management Tool? Build Management Tool? Funktionen Dependency Management Kompiliert den Sourcecode in Binaries Führt automatisierte Tests aus Installiert Software oder Lädt sie in Repositories Erstellt eine Dokumentation

Mehr

Build Management Tool

Build Management Tool Build Management Tool Build-Prozess? Source Code 3rd Party libraries Veröffentlichung Download all 3rd Party libs by hand Compile your sources: javac -sourcepath./src1;./src2 Byte Code -cp lib1.jar;lib2.jar

Mehr

Modulare Anwendungen und die Lookup API. Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team

Modulare Anwendungen und die Lookup API. Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team Modulare Anwendungen und die Lookup API Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team Die Notwendigkeit modularer Anwendungen Die Notwendigkeit modularer

Mehr

Umstieg auf OSGi - aber wie? Martin Lippert & Matthias Lübken akquinet it-agile

Umstieg auf OSGi - aber wie? Martin Lippert & Matthias Lübken akquinet it-agile Umstieg auf OSGi - aber wie? Martin Lippert & Matthias Lübken akquinet it-agile OSGi The dynamic module system for Java Bundles Exports Imports Dependencies Services Declarative Services Versionen Dynamic

Mehr

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire Integration von Web Services in J EE Anwendungen mit XFire 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire univativ : = Umsetzung durch Studenten und Young Professionals.

Mehr

H.1 FORMI: An RMI Extension for Adaptive Applications H.1 FORMI: An RMI Extension for Adaptive Applications

H.1 FORMI: An RMI Extension for Adaptive Applications H.1 FORMI: An RMI Extension for Adaptive Applications Motivation The ed-object Approach Java RMI ed Objects in Java RMI Conclusions Universität Erlangen-Nürnberg Informatik 4, 2007 H-Formi-.fm 2007-12-14 13.11 H.1 1 Motivation Distributed object-oriented

Mehr

NetBeans Rich Client Platform. Anton Epple Göttingen, Source Talk Tage

NetBeans Rich Client Platform. Anton Epple Göttingen, Source Talk Tage NetBeans RCP Anton Epple Göttingen, 25.9.2008 Source Talk Tage Was ist eine Rich Client Platform? Framework zur Entwicklung von Desktop Applikationen Besteht aus: Anwendungslaufzeitumgebung ~ Vergleichbar

Mehr

Erzeugungsmuster. Kapselung der Objekt-Erzeugung

Erzeugungsmuster. Kapselung der Objekt-Erzeugung Erzeugungsmuster Kapselung der Objekt-Erzeugung Definition Erzeugungsmuster dienen für die Lose Koppelung, bei der erst zur Laufzeit der Typ des zu erzeugenden Objekts festgelegt wird. Abstract Factory

Mehr

Spring und Eclipse Equinox kombiniert. Martin Lippert (it-agile GmbH) Gerd Wütherich (comdirect bank AG)

Spring und Eclipse Equinox kombiniert. Martin Lippert (it-agile GmbH) Gerd Wütherich (comdirect bank AG) Spring und Eclipse Equinox kombiniert Martin Lippert (it-agile GmbH) Gerd Wütherich (comdirect bank AG) Inhalt Eclipse Equinox Server-Side Eclipse Spring und Eclipse Equinox Beispiele Fazit 1 Eclipse everywhere

Mehr

Verbesserung der Architektur der DPP- Software Saros (Vortrag 2) Slawa Belousow Institut für Informatik FU Berlin

Verbesserung der Architektur der DPP- Software Saros (Vortrag 2) Slawa Belousow Institut für Informatik FU Berlin Verbesserung der Architektur der DPP- Software Saros (Vortrag 2) Slawa Belousow Institut für Informatik FU Berlin 03.02.2011 Inhalt der Präsentation 1.Arbeit und Vortrag 1 2.Aktuelle Saros-Architektur

Mehr

EIN GEDULDSSPIEL! DAS 1000-MODULE- PUZZLE FÜR ENTWICKLER.

EIN GEDULDSSPIEL! DAS 1000-MODULE- PUZZLE FÜR ENTWICKLER. EIN GEDULDSSPIEL! DAS 1000-MODULE- PUZZLE FÜR ENTWICKLER. DAS NEUE MODULSYSTEM JIGSAW IN JAVA 9 17. FEBRUAR 2017 DR. RÜDIGER GRAMMES, MARTIN LEHMANN, DR. KRISTINE SCHAAL FRANKFURTER ENTWICKLERTAG 1 2 Abstract

Mehr

Have fun with Java 9 Avision GmbH, Dr. Gernot Pfanner

Have fun with Java 9 Avision GmbH, Dr. Gernot Pfanner Have fun with Java 9 Feature - Übersicht Einführung eines neuen Modulsystems (Projekt Jigsaw ) Erstellung von benutzerspezifischen JRE s JShell Command Line Tool Neuer HTTP Client Verbesserter Zugriff

Mehr

SOLID für.net und JavaScript

SOLID für.net und JavaScript SOLID für.net und JavaScript www.binarygears.de Stefan Dirschnabel Twitter: @StefanDirschnab #dncgn SOFTWARE ENTWICKLUNG BERATUNG SCHULUNG 5 Prinzipien für das Design von Software Wartbarer Code Leicht

Mehr

Spring Dynamic Modules for OSGi Service Platforms

Spring Dynamic Modules for OSGi Service Platforms Gerd Wütherich freiberuflicher Softwarearchitekt Spring Dynamic Modules for OSGi Service Platforms Server Anwendungen mit Spring und Eclipse Equinox Agenda OSGi Technologie: OSGi Technologie im Überblick

Mehr

1 Motivation. 1 Motivation. Standard Middleware für objektorientierte Anwendungen. Motivation. Fragmentierte Objektmodel. Java RMI

1 Motivation. 1 Motivation. Standard Middleware für objektorientierte Anwendungen. Motivation. Fragmentierte Objektmodel. Java RMI 1 Motivation Motivation ierte Objektmodel Standard Middleware für objektorientierte Anwendungen CORBA,.NET-Remoting Java Remote Method Invocation (RMI) Java RMI ierte Objekte undjava RMI Zusammenfassung

Mehr

MSE/SWF - API Design. Arthur Zaczek. Feb 2015

MSE/SWF - API Design. Arthur Zaczek. Feb 2015 Arthur Zaczek Feb 2015 1 Einleitung Dieses Dokument ist eine Zusammenfassung des Buches Practical API Design: Confessions of a Java Framework Architect. [@Tulach2012] 1.1 Cluelessness Je einfacher eine

Mehr

Platform as a Service (PaaS) & Containerization

Platform as a Service (PaaS) & Containerization Platform as a Service (PaaS) & Containerization Open Source Roundtable Bundesverwaltung; Bern, 23. Juni 2016 André Kunz Chief Communications Officer Peter Mumenthaler Head of System Engineering 1. Puzzle

Mehr

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen Th Letschert FH Gießen-Friedberg Th. Letschert OOP 2 Sichtbarkeitsbeziehungen und Geheimnisprinzip Sichtbarkeitsbeziehungen realisieren

Mehr

Remote Method Invocation

Remote Method Invocation Remote Method Invocation Spezielle Technik aus dem Java-Umfeld Ausführung von Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VMs Aufruf

Mehr

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05. Creational Patterns Seminar Software-Entwurf WS 2004/05 Thomas Liro Inhaltsüberblick Einordnung des Themas Beschreibung von Design Pattern Auswahl von Design Patterns Was sind Creational

Mehr

Refactorings in großen Softwareprojekten

Refactorings in großen Softwareprojekten Refactorings in großen Softwareprojekten (C) 2004 Martin Lippert lippert@acm.org Stefan Roock stefan@stefanroock.de Was ist Refactoring? A change made to the internal structure of software to make it easier

Mehr

OOP. Tagesprogramm. Aspekte und Annotationen. Software-Entwurfsmuster. Factory-Method. Prototype

OOP. Tagesprogramm. Aspekte und Annotationen. Software-Entwurfsmuster. Factory-Method. Prototype 1 2017-01-11 Tagesprogramm Aspekte und Annotationen Software-Entwurfsmuster Factory-Method Prototype 2 2017-01-11 Aspekte und Annotationen Aspektorientierte Programmierung Paradigma der Modularisierung

Mehr

Softwarearchitektur mit dem Quasar- Architekturstil

Softwarearchitektur mit dem Quasar- Architekturstil Softwarearchitektur mit dem Quasar- Architekturstil Prof. Dr. U. Aßmann Technische Universität Dresden Institut für Software- und Multimediatechnik Lehrstuhl Softwaretechnologie http://www-st.inf.tu-dresden.de

Mehr

Informatik II Übung 7 Gruppe 7

Informatik II Übung 7 Gruppe 7 Informatik II Übung 7 Gruppe 7 Leyna Sadamori leyna.sadamori@inf.ethz.ch Informatik II Übung 7 Leyna Sadamori 10. April 2014 1 Administratives Nächste Übung fällt leider aus! Bitte eine andere Übung besuchen.

Mehr

Client-Architektur. in Angular. Philipp Burgmer

Client-Architektur. in Angular. Philipp Burgmer Client-Architektur in Angular Philipp Burgmer Über mich Philipp Burgmer Entwickler, Trainer, Speaker Web-Technologien TypeScript, Angular 1 Über uns W11K GmbH - The Web Engineers Gegründet 2000

Mehr

Einführung in Google Web Toolkit

Einführung in Google Web Toolkit Einführung in Google Web Toolkit Lars Pfannenschmidt Tobias Ullrich Software Freedom Day 2009 Lars Pfannenschmidt, Tobias Ullrich () Einführung in Google Web Toolkit Software Freedom Day 2009 1 / 24 Aus

Mehr

systems landscape engineering - übung -

systems landscape engineering - übung - systems landscape engineering - übung - Wintersemester 2010 /2011 Arbeitsgruppe Wirtschaftsinformatik - Managementinformationssysteme - Dipl. Wirt.-Inform. Sven Gerber Arbeitsgruppe Wirtschaftsinformatik

Mehr

Java 6 Core Techniken

Java 6 Core Techniken Java 6 Core Techniken Essentielle Techniken für Java-Apps von Prof. Dr. Friedrich Esser Oldenbourg Verlag München Vorwort XI 1 Java 6 Basics 1 1.1 Enumerationen 2 1.2 Import statischer Member 4 1.2.1 Das

Mehr

- dynamisches Laden -

- dynamisches Laden - - - Fachbereich Technik Department Elektrotechnik und Informatik 21. Juni 2012 1/23 2/23 s dynamisch Code kann von mehreren Programmen genutzt werden => kleinere Programme einzelne Teile eines Programms

Mehr

11. Komponenten Grundlagen der Programmierung 1 (Java)

11. Komponenten Grundlagen der Programmierung 1 (Java) 11. Komponenten Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Einordnung im Kontext der Vorlesung

Mehr

Enterprise JavaBeans Überblick

Enterprise JavaBeans Überblick Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 2. Einführung Java EE 5 Plattform 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5.

Mehr

PS Software Engineering WS 2018/19

PS Software Engineering WS 2018/19 PS Software Engineering WS 2018/19 Wöchentlich Dienstag 08:00-10:00 Start: 8:15 Termine: PLUSonline Homepage zum PS: Allgemeines www.softwareresearch.net Teaching Programmieren im Großen Die Entwicklung

Mehr

Das Interceptor Muster

Das Interceptor Muster Das Interceptor Muster Implementierung des Interceptor Musters basierend auf OSGi and Friends Benjamin Friedrich Hochschule für Technik und Wirtschaft des Saarlandes Praktische Informatik - Entwurfsmuster

Mehr

Info B VL 11: Innere Klassen/Collections

Info B VL 11: Innere Klassen/Collections Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections

Mehr

Modellierung CORBA-basierter Anwendungssysteme mit der UML

Modellierung CORBA-basierter Anwendungssysteme mit der UML Verteidigung der Diplomarbeit über das Thema: Modellierung CORBA-basierter Anwendungssysteme mit der UML Andreas Mucha Technische Universität Dresden Institut für Software- und Multimediatechnik Lehrstuhl

Mehr

Der agile Software Architekt

Der agile Software Architekt Der agile Software Architekt Ingmar Kellner 2013-09-25 Agil == Beweglich == Zur Handlung Fähig Source: http://de.wiktionary.org/wiki/agil Gegebene Versprechen schränken meine Agilität ein! 2013, hello2morrow

Mehr

Decorator Pattern. Analyse- und Design-Pattern CAS SWE FS14. Roland Müller Samuel Schärer

Decorator Pattern. Analyse- und Design-Pattern CAS SWE FS14. Roland Müller Samuel Schärer Decorator Pattern Analyse- und Design-Pattern CAS SWE FS14 Roland Müller Samuel Schärer Entwurfsmuster der «Gang of Four» Strukturmuster fassen Klassen und Objekte zu grösseren Strukturen zusammen Adapter

Mehr

OSGi-basierte Webapplikationen Ein Erfahrungsbericht

OSGi-basierte Webapplikationen Ein Erfahrungsbericht OSGi-basierte Webapplikationen Ein Erfahrungsbericht Zürich, 18. März 2009 Pascal Nüesch, Software Engineer 1 www.namics.com Zu meiner Person» Lehre als Elektroniker mit Schwerpunkt SW-Entwicklung» Java

Mehr

Anwendungsentwicklung mit Spring

Anwendungsentwicklung mit Spring Anwendungsentwicklung mit Spring Eberhard Wolff Managing Director Interface21 GmbH Interface21 - Spring from the Source Interface21 Produkte u.a. Spring Framework Spring from the Source Consulting, Training,

Mehr

Praktikum. SEP: Java-Programmierung WS 2018/19. Modularisierung. Thomas Lemberger und Martin Spießl

Praktikum. SEP: Java-Programmierung WS 2018/19. Modularisierung. Thomas Lemberger und Martin Spießl Praktikum SEP: Java-Programmierung WS 2018/19 Modularisierung Thomas Lemberger und Martin Spießl Basierend auf Folien von Matthias Dangl und Karlheinz Friedberger 1 / 10 Modularisierung Module gliedern

Mehr

NotesSession.GetPropertyBroker( )

NotesSession.GetPropertyBroker( ) Bestandteile von CA Laufen im Rich Client (Notes oder Expeditor) oder via Portal Server im Browser NSF-Komponenten sind Notes-Designelemente Eclipse Komponenten sind Eclipse ViewParts lokale oder Websphere

Mehr

Java für C++ Programmierer

Java für C++ Programmierer Java für C++ Programmierer Alexander Bernauer bernauer@inf.ethz.ch Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?

Mehr

Ant + Ivy Building with dependencies

Ant + Ivy Building with dependencies Ant + Ivy Building with dependencies Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Björn Feustel Version: 1.0 www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software Factory

Mehr

Head First Design Patterns. FALLBEISPIEL: SimUDuck

Head First Design Patterns. FALLBEISPIEL: SimUDuck Head First Design Patterns FALLBEISPIEL: SimUDuck 1 SimUDuck Fallbeispiel aus Head First Design Patterns [1] SimUDuck: Simulationsspiel wo verschiedenen Entenarten (Stockente, Rotschopfente, Schnatterente

Mehr

Continuous Integration mit GitLab CI Christine Koppelt Open-Source-Treffen, 26. Januar 2018

Continuous Integration mit GitLab CI Christine Koppelt Open-Source-Treffen, 26. Januar 2018 Continuous Integration mit GitLab CI Christine Koppelt christine.koppelt@gmail.com Open-Source-Treffen, 26. Januar 2018 Continuous Integration Softwareentwicklung & Deployment Aufgaben eines Continuous

Mehr

Entwicklung von effizienten UI-basierten Akzeptanztests für Webanwendungen

Entwicklung von effizienten UI-basierten Akzeptanztests für Webanwendungen Entwicklung von effizienten UI-basierten Akzeptanztests für Webanwendungen Präsentation bei den Stuttgarter Testtagen 21.März 2013 NovaTec - Ingenieure für neue Informationstechnologien GmbH Leinfelden-Echterdingen,

Mehr

Komponentenbasierte Softwareentwicklung

Komponentenbasierte Softwareentwicklung Seminar WS04 Komponentenbasierte Softwareentwicklung Karl Pauls Software-Komponente A software component is a unit of composition with contractually specified interfaces and explicit context dependencies

Mehr

Software build (-erstellung), deployment(-verteilung) und execution(-ausführung)

Software build (-erstellung), deployment(-verteilung) und execution(-ausführung) Software build (-erstellung), deployment(-verteilung) und execution(-ausführung) (in eingebetteten Systemen) Inputvortrag Nebenläufige Systeme am 1.11.18 Georg Ringwelski Was machen Sie beim Entwickeln

Mehr

APEX OOS TOOLS & HELFER

APEX OOS TOOLS & HELFER APEX OOS TOOLS & HELFER About me Oracle > 8 Jahre APEX > 8 Jahre Freelancer seit 2016 Vorher APEX Entwickler im Versicherungsumfeld aktiver Open Source Entwickler auf Github Mit-Entwickler von apex.world!

Mehr

Entwurfsmuster (Design Patterns)

Entwurfsmuster (Design Patterns) Entwurfsmuster (Design Patterns) SEP 303 Entwurfsmuster (Design Patterns) In der alltäglichen Programmierarbeit tauchen viele Probleme auf, die man schon einmal gelöst hat und die man in der Zukunft wieder

Mehr

Informatik II Übung 1

Informatik II Übung 1 Informatik II Übung 1 Gruppe 2 Carina Fuss cfuss@student.ethz.ch 28.2.2018 Carina Fuss 28.2.2017 1 Administratives ab nächstem Mal: Beginn um 13:00! Fragen aus der Vorlesung, Praktisches, Nachbesprechung

Mehr

Enterprise JavaBeans Überblick

Enterprise JavaBeans Überblick Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5. Java Persistence: Entity Manager 6.

Mehr

JUnit 5 Die Plattform. Johannes Link

JUnit 5 Die Plattform. Johannes Link JUnit 5 Die Plattform Johannes Link @johanneslink johanneslink.net Softwaretherapeut "In Deutschland ist die Bezeichnung Therapeut allein oder ergänzt mit bestimmten Begriffen gesetzlich nicht geschützt

Mehr

OSGi: Anwendungsszenarien, Auswahlkriterien und Ausblick

OSGi: Anwendungsszenarien, Auswahlkriterien und Ausblick OSGi: Anwendungsszenarien, Auswahlkriterien und Ausblick Thementag OSGi 03.11.2009 Autor: Christoph Schmidt-Casdorff Agenda Wo wird OSGi derzeit eingesetzt? Grundsätzliche Anwendungsszenarien OSGi Status

Mehr

Spring & OSGi: Plattform der Zukunft. Bernd Kolb (Kolbware) Martin Lippert (akquinet agile GmbH) Gerd Wütherich (comdirect bank AG)

Spring & OSGi: Plattform der Zukunft. Bernd Kolb (Kolbware) Martin Lippert (akquinet agile GmbH) Gerd Wütherich (comdirect bank AG) Spring & OSGi: Plattform der Zukunft Bernd Kolb (Kolbware) Martin Lippert (akquinet agile GmbH) Gerd Wütherich (comdirect bank AG) 0 Inhalt Warum Spring & OSGi? Die Grundidee Der Stand der Dinge Ein praktisches

Mehr

Design Patterns. (Software-Architektur) Prof. Dr. Oliver Braun. Letzte Änderung: :12. Design Patterns 1/26

Design Patterns. (Software-Architektur) Prof. Dr. Oliver Braun. Letzte Änderung: :12. Design Patterns 1/26 Design Patterns (Software-Architektur) Prof. Dr. Oliver Braun Letzte Änderung: 11.07.2017 15:12 Design Patterns 1/26 Standardwerk Gang of Four: Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides:

Mehr

Maven 2 Softwareprojekte mit Kultur

Maven 2 Softwareprojekte mit Kultur Maven 2 Softwareprojekte mit Kultur Patrick Zeising 28.05.2010 Motivation Projekte unterscheiden sich stark im Aufbau Abläufe beim Übersetzen und Deployen unterscheiden sich stark

Mehr

Kurzanleitung Eclipse

Kurzanleitung Eclipse Autor: Prof. Dr. Bernhard Humm, FB Informatik, FH Darmstadt Datum: 30. November 2005 1 Starten Für das Praktikum verwenden wir Eclipse Version 3.1 und JDK 1.5 Starten Eclipse: Doppelklick auf das Icon

Mehr

Entwurfsprinzip. Entwurfsprinzip

Entwurfsprinzip. Entwurfsprinzip Die Komposition (hat ein Beziehung) ist der Vererbung (ist ein Beziehung) vorzuziehen. Es können Familien von Algorithmen in eigenen Klassensätzen gekapselt werden. Das Verhalten lässt sich zu Laufzeit

Mehr

const Zwei Schlüsselwörter bei der Deklaration von Variablen und Member-Funktionen haben wir noch nicht behandelt: const und static.

const Zwei Schlüsselwörter bei der Deklaration von Variablen und Member-Funktionen haben wir noch nicht behandelt: const und static. const Zwei Schlüsselwörter bei der Deklaration von Variablen und Member-Funktionen haben wir noch nicht behandelt: const und static. Eine const Variable kann ihren Wert nicht ändern: const double pi =

Mehr

Komponentenbasierter

Komponentenbasierter Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert Inhalt Motivation Demonstration des Taschenrechners Grobarchitektur Implementierung des Clients Implementierung der Komponenten

Mehr

Software-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere)

Software-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere) 2014-01-08 Software-Entwurfsmuster (weitere) 1 185.A01 OOP Software-Entwurfsmuster (weitere) 2014-01-08 Software-Entwurfsmuster (weitere) 2 OOP Vererbung versus Delegation class A { public void x() { z();

Mehr

APEX DESKTOP APPS. Interaktion mit dem Client System

APEX DESKTOP APPS. Interaktion mit dem Client System APEX DESKTOP APPS Interaktion mit dem Client System About me Oracle > 8 Jahre APEX > 8 Jahre Freelancer seit 2016 Vorher APEX Entwickler im Versicherungsumfeld aktiver Open Source Entwickler auf Github

Mehr

API-Gateway bringt Ordnung in Microservices-Wildwuchs. Frank Pientka, Dortmund

API-Gateway bringt Ordnung in Microservices-Wildwuchs. Frank Pientka, Dortmund API-Gateway bringt Ordnung in Microservices-Wildwuchs Frank Pientka, Dortmund Warum sind Verbindungen wichtig? 3 Agenda APIs regieren die Welt Schnittstellenprobleme Microservices und Qualitätsmerkmale

Mehr

Das Interface-Konzept am Beispiel der Sprache Java

Das Interface-Konzept am Beispiel der Sprache Java Das Interface-Konzept am Beispiel der Sprache Java Klaus Kusche, November 2013 Inhalt Motivation: Wozu braucht man Interfaces? Interfaces in Java Was spricht gegen die große Lösung? Voraussetzungen Kenntnisse

Mehr

Interface. So werden Interfaces gemacht

Interface. So werden Interfaces gemacht Design Ein Interface (=Schnittstelle / Definition) beschreibt, welche Funktionalität eine Implementation nach Aussen anzubieten hat. Die dahinter liegende Algorithmik wird aber der Implementation überlassen.

Mehr

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

Java Tools JDK. IDEs.  Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation Java Tools JDK http://www.oracle.com/technetwork/java/javase/ Downloads IDEs Java SE 8 Java SE 8 Documentation Eclipse http://www.eclipse.org IntelliJ http://www.jetbrains.com/idea/ NetBeans https://netbeans.org/

Mehr

Architektur iterativ auf Basis von OSGi entwickeln

Architektur iterativ auf Basis von OSGi entwickeln Architektur iterativ auf Basis von OSGi entwickeln Ein Vortrag von Sven Jeppsson (syngenio AG) und Karsten Panier (Signal Iduna Gruppe) 1 Inhalt Motivation Architektur Architektur Evolution OSGi Refactoring

Mehr

Aufbau eines modernen Betriebssystems (Windows NT 5.0)

Aufbau eines modernen Betriebssystems (Windows NT 5.0) Aufbau eines modernen Betriebssystems (Windows NT 5.0) Moritz Mühlenthaler 14.6.2004 Proseminar KVBK Gliederung 1.Das Designproblem a) Überblick b) Design Goals c) Möglichkeiten der Strukturierung 2. Umsetzung

Mehr

Das Kommunikations-Problem Architekten, Entwickler und die Code-Basis Zusammenfassung

Das Kommunikations-Problem Architekten, Entwickler und die Code-Basis Zusammenfassung Das Kommunikations-Problem Architekten, Entwickler und die Code-Basis Zusammenfassung Miteinander, Nebeneinander, Durcheinander Kommunikation und Koordination in Softwareprojekten Kommunikation Übertragung

Mehr

Referat. Continuous Integration. mit Maven und Jenkins. Benjamin Keeser. Hochschule für angewandte Wissenschaften München FB 07 Informatik (Master)

Referat. Continuous Integration. mit Maven und Jenkins. Benjamin Keeser. Hochschule für angewandte Wissenschaften München FB 07 Informatik (Master) # Entwicklung verteilter Java Anwendungen # Referat Continuous Integration mit Maven und Jenkins Benjamin Keeser Hochschule für angewandte Wissenschaften München FB 07 Informatik (Master) 2 Ablauf... Continuous

Mehr

Mit dem Google-Web-Toolkit moderne Web-Anwendungen entwickeln

Mit dem Google-Web-Toolkit moderne Web-Anwendungen entwickeln Mit dem Google-Web-Toolkit moderne Web-Anwendungen entwickeln Ziel dieses Vortrags Ich möchte Sie davon überzeugen, dass das Google-Web-Toolkit (GWT) das aktuell beste Tool zur Erstellung von modernen

Mehr

Eberhard Wolff. Spring. Framework für die Java-Entwicklung. "BJ dpunkt.verlag

Eberhard Wolff. Spring. Framework für die Java-Entwicklung. BJ dpunkt.verlag Eberhard Wolff Spring Framework für die Java-Entwicklung "BJ dpunkt.verlag -^1 1 Einleitung 1 1.1 Warum Spring? 1 1.2 Was ist Spring? 1 1.3 Spring und Java EE 3 1.4 Woher kommt Spring? 4 1.5 Warum dieses

Mehr

FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen

FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen Sommersemester 2018 Michael Theis, Lehrbeauftragter 2 Servlet API Websockets JSF JAX-WS JAX-RS JMS JAXB JSON-P JEE Enterprise Application

Mehr

Dominik Helleberg inovex GmbH. Auf Augenhöhe mit Android Studio und Gradle

Dominik Helleberg inovex GmbH. Auf Augenhöhe mit Android Studio und Gradle Dominik Helleberg inovex GmbH Auf Augenhöhe mit Android Studio und Gradle Dominik Helleberg Mobile Development Android / Embedded Tools http://dominik-helleberg.de/+ The new Dream Team Gradle + Android

Mehr

Eclipse Rieh Client Platform

Eclipse Rieh Client Platform Heiko Sippel, Jens Bendisposto, Michael Jastram Eclipse Rieh Client Platform Entwicklung von erweiterbaren Anwendungen mit RCP ntwickier.press V E E.l E.2 E.3 E.4 Teil 1 1 1.1 1.2 1.3 1.4 1.5 2 2.1 2.2

Mehr

Zwischenbericht Diplomarbeit

Zwischenbericht Diplomarbeit Zwischenbericht Diplomarbeit Vergleichende Studie zu den Komponentenmodellen COM+, EJB und CCM Stefan Haubold (sh6@inf.tu-dresden.de) 1 Gliederung " Aufgabenstellung " COM+ " Enterprise JavaBeans (EJB)

Mehr

Build. Ship. Run. Docker. Namics.

Build. Ship. Run. Docker. Namics. Build. Ship. Run. Docker. ST. GALLEN, 16. JUNI 2016 SOFTWARE DELIVERY MIT DOCKER? Beat Helfenberger. Software Architect. André Schäfer. Senior Software Engineer. Agenda. ERSTENS ZWEITENS DRITTENS VIERTENS

Mehr

Sonargraph in 15 Minuten. Andreas Hoyer blog.hello2morrow.com

Sonargraph in 15 Minuten. Andreas Hoyer blog.hello2morrow.com Sonargraph in 15 Minuten Andreas Hoyer a.hoyer@hello2morrow.com blog.hello2morrow.com hello2morrow GmbH Gegründet 2005 Angesiedelt in Deutschland, USA und Kolumbien > 95% des Umsatzes Software Lizenzen,

Mehr

Artem Eger. Build-Systeme in java Maven & ANT

Artem Eger. Build-Systeme in java Maven & ANT Artem Eger Build-Systeme in java Maven & ANT Gliederung (1) Motivation und Überblick (2) Bauen mit Ant (3) Praxisbeispiel Ant (4) Bauen mit Maven (5) Praxisbeispiel Maven (6) Ausblick 2/31 (1) Motivation

Mehr

Frank Schlüter, Techniker Krankenkasse Gerd Wütherich, Freiberuflicher Softwarearchitekt. Enterprise OSGi im wahren Leben: ein Migrationsbericht

Frank Schlüter, Techniker Krankenkasse Gerd Wütherich, Freiberuflicher Softwarearchitekt. Enterprise OSGi im wahren Leben: ein Migrationsbericht Frank Schlüter, Techniker Krankenkasse Gerd Wütherich, Freiberuflicher Softwarearchitekt Enterprise OSGi im wahren Leben: ein Migrationsbericht Fahrplan Die Ausgangssituation Das Projekt TKeasy» 3 Schicht

Mehr

Thomas Schissler MVP Visual Studio ALM, artiso AG

Thomas Schissler MVP Visual Studio ALM, artiso AG Thomas Schissler MVP Visual Studio ALM, artiso AG Kurs-Übersicht Moderne Softwareentwicklung 01 Überblick Was macht moderne Software-Entwicklung aus? 02 Projektmanagement Wie funktioniert modernes Projektmanagement

Mehr

Programmieren I. Dokumentation mit javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik

Programmieren I. Dokumentation mit javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik Programmieren I Dokumentation mit javadoc Heusch 10.4 Ratz 4.1.1 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Automatische Dokumentation Java bietet standardmäßig das Dokumentationssystem

Mehr

Ausnahmebehandlung in Java

Ausnahmebehandlung in Java Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A { void foo() throws Help { if (helpneeded()) throw new Help();... try {... catch (Help e) {... catch (Exception

Mehr