Der Weg zu Java EE 6+

Preview:

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

Jens Schumann

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+

Prinzipiell sind wir ohne Java EE 6

zufrieden.

Der Weg zu Java EE 6+

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

Der Weg zu Java EE 6+

Und Feature X sieht auch gut aus...

Der Weg zu Java EE 6+

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

Der Weg zu Java EE 6+

DisclaimerNo offense, please!

Der Weg zu Java EE 6+

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

– Persistenz?– Business?– Presentation?

Der Weg zu Java EE 6+

Agenda

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

– Persistenz?– Business?– Presentation?

Der Weg zu Java EE 6+

Agenda

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?

Hmm! Hab ich

ein Problem?

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

– Persistenz?– Business?– Presentation?

Der Weg zu Java EE 6+

Agenda

Java EE 6: Technologien

Der Weg zu Java EE 6+

Java EE 6: Technologien

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

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

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

JSF 2.0CDI 1.0

CDI 1.0EJB 3.1

JPA 2.0

Der Weg zu Java EE 6+

Java EE 6: Technologien

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

– Persistenz?– Business?– Presentation?

Der Weg zu Java EE 6+

Agenda

• Vollständige Migration• Schichtenorientierte Migration• Modulorientierte Migration

Der Weg zu Java EE 6+

Migrationsansätze

• 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

• 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

• 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

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

– Persistenz?– Business?– Presentation?

Der Weg zu Java EE 6+

Agenda

• 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

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

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

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

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

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

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

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

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

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

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

– Persistenz?– Business?– Presentation?

Der Weg zu Java EE 6+

Agenda

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

• Zieltechnologie– EJB– CDI

Der Weg zu Java EE 6+

Business Tier Migration

• 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

• 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

• 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

• 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

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

Der Weg zu Java EE 6+

Business Tier Migration Spring

• 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

• 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

• 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

• 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

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

– Persistenz?– Business?– Presentation?

Der Weg zu Java EE 6+

Agenda

• Ausgangstechnologien/Ansätze• Jakarta Struts

• (Stellvertretend für Action Frameworks)

• Zieltechnologie• JSF

Presentation Tier Migration

Der Weg zu Java EE 6+

Presentation Tier Migration

• 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

• 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

• 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

• 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

Fazit

Der Weg zu Java EE 6+

Keine Sex AppealMigration!

Der Weg zu Java EE 6+

Fazit

• 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

Weitere Sessions

Der Weg zu Java EE 6+

Recommended