View
776
Download
4
Category
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