How To Build A Computer System From Scratch



Similar documents
OUR COURSES 19 November All prices are per person in Swedish Krona. Solid Beans AB Kungsgatan Göteborg Sweden

Operations and Monitoring with Spring

Developing modular Java applications

What means extensibility?

GlassFish v3. Building an ex tensible modular Java EE application server. Jerome Dochez and Ludovic Champenois Sun Microsystems, Inc.

Kohsuke Kawaguchi Sun Microsystems, Inc. hk2.dev.java.net, glassfish.dev.java.net. Session ID

Rapid Application Development. and Application Generation Tools. Walter Knesel

Converting Java EE Applications into OSGi Applications

Understanding class paths in Java EE projects with Rational Application Developer Version 8.0

Aspect Weaving for OSGi. Martin Lippert (akquinet it-agile GmbH)

APAC WebLogic Suite Workshop Oracle Parcel Service Overview. Jeffrey West Application Grid Product Management

OSGi Technology for System and Network Architects DECEMBER 2013

CrownPeak Java Web Hosting. Version 0.20

OXAGILE RESUMES SUMMARY OF QUALIFICATIONS TECHNICAL SKILLS SENIOR JAVA SOFTWARE ENGINEER

Building a Modular Server Platform with OSGi. Dileepa Jayakody Software Engineer SSWSO2 Inc.

T-Mobile Umsetzung und Einsatz

Mind The Gap! Setting Up A Code Structure Building Bridges

Framework Adoption for Java Enterprise Application Development

FUSE-ESB4 An open-source OSGi based platform for EAI and SOA

JAVA/J2EE DEVELOPER RESUME

Open Text Social Media. Actual Status, Strategy and Roadmap

Architecture Rules Enforcement and Governance Using Aspects

WebSphere v5 Administration, Network Deployment Edition

Is Cloud relevant for SOA? Corsin Decurtins

Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces

Jenkins User Conference Herzelia, July #jenkinsconf. Testing a Large Support Matrix Using Jenkins. Amir Kibbar HP

Apache Sling A REST-based Web Application Framework Carsten Ziegeler cziegeler@apache.org ApacheCon NA 2014

Spring 3.1 to 3.2 in a Nutshell. Sam Brannen Senior Software Consultant

Learning GlassFish for Tomcat Users

SUBSYSTEMS IN THE WILD

Enterprise Applications

InfoSphere Master Data Management operational server v11.x OSGi best practices and troubleshooting guide

Maven 3 New Features. Stefan Scheidt Solution Architect OPITZ CONSULTING GmbH

Beyond the SOA/BPM frontiers Towards a complete open cooperative environment

Why IBM WebSphere Application Server V8.0?

This presentation will provide a brief introduction to Rational Application Developer V7.5.

JBS-102: Jboss Application Server Administration. Course Length: 4 days

Server-side OSGi with Apache Sling. Felix Meschberger Day Management AG 124

Cross Enterprise Services with OSGi

Agile Best Practices and Patterns for Success on an Agile Software development project.

Developing Service-Oriented Architecture Applications with OSGi

Oracle WebLogic Foundation of Oracle Fusion Middleware. Lawrence Manickam Toyork Systems Inc

The Oracle Fusion Development Platform

This presentation is for informational purposes only and may not be incorporated into a contract or agreement.

SAP NetWeaver Opens SAP ERP world. Amedeo Prodi SAP Italia

Rapid Server Side Java Development Using Spring Roo. Christian Tzolov Technical Lead, TTSD, TomTom BV 12/05/2010

SOA-14: Continuous Integration in SOA Projects Andreas Gies

Build management & Continuous integration. with Maven & Hudson

Java in Web 2.0. Alexis Roos Principal Field Technologist, CTO Office OEM SW Sales Sun Microsystems, Inc.

Eclipse Web Tools Platform. Naci Dai (Eteration), WTP JST Lead

zen Platform technical white paper

Search Engines Chapter 2 Architecture Felix Naumann

Please do not SUPER SIZE ME enterprise integration using the Camunda Fox Plattform Ralf Sigmund OPITZ CONSULTING

Wolkige Versprechungen - Freiraum mit Tuecken

TIn 1: Lecture 3: Lernziele. Lecture 3 The Belly of the Architect. Basic internal components of the Pointers and data storage in memory

MO. 28. NOV. 2005, 17:00 UHR

Welcome to Spring Forward September 26, 2006 Penn State Great Valley

Oracle im Open Source Kontext Abgrenzung GlassFish vs. JBoss und wozu noch WebLogic?

Experiences with Open-Source BPM/SOA-based Stack using Java EE Rok Povše, Matjaž B. Jurič

White Paper: Why Upgrade from WebSphere Application Server (WAS) v7 to v8.x?

<Insert Picture Here> Betting Big on JavaServer Faces: Components, Tools, and Tricks

Eclipse Scout. Eclipse Scout in the Banking Industry

Java EE 6 development with Eclipse, Netbeans, IntelliJ and GlassFish. Ludovic Champenois Oracle Corporation

Anforderungen an die plattformneutrale Entwicklung. geeigneter Entwicklungswerkzeuge

FDT for Mobile Devices

Reporting and JSF. Possibilities, solutions, challenges. Slide 1. Copyright 2009, Andy Bosch,

ebay : How is it a hit

Glassfish, JAVA EE, Servlets, JSP, EJB

G-Cloud Framework. Service Definition. Oracle Fusion Middleware Design and Implementation

A Guide to Migrating Enterprise Applications to Spring

OpenShift is FanPaaStic For Java EE. By Shekhar Gulati Promo Code JUDCON.IN

HPC Portal Development Platform with E-Business and HPC Portlets

Embedded Software Development and Test in 2011 using a mini- HIL approach

WEB APPLICATION DEVELOPMENT. UNIT I J2EE Platform 9

Programma corso di formazione J2EE

JBoss Enterprise Middleware. The foundation of your open source middleware reference architecture

White Paper: 1) Architecture Objectives: The primary objective of this architecture is to meet the. 2) Architecture Explanation

<Insert Picture Here> Building a Complex Web Application Using ADF and Siebel

JBoss JEE5 with EJB3.0 on NonStop. JAVA SIG, San Jose

Java (J2SE & J2EE) and Web Development Training Catalog

applications. JBoss Enterprise Application Platform

An introduction to creating JSF applications in Rational Application Developer Version 8.0

Developer s Guide. How to Develop a Communiqué Digital Asset Management Solution

Beginning POJOs. From Novice to Professional. Brian Sam-Bodden

Diese Liste wird präsentiert von. Netheweb.de

OSGi Technology for Developers DECEMBER 2013

Eclipse Open Healthcare Framework

HP SAP. Where Development, Test and Operations meet. Application Lifecycle Management

A Comparison of Open Source Application Development Frameworks for the Enterprise

Case Studies of Running the Platform. NetBeans UML Servlet JSP GlassFish EJB

How To Write A Web Framework In Java

MALAYSIAN PUBLIC SECTOR OPEN SOURCE SOFTWARE (OSS) PROGRAMME BENCHMARK/COMPARISON REPORT DOCUMENT MANAGEMENT SYSTEMS (NUXEO AND ALFRESCO)

Core J2EE Patterns, Frameworks and Micro Architectures

NetBeans IDE Field Guide

Service Oriented Architectures

AJAX SSL- Wizard Reference

SW5706 Application deployment problems

<Insert Picture Here> GlassFish v3 - A Taste of a Next Generation Application Server

Migrating Applications From IBM WebSphere to Apache Tomcat

OSGi Remote Management

Transcription:

c.dedek Orientation In Objects GmbH p.g.taboada pgt technology scouting GmbH Modularisierung vom Toolalptraum ins Architekturchaos in 60 Minuten Mit Java 7 und Jigsaw werden wir alle schon über die Plattform mit einem Modularisierungskonzept und passendem Build-Management versorgt. Bisher etablierte Konzepte und Vorgehensweisen zur Modularisierung wie OSGi und JEE werden hierdurch auf den Prüfstand gestellt. "Ist doch viel zu monolitisch", "wird doch nicht testbar"... Wo aber bleibt die Architektur bei all der Technologie in der Debatte? Wir geben Hinweise, wie man sich anständig durch das Chaos schlägt. Modularisierung...

Session Topics Modularization? Java & Modularization A word on tooling JSF Spring JPA 2.0 architecture?

As documentation produced by architects, typically drawings, plans and technical specifications, architecture defines the structure and/or behavior of a building or any other kind of system that is to be or has been constructed. Wikipedia 5 technologies ain t no architecture! 6

XML as meta language XML is fun XML is extensible XML is creativity 7 XML as meta language XML is extensible XML is fun Mit XML darf man kreativ sein XML is creativity 7

XML used in XMI 8 <xmi:xmi xmi:version="2.1" timestamp="sat May 27 19:48:23 CEST 2006" xmlns:uml="http://schema.omg.org/spec/uml/2.0" xmlns:xmi="http://schema.omg.org/spec/xmi/2.1"> <xmi:documentation xmi:exporter="magicdraw UML" xmi:exporterversion="11.0"/> <uml:model xmi:id="eee_1045467100313_135436_1" name="data" visibility="public"> <xmi:extension xmi:extender="magicdraw UML 11.0" xmi:extenderid="magicdraw UML 11.0"> <moduleextension ignoredinmodule="true"/> </xmi:extension> <ownedcomment xmi:type="uml:comment" xmi:id="_11_0_1_8b70279_1148722106536_123286_1" body="author:papick. Created:27.05.06 11:28. Title:. Comment:. " annotatedelement="eee_1045467100313_135436_1"/> <ownedmember xmi:type="uml:package" xmi:id="_11_0_1_8b70279_1148722111694_682770_2" name="com.clickandbuy" visibility="public"/> <ownedmember xmi:type="uml:component" xmi:id="_11_0_1_8b70279_1148722161245_471481_7" name="subsystem-core" visibility="public"> <realization xmi:type="uml:realization" xmi:id="_11_0_1_8b70279_1148722190807_781764_30" visibility="public" realizingclassifier="_11_0_1_8b70279_1148722190807_12161_28" supplier="_11_0_1_8b70279_1148722190807_12161_28" client="_11_0_1_8b70279_1148722161245_471481_7"/> <realization xmi:type="uml:realization" xmi:id="_11_0_1_8b70279_1148722395292_63694_157" visibility="public" realizingclassifier="_11_0_1_8b70279_1148722358809_513951_140" supplier="_11_0_1_8b70279_1148722358809_513951_140" client="_11_0_1_8b70279_1148722161245_471481_7"/> <realization xmi:type="uml:realization" xmi:id="_11_0_1_8b70279_1148733508912_898457_546" visibility="public" realizingclassifier="_11_0_1_8b70279_1148733508912_180621_544" supplier="_11_0_1_8b70279_1148733508912_180621_544" client="_11_0_1_8b70279_1148722161245_471481_7"/> <realization xmi:type="uml:realization" xmi:id="_11_0_1_8b70279_1148733540788_592306_586" visibility="public" realizingclassifier="_11_0_1_8b70279_1148733540788_228842_584" supplier="_11_0_1_8b70279_1148733540788_228842_584" client="_11_0_1_8b70279_1148722161245_471481_7"/> <nestedclassifier xmi:type="uml:interface" xmi:id="_11_0_1_8b70279_1148722190807_12161_28" name="publishedservice" visibility="public"/> <nestedclassifier xmi:type="uml:class" xmi:id="_11_0_1_8b70279_1148733508912_180621_544" visibility="public"/> <nestedclassifier xmi:type="uml:class" xmi:id="_11_0_1_8b70279_1148733540788_228842_584" name="dom" visibility="public"/> <interfacerealization xmi:type="uml:interfacerealization" xmi:id="_11_0_1_8b70279_1148722217446_942875_60" visibility="public" contract="_11_0_1_8b70279_1148722190807_12161_28" supplier="_11_0_1_8b70279_1148722190807_12161_28" client="_11_0_1_8b70279_1148722161245_471481_7"/> </ownedmember> <ownedmember xmi:type="uml:component" xmi:id="_11_0_1_8b70279_1148722264834_475474_73" name="subsystem-impl" visibility="public"> <interfacerealization xmi:type="uml:interfacerealization" xmi:id="_11_0_1_8b70279_1148733557612_907435_606" visibility="public" contract="_11_0_1_8b70279_1148722190807_12161_28" supplier="_11_0_1_8b70279_1148722190807_12161_28" client="_11_0_1_8b70279_1148722264834_475474_73"/> </ownedmember> <ownedmember xmi:type="uml:component" xmi:id="_11_0_1_8b70279_1148722312903_528399_94" visibility="public"/> <ownedmember xmi:type="uml:dependency" xmi:id="_11_0_1_8b70279_1148722312923_409077_96" visibility="public" supplier="_11_0_1_8b70279_1148722312903_528399_94" client="_11_0_1_8b70279_1148722264834_475474_73"/> <ownedmember xmi:type="uml:artifact" xmi:id="_11_0_1_8b70279_1148722358809_513951_140" visibility="public"/> <ownedmember xmi:type="uml:component" xmi:id="_11_0_1_8b70279_1148732049524_447560_277" name="subsystem-serviceexporter" visibility="public"> <realization xmi:type="uml:realization" xmi:id="_11_0_1_8b70279_1148736855494_61906_1426" visibility="public" realizingclassifier="_11_0_1_8b70279_1148736855494_900019_1424" supplier="_11_0_1_8b70279_1148736855494_900019_1424" client="_11_0_1_8b70279_1148732049524_447560_277"/> <realization xmi:type="uml:realization" xmi:id="_11_0_1_8b70279_1148736866450_127377_1447" visibility="public" realizingclassifier="_11_0_1_8b70279_1148736866440_37201_1445" supplier="_11_0_1_8b70279_1148736866440_37201_1445" client="_11_0_1_8b70279_1148732049524_447560_277"/> <nestedclassifier xmi:type="uml:class" xmi:id="_11_0_1_8b70279_1148736855494_900019_1424" name="dto" visibility="public"/> <nestedclassifier xmi:type="uml:interface" xmi:id="_11_0_1_8b70279_1148736866440_37201_1445" name="publishedremotedtoservice" visibility="public"/> <interfacerealization xmi:type="uml:interfacerealization" xmi:id="_11_0_1_8b70279_1148732140745_117398_312" visibility="public" contract="_11_0_1_8b70279_1148722190807_12161_28" supplier="_11_0_1_8b70279_1148722190807_12161_28" client="_11_0_1_8b70279_1148732049524_447560_277"/> XML used in XMI <interfacerealization xmi:type="uml:interfacerealization" xmi:id="_11_0_1_8b70279_1148732270101_889829_352" visibility="public" contract="_11_0_1_8b70279_1148732270091_783554_350" supplier="_11_0_1_8b70279_1148732270091_783554_350" client="_11_0_1_8b70279_1148732049524_447560_277"/> <interfacerealization xmi:type="uml:interfacerealization" xmi:id="_11_0_1_8b70279_1148736916722_450661_1466" visibility="public" 8

XML as XMI XML is no fun XML is not extensible creativity??? 9 XML as XMI XML is not extensible XML is no fun Mit XML darf man kreativ sein creativity??? 9

XML used in XMI 10 <xmi:xmi xmi:version="2.1" timestamp="sat May 27 19:48:23 CEST 2006" xmlns:uml="http://schema.omg.org/spec/uml/2.0" xmlns:xmi="http://schema.omg.org/spec/xmi/2.1"> <xmi:documentation xmi:exporter="magicdraw UML" xmi:exporterversion="11.0"/> <uml:model xmi:id="eee_1045467100313_135436_1" name="data" visibility="public"> <xmi:extension xmi:extender="magicdraw UML 11.0" xmi:extenderid="magicdraw UML 11.0"> <moduleextension ignoredinmodule="true"/> </xmi:extension> <ownedcomment xmi:type="uml:comment" xmi:id="_11_0_1_8b70279_1148722106536_123286_1" body="author:papick. Created:27.05.06 11:28. Title:. Comment:. " annotatedelement="eee_1045467100313_135436_1"/> <ownedmember xmi:type="uml:package" xmi:id="_11_0_1_8b70279_1148722111694_682770_2" name="com.clickandbuy" visibility="public"/> <ownedmember xmi:type="uml:component" xmi:id="_11_0_1_8b70279_1148722161245_471481_7" name="subsystem-core" visibility="public"> <realization xmi:type="uml:realization" xmi:id="_11_0_1_8b70279_1148722190807_781764_30" visibility="public" realizingclassifier="_11_0_1_8b70279_1148722190807_12161_28" supplier="_11_0_1_8b70279_1148722190807_12161_28" client="_11_0_1_8b70279_1148722161245_471481_7"/> <realization xmi:type="uml:realization" xmi:id="_11_0_1_8b70279_1148722395292_63694_157" visibility="public" realizingclassifier="_11_0_1_8b70279_1148722358809_513951_140" supplier="_11_0_1_8b70279_1148722358809_513951_140" client="_11_0_1_8b70279_1148722161245_471481_7"/> <realization xmi:type="uml:realization" xmi:id="_11_0_1_8b70279_1148733508912_898457_546" visibility="public" realizingclassifier="_11_0_1_8b70279_1148733508912_180621_544" supplier="_11_0_1_8b70279_1148733508912_180621_544" client="_11_0_1_8b70279_1148722161245_471481_7"/> <realization xmi:type="uml:realization" xmi:id="_11_0_1_8b70279_1148733540788_592306_586" visibility="public" realizingclassifier="_11_0_1_8b70279_1148733540788_228842_584" supplier="_11_0_1_8b70279_1148733540788_228842_584" client="_11_0_1_8b70279_1148722161245_471481_7"/> <nestedclassifier xmi:type="uml:interface" xmi:id="_11_0_1_8b70279_1148722190807_12161_28" name="publishedservice" visibility="public"/> <nestedclassifier xmi:type="uml:class" xmi:id="_11_0_1_8b70279_1148733508912_180621_544" visibility="public"/> <nestedclassifier xmi:type="uml:class" xmi:id="_11_0_1_8b70279_1148733540788_228842_584" name="dom" visibility="public"/> <interfacerealization xmi:type="uml:interfacerealization" xmi:id="_11_0_1_8b70279_1148722217446_942875_60" visibility="public" contract="_11_0_1_8b70279_1148722190807_12161_28" supplier="_11_0_1_8b70279_1148722190807_12161_28" client="_11_0_1_8b70279_1148722161245_471481_7"/> </ownedmember> <ownedmember xmi:type="uml:component" xmi:id="_11_0_1_8b70279_1148722264834_475474_73" name="subsystem-impl" visibility="public"> <interfacerealization xmi:type="uml:interfacerealization" xmi:id="_11_0_1_8b70279_1148733557612_907435_606" visibility="public" contract="_11_0_1_8b70279_1148722190807_12161_28" supplier="_11_0_1_8b70279_1148722190807_12161_28" client="_11_0_1_8b70279_1148722264834_475474_73"/> </ownedmember> <ownedmember xmi:type="uml:component" xmi:id="_11_0_1_8b70279_1148722312903_528399_94" visibility="public"/> <ownedmember xmi:type="uml:dependency" xmi:id="_11_0_1_8b70279_1148722312923_409077_96" visibility="public" supplier="_11_0_1_8b70279_1148722312903_528399_94" client="_11_0_1_8b70279_1148722264834_475474_73"/> <ownedmember xmi:type="uml:artifact" xmi:id="_11_0_1_8b70279_1148722358809_513951_140" visibility="public"/> <ownedmember xmi:type="uml:component" xmi:id="_11_0_1_8b70279_1148732049524_447560_277" name="subsystem-serviceexporter" visibility="public"> <realization xmi:type="uml:realization" xmi:id="_11_0_1_8b70279_1148736855494_61906_1426" visibility="public" realizingclassifier="_11_0_1_8b70279_1148736855494_900019_1424" supplier="_11_0_1_8b70279_1148736855494_900019_1424" client="_11_0_1_8b70279_1148732049524_447560_277"/> <realization xmi:type="uml:realization" xmi:id="_11_0_1_8b70279_1148736866450_127377_1447" visibility="public" realizingclassifier="_11_0_1_8b70279_1148736866440_37201_1445" supplier="_11_0_1_8b70279_1148736866440_37201_1445" client="_11_0_1_8b70279_1148732049524_447560_277"/> <nestedclassifier xmi:type="uml:class" xmi:id="_11_0_1_8b70279_1148736855494_900019_1424" name="dto" visibility="public"/> <nestedclassifier xmi:type="uml:interface" xmi:id="_11_0_1_8b70279_1148736866440_37201_1445" name="publishedremotedtoservice" visibility="public"/> <interfacerealization xmi:type="uml:interfacerealization" xmi:id="_11_0_1_8b70279_1148732140745_117398_312" visibility="public" contract="_11_0_1_8b70279_1148722190807_12161_28" supplier="_11_0_1_8b70279_1148722190807_12161_28" client="_11_0_1_8b70279_1148732049524_447560_277"/> XML used in XMI <interfacerealization xmi:type="uml:interfacerealization" xmi:id="_11_0_1_8b70279_1148732270101_889829_352" visibility="public" contract="_11_0_1_8b70279_1148732270091_783554_350" supplier="_11_0_1_8b70279_1148732270091_783554_350" client="_11_0_1_8b70279_1148732049524_447560_277"/> <interfacerealization xmi:type="uml:interfacerealization" xmi:id="_11_0_1_8b70279_1148736916722_450661_1466" visibility="public" 10

Analogy? Technologies as meta-language you can do everything technologies are fun you must be creative Architecture is how we finally structure our thing and use the technologies stops being fun 11 left-hand-right-hand situation Should architectures be neutral to technologies? When do we find out if a given architecture fits a given technology stack? Who is in charge here? 12

super-architect JSF Spring JPA 2.0 modularization?

Divide & Conquer break it into pieces components layers modules aspects?

0100100101001100 110010010010010 010010010101 01010010101 010010010101 100100101010 10101010 010010010101 101 101111001011 0101010101 bad guy 0100100101001100 110010010010010 010010010101 01010010101 010010010101 100100101010 10101010 010010010101 101 101111001011 0101010101 I am amonolithical thing! bad guy

0100100101001100 110010010010010 010010010101 01010010101 010010010101 100100101010 10101010 010010010101 101 101111001011 0101010101 I am amonolithical thing! I am not known for reusability, maintainability, etc.. bad guy 0100100101001100 110010010010010 010010010101 01010010101 010010010101 100100101010 10101010 010010010101 101 101111001011 0101010101 see the duplicate code?

0100100101001100 110010010010010 010010010101 01010010101 010010010101 100100101010 10101010 010010010101 101 101111001011 0101010101 re-use it! 0100100101001100 110010010010010 XXX 01010010101 XXX 100100101010 10101010 XXX 101 101111001011 0101010101 XXX 010010010101 lifecycle? state? runtime?

XXX provides interfaces 010010010101 provides services managed bean! XXX 010010010101 YYY 010010010101 component based development

Granularität break it into pieces components layers modules aspects?

presentation layer business logic layer integration layer layers presentation layer business logic layer integration layer business delegate session facade service beans manager beans daos transfer objects converters entity beans layers

break it into pieces components layers modules aspects? modules? business logic layer integration layer business logic layer integration layer business logic layer integration layer

allowed intimacy level? modules? business logic layer integration layer business logic layer integration layer business logic layer integration layer business logic layer integration layer business logic layer integration layer business logic layer integration layer

modules? break it into pieces components layers modules aspects? business logic layer integration layer business logic layer integration layer business logic layer integration layer

minimum aop? break it into pieces components layers modules aspects? monitoring transaction business logic layer integration layer business logic layer integration layer business logic layer integration layer security

integration? RCP Client JSF Client BL 1 BL 2 BL 3 DAO A DAO B DAO C DAO D simple 2 client situation

RCP Client JSF Client v.1.0 v.1.0 v.1.0 v.1.0 BL 1 BL 2 BL 3 v.1.0 v.1.0 v.1.0 v.1.0 v.1.0 v.1.0 DAO A DAO B DAO C DAO D... with versions... RCP Client JSF Client RCP PrimeFaces v.1.0 v.1.0 v.1.0 v.1.0 DOJO Spring BL 1 BL 2 BL 3 Log4J Hibernate v.1.0 v.1.0 v.1.0 v.1.0 v.1.0 v.1.0 DAO A DAO B DAO C DAO D and 3rd party libs

windows? RCP Client tomcat v.6.x JSF Client RCP PrimeFaces jboss v.5.x v.1.0 v.1.0 v.1.0 v.1.0 BL 1 BL 2 BL 3 DOJO Spring Log4J Hibernate v.1.0 v.1.0 v.1.0 v.1.0 v.1.0 v.1.0 DAO A DAO B DAO C DAO D and runtimes How? Release management? Versioning? Backwards compatibility? Dependency resolution & mediation? Compiletime vs. runtime?

Session Topics Modularization? Java & Modularization A word on tooling WAR EJB-JAR util JAR Java EE

WAR EJB-JAR util JAR Servlet Java EE WAR EJB-JAR util JAR Servlet EAR Java EE

WAR EJB-JAR util JAR Servlet EAR Java EE ear packaging, class loaders,... ejb-jar instance sharing ejb-jar class sharing util-jar java EE modules

modules? allowed intimacy level? business logic layer integration layer business logic layer integration layer business logic layer integration layer business logic layer integration layer business logic layer integration layer business logic layer integration layer

we can... package modules do class sharing do instance sharing no versions no visibility constraints no module lifecycle BL 1 dependencies runtime configuration modularization testtime compiletime DAO A interface impl mock template hibernate api DI container/ Spring

runtime dependency scopes compile time dependencies handled by compiler, IDE, classpath runtime dependency declared/ managed in context POM v1.0 artefact 2 artefact 1 v1.2 artefact 3 Maven (ivy too...)

dependency mediation for poor EE people because we have versions solve version problems at compile time no fancy-osgi features at runtime RCP Client JSF Client RCP PrimeFaces v.1.0 v.1.0 v.1.0 v.1.0 DOJO Spring BL 1 BL 2 BL 3 Log4J Hibernate v.1.0 v.1.0 v.1.0 v.1.0 v.1.0 v.1.0 DAO A DAO B DAO C DAO D and 3rd party libs

JSF Client v.1.0 Frontend Libs v.1.0 v.1.0 RCP PrimeFaces v.1.0 DOJO v.1.0 Spring BL 3 v.1.0 Backend Libs v.1.0 v.1.0 Log4J Hibernate v.1.0 DAO D transitive dependencies dead end with Java EE

install update refresh INSTALLED STARTING resolve update refresh start stop RESOLVED ACTIVE uninstall uninstall stop UNINSTALLED STOPPING Bundle OSGi install update refresh INSTALLED STARTING resolve update refresh start stop RESOLVED ACTIVE uninstall uninstall stop UNINSTALLED STOPPING Bundle OSGi

INSTALLED resolve update refresh uninstall install RESOLVED uninstall UNINSTALLED update refresh start STARTING ACTIVE stop STOPPING stop INSTALLED resolve update refresh uninstall install RESOLVED uninstall UNINSTALLED update refresh start STARTING ACTIVE stop STOPPING stop INSTALLED resolve update refresh uninstall install RESOLVED uninstall UNINSTALLED update refresh start STARTING ACTIVE stop STOPPING stop install update refresh INSTALLED STARTING resolve update refresh start stop RESOLVED ACTIVE uninstall uninstall stop UNINSTALLED STOPPING Bundle OSGi OSGi Runtime packaging, class loaders,... visible Bundle instance sharing v1.0 visible Bundle v1.1 class sharing visible Bundle OSGi bundles

we can... do class sharing do instance sharing do runtime loading/ unloading do multi-version-loading define visibility constraints hard to do cross-module-container-ee-services Java EE APIs don t fit into OSGi e.g.... monolothical configs classloading nightmares don t work by design

Java 7, 8,... super packages? modules? simplified module system? dynamic modules? ==> Java EE?!? All this works fine as long as a project fits into a single package. Once the project grows beyond that, you may find yourself forced to make implementation classes public in order to access them from multiple packages in the project. That loses the benefits of information hiding, which is clearly suboptimal and a long-standing complaint that often comes up in language discussions in forums such as JavaOne. Blog: Superpackage strawman and the JSR 294 mailing list

All this works fine as long as a project fits into a single package. Once the project grows beyond that, you may find yourself forced to make implementation classes public in order to access them from multiple packages in the project. That loses the benefits of information hiding, which is clearly suboptimal and a long-standing complaint that often comes up in language discussions in forums such as JavaOne. Blog: Superpackage strawman and the JSR 294 mailing list However, if a project is too large to fit into a single package, Java does not provide a suitable encapsulation mechanism. Strawman Proposal for JSR 294 Superpackages

Session Topics Modularization? Java & Modularization A word on tooling tools: a matter of context

develop modular software APIs IDEs Test-Frameworks build modular software integration server automated builds distributed builds? provisioning? release management?

run modular software runtime for modules module/ app deployment intelligent clustering? each tool is great and does (mostly) not work with the others no standard? no standard tooling.

Was tun? Problem Technologien können einem das noch so schönes und ausgeklügeltes Architekturvorhaben ordentlich versaubeuteln

Zauberhafte Technologien Sind nicht mehr so zauberhaft wenn man versucht modular zu entwickeln. Viele Komponentenmodelle, keine Lösungsansätze für Modularisierung Zaubertrank wird schnell zum Gift Thanks!

Schulung: Einführung in die OSGi Service Platform http://www.oio.de/seminar/java/seminar-osgi-schulung-equinox-traing.htm Schulung: Eclipse als Rich Client Plattform http://www.oio.de/eclipse-swt-jface-plugin-rcp-osgi-schulung.htm Mehr von OIO zum Thema