54
ens Schumann er Weg zu Java EE 6+

Der Weg zu Java EE 6+

Embed Size (px)

DESCRIPTION

Speaker: Jens Schumann W-JAX 2012 Zweifelsohne lohnt sich der Umstieg zu Java EE 6, sei es zum kompletten Java-EE-6-Stack oder zu ausgewählten Java-EE-6-Features. Doch wie migriert man gewachsene Enterprise-Java-Anwendungen? Diese Session stellt Strategien und Ansätze für eine schrittweise Java-EE-6 Migration vor und erarbeitet Kriterien, die eine Migration erschweren bzw. verhindern oder kaum sinnvoll erscheinen lassen.

Citation preview

Page 1: Der Weg zu Java EE 6+

Jens Schumann

Der Weg zu Java EE 6+

Page 2: Der Weg zu Java EE 6+

Jens Schumann

CTOopen knowledge GmbH

@_openknowledgewww.openknowledge.de

Schwerpunkte

• Enterprise Java• Enterprise Architekturen• Fachliche Modellierung

• Java EE Migrationen ;)

About me

Der Weg zu Java EE 6+

Page 3: Der Weg zu Java EE 6+

Prinzipiell sind wir ohne Java EE 6

zufrieden.

Der Weg zu Java EE 6+

Page 4: Der Weg zu Java EE 6+

Allerdings wird in letzter Zeitviel über Java EE 6 gesprochen.

Der Weg zu Java EE 6+

Page 5: Der Weg zu Java EE 6+

Und Feature X sieht auch gut aus...

Der Weg zu Java EE 6+

Page 6: Der Weg zu Java EE 6+

Lohnt sich der Umstieg?Und wie komme ich da hin?

Der Weg zu Java EE 6+

Page 7: Der Weg zu Java EE 6+

DisclaimerNo offense, please!

Der Weg zu Java EE 6+

Page 8: Der Weg zu Java EE 6+

• Warum?• Wohin?• Wie – High Level?• Wie – Low Level?

– Persistenz?– Business?– Presentation?

Der Weg zu Java EE 6+

Agenda

Page 9: Der Weg zu Java EE 6+

• Warum?• Wohin?• Wie – High Level?• Wie – Low Level?

– Persistenz?– Business?– Presentation?

Der Weg zu Java EE 6+

Agenda

Page 10: Der Weg zu Java EE 6+

Gründe für eine Technologiemigration• Fehlender / auslaufender Support• Niedrige Entwicklungsgeschwindigkeit• Fehlendes / nicht verfügbares Know-How• Fehlender Funktionsumfang• Komplexität, Performance, Integration, ...• Sex Appeal ;)

Der Weg zu Java EE 6+

Warum migrieren?

Page 11: Der Weg zu Java EE 6+

Hmm! Hab ich

ein Problem?

Page 12: Der Weg zu Java EE 6+

• Warum?• Wohin?• Wie – High Level?• Wie – Low Level?

– Persistenz?– Business?– Presentation?

Der Weg zu Java EE 6+

Agenda

Page 13: Der Weg zu Java EE 6+

Java EE 6: Technologien

Der Weg zu Java EE 6+

Java EE 6: Technologien

Page 14: Der Weg zu Java EE 6+

Klassische IST Situation (I/II)• Data Access Tier

• Standard: JDBC, CMP, BMP, JPA, „JDO“• Non-Standard: Hibernate, iBatis, ..., eigener OR-

Mapper

• Business Tier• Standard: Java SE, Enterprise JavaBeans 2.x+• Non-Standard: Spring, Guice, eigenes

Komponentenframework

Der Weg zu Java EE 6+

Java EE 6: Technologien

Page 15: Der Weg zu Java EE 6+

Klassische IST Situation (II/II)• Presentation Tier

• Standard: JSP + Servlets, JSF 1.2, „Portlets“• Non-Standard: Struts, GWT, Wicket, eigenes Web

Framework (JSP, Velocity, ...) ...• Fat Clients: Swing, ...

• Access Tier• Standard: RMI, JAX-RPC, JAX-WS• Non-Standard: „x over HTTP“, Web Service

Framework

Der Weg zu Java EE 6+

Java EE 6: Technologien

Page 16: Der Weg zu Java EE 6+

Java EE 6 Technologie Stack– Data Access Tier

• JDBC, JPA, (CMP), JCA

– Business Tier• CDI, Enterprise JavaBeans

– Presentation Tier• JSF 2.0, JSP, Servlets, ... CDI

– Access Tier• RMI, JAX-WS, JAX-RS

Der Weg zu Java EE 6+

Java EE 6: Technologien

Page 17: Der Weg zu Java EE 6+

JSF 2.0CDI 1.0

CDI 1.0EJB 3.1

JPA 2.0

Der Weg zu Java EE 6+

Java EE 6: Technologien

Page 18: Der Weg zu Java EE 6+

• Warum?• Wohin?• Wie – High Level?• Wie – Low Level?

– Persistenz?– Business?– Presentation?

Der Weg zu Java EE 6+

Agenda

Page 19: Der Weg zu Java EE 6+

• Vollständige Migration• Schichtenorientierte Migration• Modulorientierte Migration

Der Weg zu Java EE 6+

Migrationsansätze

Page 20: Der Weg zu Java EE 6+

• Vollständige Migration• Einmalige Migration der gesamten

Anwendung• Entspricht faktisch einmaliger

Neuentwicklung• Komplexitäten

• „Neuentwicklung“• I.d.R. langer Entwicklungsstopp während

Migration

Der Weg zu Java EE 6+

Migrationsansätze

Page 21: Der Weg zu Java EE 6+

• Schichtenorientierte Migration• An Schichten orientierter Migrationsansatz

• Komplexitäten• „Mehrmalige“ Migration mit damit verbundenen

Test- und Abnahmeprozessen• Migration einer Schicht beeinflusst darüber

liegende Schichten

Der Weg zu Java EE 6+

Migrationsansätze

Page 22: Der Weg zu Java EE 6+

• Modulorientierte Migration• An fachlichen Modulen orientierter

Migrationsansatz• Migration „on-demand“

• Komplexitäten• Abgrenzung fachlicher Module• „Mischbetrieb alter und neuer Welt“

Der Weg zu Java EE 6+

Migrationsansätze

Page 23: Der Weg zu Java EE 6+

• Warum?• Wohin?• Wie – High Level?• Wie – Low Level?

– Persistenz?– Business?– Presentation?

Der Weg zu Java EE 6+

Agenda

Page 24: Der Weg zu Java EE 6+

• Ausgangstechnologien/Ansätze• Pure SQL/JDBC Persistenz• EJB 2.x Persistenz (CMP, BMP)• Java Data Objects• Hibernate

• Zieltechnologie• JPA

Persistenz Tier Migration

Der Weg zu Java EE 6+

Persistence Tier Migration

Page 25: Der Weg zu Java EE 6+

IST Status SQL/JDBC Persistenz• Datenbankspezifische SQL Abfragen• I.d.R DAO/Repository Pattern• Bereitstellung von Value Objects

• Selten reiches Domain Modell, entsprechen i.d.R. Datenbanktabellen

• Navigation zu „related Entities“ über Primärschlüssel

• Concurrent Update Behandlung?

Der Weg zu Java EE 6+

Persistence Tier Migration - JDBC

Page 26: Der Weg zu Java EE 6+

SQL/JDBC -> JPA Herausforderungen• Einführung eines reichen Domain Modells• Übergreifendes Domain Modell mit

Beziehungen zwischen fachlichen Modulen• Komplexe Umstellung bei fehlendem Data

Access Layer (DAO)• Leaking SQL

• Umgang mit Detached Entitäten• Zusicherung der Identität

Der Weg zu Java EE 6+

Persistence Tier Migration - JDBC

Page 27: Der Weg zu Java EE 6+

IST Status EJB 2.x Persistenz• Allgemein

• EJB 2.x Pattern• EJB 2.x Overhead (Interfaces, Deskriptoren)

• CMP 2.x • CMP 2.x Entity Klassen• CMP 2.x XML Descriptor

• BMP 2.x• Umsetzung von BMP CRUD Callback

Methoden

Der Weg zu Java EE 6+

Persistence Tier Migration – EJB 2

Page 28: Der Weg zu Java EE 6+

EJB 2.x -> JPA Herausforderungen• Nutzung von „new Object()“• Einführung eines reichen Domain Modells• Übergreifendes Domain Modell mit

Beziehungen zwischen fachlichen Modulen• Technologieneutraler Data Access Layer

• Entfernung von Infrastruktur Code

• Umgang mit Detached Entitäten• Kann ggfs. automatisiert werden

Der Weg zu Java EE 6+

Persistence Tier Migration – EJB 2

Page 29: Der Weg zu Java EE 6+

IST Status JDO Persistenz• POJO Ansatz analog zu JPA

• Eventuell annotationsbasiert• Eventuell konfigurationsbasiert

• I.d.R Enhancer im Rahmen des Build Prozesses notwendig

Der Weg zu Java EE 6+

Persistence Tier Migration – JDO

Page 30: Der Weg zu Java EE 6+

JDO -> JPA Herausforderungen• JDO und JPA weisen Ähnlichkeiten auf,

aber:• JPA Featureset kleiner als JDO Feature Set• Einführung von JPA führt zu detached Entity

Problemen • I.d.R. kommen bei JDO zahlreiche

providerspezifische Extensions zum Einsatz

Der Weg zu Java EE 6+

Persistence Tier Migration – JDO

Page 31: Der Weg zu Java EE 6+

IST Status Hibernate Persistenz• O/R Mapping via XML Deployment

Deskriptoren, ohne Annotation• Nutzung von org.hibernate APIs

• Feature-Set entspricht weitestgehend JPA

Der Weg zu Java EE 6+

Persistence Tier Migration - Hibernate

Page 32: Der Weg zu Java EE 6+

Hibernate -> JPA Herausforderungen• Faktisch keine Herausforderungen• Eventuell proprietäre Hibernate Features

• ID Generierung• Formula• Query by Example• Bestimmte Mappings...

Der Weg zu Java EE 6+

Persistence Tier Migration - Hibernate

Page 33: Der Weg zu Java EE 6+

Zwischenfazit Persistenz• Migration nur, wenn Domain Modell weiterhin

Änderungen unterliegt• JDO Migration selten sinnvoll• Hibernate Migration auf jeden Fall umsetzen

• Das Domain Modell steht im Fokus, daher• Fehlt ein Domain Modell, so gestaltet sich die

Migration schwierig• Existiert schon ein reiches Domain

Modell, so ist die Migration machbar

Der Weg zu Java EE 6+

Persistence Tier Migration

Page 34: Der Weg zu Java EE 6+

• Warum?• Wohin?• Wie – High Level?• Wie – Low Level?

– Persistenz?– Business?– Presentation?

Der Weg zu Java EE 6+

Agenda

Page 35: Der Weg zu Java EE 6+

• Ausgangstechnologien/Ansätze– EJB 2.x– Spring Framework– Eigenes Komponenten Framework

• Zieltechnologie– EJB– CDI

Der Weg zu Java EE 6+

Business Tier Migration

Page 36: Der Weg zu Java EE 6+

• IST Status EJB 2.x Komponenten– Komponenten mit Hilfe von

• EJB 2.x Stateless Session Beans• EJB 2.x Stateful Session Beans

– Allgemein• EJB 2.x Pattern• EJB 2.x Overhead• EJB 2.x Kommunikation

Der Weg zu Java EE 6+

Business Tier Migration EJB 2.x

Page 37: Der Weg zu Java EE 6+

• EJB 2.x –> EJB 3.x Herausforderungen• Faktisch keine, aber

• Entfernung Infrastrukturcode• Entfernung J2EE Pattern• Ggfs. Entfernung Remoting

• Kann automatisiert werden• JDT Refactorings

Der Weg zu Java EE 6+

Business Tier Migration EJB 2.x

Page 38: Der Weg zu Java EE 6+

• EJB 2.x –> CDI Herausforderungen• Faktisch keine, aber

• Entfernung Infrastrukturcode• Entfernung J2EE Pattern• EJB Add On Funktionalität• Kein Remoting• „Kein“ Transaktionssupport

• Kann automatisiert werden• JDT Refactorings

Der Weg zu Java EE 6+

Business Tier Migration EJB 2.x

Page 39: Der Weg zu Java EE 6+

• IST Status Spring Komponenten• Leichtgewichtiges DI Framework

• XML-basiert oder• Annotations-basiert

• Starke Integrationsunterstützung• JDBC Template, Transaktion Template, JMS

Template, Mail Template

• Unterstützung ausgewählter Java EE Annotationen

• Resource, Inject, ...

Der Weg zu Java EE 6+

Business Tier Migration Spring

Page 40: Der Weg zu Java EE 6+

• Spring –> EJB 3.x Herausforderungen• Nicht zu empfehlen... ;)

Der Weg zu Java EE 6+

Business Tier Migration Spring

Page 41: Der Weg zu Java EE 6+

• Spring –> CDI Herausforderungen• Leicht unterschiedliche Semantik im Bereich

von Scopes• Beide Frameworks unterstützen @Inject

• Problembereich Spring Add-On Funktionalität (alle org.sf Importe)

Der Weg zu Java EE 6+

Business Tier Migration Spring

Page 42: Der Weg zu Java EE 6+

• IST Status Custom Komponenten• Selbsterstelltes Service Framework mit

Unterstützung von• Komponenten Lookup• Komponenten Management• Komponenten Lifecycle

Der Weg zu Java EE 6+

Business Tier Migration Custom

Page 43: Der Weg zu Java EE 6+

• Custom –> EJB 3.x/CDI Herausforderungen• Ablösung von Ressource Lookup

• Einführung von DI

• Überführung der Konfiguration• Insbesondere DB basierte Konfiguration

• Unter Umständen automatische Refactorings• JDT Refactorings

Der Weg zu Java EE 6+

Business Tier Migration Custom

Page 44: Der Weg zu Java EE 6+

• Zwischenfazit• Migration nur, wenn Anwendung weiterhin

Änderungen unterliegt oder andere Schichten migriert werden sollen

• Migration von Spring zu XX kann man machen, muss man aber nicht

• Migration zu CDI auf jeden Fall sinnvoll

• Komplexität steigt bei Framework-abhängigkeiten, die über Dependency Injection hinaus gehen

Der Weg zu Java EE 6+

Business Tier Migration

Page 45: Der Weg zu Java EE 6+

• Warum?• Wohin?• Wie – High Level?• Wie – Low Level?

– Persistenz?– Business?– Presentation?

Der Weg zu Java EE 6+

Agenda

Page 46: Der Weg zu Java EE 6+

• Ausgangstechnologien/Ansätze• Jakarta Struts

• (Stellvertretend für Action Frameworks)

• Zieltechnologie• JSF

Presentation Tier Migration

Der Weg zu Java EE 6+

Presentation Tier Migration

Page 47: Der Weg zu Java EE 6+

• IST Status Struts Visualisierung• Abstraktion HTTP Request/Response Modell• Überführung von HTML Formularparametern in

Framework Formularrepräsentation• Delegation an Action Methoden• Dispatching zu Views

Der Weg zu Java EE 6+

Presentation Tier Migration

Page 48: Der Weg zu Java EE 6+

• Struts -> JSF Herausforderungen• Unterschiede Frameworkansätze

• Action vs. Eventorientiertes Framework• Webframework Basisklassen• Validierung• Integration in Backend Technologie• View-Technologie

• Umgang mit HTTP Scopes• Request, Session, Application

Der Weg zu Java EE 6+

Presentation Tier Migration

Page 49: Der Weg zu Java EE 6+

• Zwischenfazit– Web Migration bedeutet in der Regel ein

Komplettaustausch der gesamten Schicht• Modulorientierte Migration andenken,

Übergabepunkte identifizieren und ausnutzen

– Komplexität der Migration aufgrund großer technologischer Unterschiede bisweilen migrationsverhindernd

Der Weg zu Java EE 6+

Presentation Tier Migration

Page 50: Der Weg zu Java EE 6+

• Ausgangstechnologien/Ansätze• Jakarta Struts

• (Stellvertretend für Action Frameworks)

• Fat Client: Swing, ...?• Zieltechnologie

• JSF

Presentation Tier Migration

Der Weg zu Java EE 6+

Presentation Tier Migration

Page 51: Der Weg zu Java EE 6+

Fazit

Der Weg zu Java EE 6+

Page 52: Der Weg zu Java EE 6+

Keine Sex AppealMigration!

Der Weg zu Java EE 6+

Fazit

Page 53: Der Weg zu Java EE 6+

• Technische Migration ist möglich – Business Tier unproblematisch– Persistence und Presentation Tier in der Regel

komplex

• Nichttechnischen Randbedingungen:– Nahezu alle J2EE 1.4 Pattern sind ungültig– JPA mächtiger als EJB 2.x CMP

Der Weg zu Java EE 6+

Fazit

Page 54: Der Weg zu Java EE 6+

Weitere Sessions

Der Weg zu Java EE 6+