Your SlideShare is downloading. ×

Der Weg zu Java EE 6+

744

Published on

Speaker: Jens Schumann …

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.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
744
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Jens SchumannDer Weg zu Java EE 6+
  • 2. Der Weg zu Java EE 6+ About meJens Schumann SchwerpunkteCTO • Enterprise Javaopen knowledge GmbH • Enterprise Architekturen • Fachliche Modellierung • Java EE Migrationen ;) www.openknowledge.de @_openknowledge
  • 3. Der Weg zu Java EE 6+ Prinzipiell sind wir ohne Java EE 6 zufrieden.
  • 4. Der Weg zu Java EE 6+ Allerdings wird in letzter Zeit viel über Java EE 6 gesprochen.
  • 5. Der Weg zu Java EE 6+ Und Feature X sieht auch gut aus...
  • 6. Der Weg zu Java EE 6+ Lohnt sich der Umstieg? Und wie komme ich da hin?
  • 7. Der Weg zu Java EE 6+ Disclaimer No offense, please!
  • 8. Der Weg zu Java EE 6+ Agenda • Warum? • Wohin? • Wie – High Level? • Wie – Low Level? – Persistenz? – Business? – Presentation?
  • 9. Der Weg zu Java EE 6+ Agenda • Warum? • Wohin? • Wie – High Level? • Wie – Low Level? – Persistenz? – Business? – Presentation?
  • 10. Der Weg zu Java EE 6+ Warum migrieren? 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 ;)
  • 11. Hmm! Hab ichein Problem?
  • 12. Der Weg zu Java EE 6+ Agenda • Warum? • Wohin? • Wie – High Level? • Wie – Low Level? – Persistenz? – Business? – Presentation?
  • 13. Der Weg zu Java EE 6+ Java EE 6: Technologien Java EE Technologien
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. Der Weg zu Java EE 6+ Java EE 6: Technologien JSF 2.0 CDI 1.0 CDI 1.0 EJB 3.1 JPA 2.0
  • 18. Der Weg zu Java EE 6+ Agenda • Warum? • Wohin? • Wie – High Level? • Wie – Low Level? – Persistenz? – Business? – Presentation?
  • 19. Der Weg zu Java EE 6+ Migrationsansätze • Vollständige Migration • Schichtenorientierte Migration • Modulorientierte Migration
  • 20. 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
  • 21. 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
  • 22. 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“
  • 23. Der Weg zu Java EE 6+ Agenda • Warum? • Wohin? • Wie – High Level? • Wie – Low Level? – Persistenz? – Business? – Presentation?
  • 24. Der Weg zu Java EE 6+ PersistenceTier Migration Persistenz Tier Migration • Ausgangstechnologien/Ansätze • Pure SQL/JDBC Persistenz • EJB 2.x Persistenz (CMP, BMP) • Java Data Objects • Hibernate • Zieltechnologie • JPA
  • 25. Der Weg zu Java EE 6+ Persistence Tier Migration - JDBC 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?
  • 26. 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
  • 27. Der Weg zu Java EE 6+ Persistence Tier Migration – EJB 2 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
  • 28. 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
  • 29. Der Weg zu Java EE 6+ Persistence Tier Migration – JDO IST Status JDO Persistenz • POJO Ansatz analog zu JPA • Eventuell annotationsbasiert • Eventuell konfigurationsbasiert • I.d.R Enhancer im Rahmen des Build Prozesses notwendig
  • 30. 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
  • 31. Der Weg zu Java EE 6+Persistence Tier Migration - Hibernate IST Status Hibernate Persistenz • O/R Mapping via XML Deployment Deskriptoren, ohne Annotation • Nutzung von org.hibernate APIs • Feature-Set entspricht weitestgehend JPA
  • 32. 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...
  • 33. Der Weg zu Java EE 6+ Persistence Tier Migration 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
  • 34. Der Weg zu Java EE 6+ Agenda • Warum? • Wohin? • Wie – High Level? • Wie – Low Level? – Persistenz? – Business? – Presentation?
  • 35. Der Weg zu Java EE 6+ Business Tier Migration • Ausgangstechnologien/Ansätze – EJB 2.x – Spring Framework – Eigenes Komponenten Framework • Zieltechnologie – EJB – CDI
  • 36. Der Weg zu Java EE 6+ Business Tier Migration EJB 2.x • 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
  • 37. 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
  • 38. 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
  • 39. Der Weg zu Java EE 6+ Business Tier Migration Spring • 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, ...
  • 40. Der Weg zu Java EE 6+ Business Tier Migration Spring • Spring –> EJB 3.x Herausforderungen • Nicht zu empfehlen... ;)
  • 41. 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)
  • 42. Der Weg zu Java EE 6+ Business Tier Migration Custom • IST Status Custom Komponenten • Selbsterstelltes Service Framework mit Unterstützung von • Komponenten Lookup • Komponenten Management • Komponenten Lifecycle
  • 43. 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
  • 44. Der Weg zu Java EE 6+ Business Tier Migration • 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
  • 45. Der Weg zu Java EE 6+ Agenda • Warum? • Wohin? • Wie – High Level? • Wie – Low Level? – Persistenz? – Business? – Presentation?
  • 46. Der Weg zu Java EE 6+ Presentation Tier Migration Presentation Tier Migration • Ausgangstechnologien/Ansätze • Jakarta Struts • (Stellvertretend für Action Frameworks) • Zieltechnologie • JSF
  • 47. 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
  • 48. 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
  • 49. 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
  • 50. Der Weg zu Java EE 6+ Presentation Tier Migration Presentation Tier Migration • Ausgangstechnologien/Ansätze • Jakarta Struts • (Stellvertretend für Action Frameworks) • Fat Client: Swing, ...? • Zieltechnologie • JSF
  • 51. Der Weg zu Java EE 6+ Fazit
  • 52. Der Weg zu Java EE 6+ Fazit Keine Sex Appeal Migration!
  • 53. 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
  • 54. Der Weg zu Java EE 6+ Weitere Sessions

×