Modularity-Patterns mit Java 9 / Jigsaw
|
|
- Liese Maus
- vor 5 Jahren
- Abrufe
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
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
MehrJava 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
MehrProjektgruppe. 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
MehrModulare 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
MehrAndreas 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
MehrDas 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
MehrBuild 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
MehrEclipse 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
MehrHerzlich 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
MehrBuild 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
MehrBuild 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
MehrModulare 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
MehrUmstieg 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
MehrIntegration 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.
MehrH.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
MehrNetBeans 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
MehrErzeugungsmuster. 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
MehrSpring 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
MehrVerbesserung 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
MehrEIN 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
MehrHave 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
MehrSOLID 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
MehrSpring 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
Mehr1 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
MehrMSE/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
MehrPlatform 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
MehrTh. 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
MehrRemote 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
MehrCreational 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
MehrRefactorings 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
MehrOOP. 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
MehrSoftwarearchitektur 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
MehrInformatik 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.
MehrClient-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
MehrEinfü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
Mehrsystems landscape engineering - übung -
systems landscape engineering - übung - Wintersemester 2010 /2011 Arbeitsgruppe Wirtschaftsinformatik - Managementinformationssysteme - Dipl. Wirt.-Inform. Sven Gerber Arbeitsgruppe Wirtschaftsinformatik
MehrJava 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 -
- - 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
Mehr11. 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
MehrEnterprise 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.
MehrPS 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
MehrDas 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
MehrInfo 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
MehrModellierung 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
MehrDer 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
MehrDecorator 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
MehrOSGi-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
MehrAnwendungsentwicklung 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,
MehrPraktikum. 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
MehrNotesSession.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
MehrJava 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?
MehrAnt + 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
MehrHead 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
MehrContinuous 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
MehrEntwicklung 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,
MehrKomponentenbasierte 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
MehrSoftware 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
MehrAPEX 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!
MehrEntwurfsmuster (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
MehrInformatik 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
MehrEnterprise 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.
MehrJUnit 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
MehrOSGi: 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
MehrSpring & 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
MehrDesign 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:
MehrMaven 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
MehrKurzanleitung 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
MehrEntwurfsprinzip. 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
Mehrconst 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 =
MehrKomponentenbasierter
Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert Inhalt Motivation Demonstration des Taschenrechners Grobarchitektur Implementierung des Clients Implementierung der Komponenten
MehrSoftware-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();
MehrAPEX 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
MehrAPI-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
MehrDas 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
MehrInterface. 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.
MehrJava 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/
MehrArchitektur 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
MehrAufbau 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
MehrDas 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
MehrReferat. 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
MehrMit 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
MehrEberhard 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
MehrFWP 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
MehrDominik 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
MehrEclipse 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
MehrZwischenbericht 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)
MehrBuild. 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
MehrSonargraph 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,
MehrArtem 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
MehrFrank 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
MehrThomas 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
MehrProgrammieren 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
MehrAusnahmebehandlung 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