Wir müssen migrieren! Was nun?

  • Published on
    23-Jun-2015

  • View
    349

  • Download
    1

Embed Size (px)

DESCRIPTION

Speaker: Jens Schumann 5. November 2013 | JAX Mainz Viele ltere Java- und Java-EE-Anwendungen haben mittlerweile ihre Halbwertszeit berschritten: Neben den klassischen Problemfeldern Wartbarkeit, Entwicklungsgeschwindigkeit oder verfgbarer Support sprechen aktuelle Java- und Java-EE-Plattformentscheidungen fr eine Migration bestehender Anwendungen hin zu einem neueren Technologie-Stack. Doch was bei einer kleinen Anwendung mithilfe von etwas Fleiarbeit erledigt werden kann, entpuppt sich bei groen, ber viele Jahre gewachsenen Anwendungen schnell als unlsbare Aufgabe. Glcklicherweise bietet die Java-Community einige Tools und Ideen, mit deren Hilfe Technologiemigrationen vorab besser bewertet und teilweise bis vollstndig automatisch realisiert werden knnen. Diese Session schildert Erfahrungen mit diesen Anstzen und Tools und zeigt auf, wie serverseitige Migrationen (Komponentenmodell, Datenzugriff ...), aber auch GUI-Migrationen, beispielsweise von Swing zu JavaFX oder Webtechnologien, gemeistert werden knnen.

Transcript

  • 1. Wir mssen migrieren! Was nun?Jens Schumann open knowledge GmbH

2. Unsere Landschaft YOUR-APP-Framework! CMP / BMP!YOUR-DB-Framework!Stateless/Stateful EJB 2.x! J2EE Pattern! JSF 1.x!Swing! Struts und Verwandte! 3. Wir mssen migrieren! 4. Plattform-Support Entwicklungsperformance Know-How Funktionsumfang Komplexitt, Performance, Integration, ... Sex AppealWarum? 5. Wohin? Java Server-Side Java EE Stack Spring Framework Java Client-Side Java FX Web 6. Wohin? Beispiel: Java EE StackJSF 2.x CDI 1.x CDI 1.x EJB 3.x JPA 2.x 7. Wohin? Beispiel: Java EE StackJAX-WS CDI 1.x CDI 1.x EJB 3.x JAX-WS 8. Wohin? Beispiel: Java EE StackJAX-RS CDI 1.x CDI 1.x EJB 3.x JAX-RS 9. Lines of Code ComplexityJa aber! Changes Team Staffing Development Process Testing 10. Vollstndig All-or-nothing Schichtenorientiert Layer-by-layer Layer-onlyMigrations Anstze Modulorientiert Domain or technical 11. Manuell Rewrite by hand Vollautomatisiert RefactoringMigrations Anstze Teilautomatisiert Refactoring & Cleanup 12. Das Toolset ist vorhanden Eclipse JDT IntelliJ Idea PSI NetBeans Refactoring APIAuto matisierung 13. Das Toolset ist vorhanden Rewrite Code Rewrite Invocations Rewrite Failure Handling Introduce Code Move Code Remove Code Move ConfigAuto matisierung 14. Beispiel JDT Refactoring Zugriff auf Abstract Syntax Tree Programmiermodell entspricht GUI Verhalten: 2 Phasen nderungen aufzeichnen o.e.j.c.d.r.ASTRewrite o.e.j.c.d.r.ImportRewrite o.e.j.c.d.AST (Factory) nderungen anwenden o.e.j.t.Document o.e.t.e.TextEdit o.e.j.c.IBuffer (falls auto-commit)Auto matisierung 15. Beispiel Migration von EJB 2.x Stateless/Stateful Beans und Pattern zu Java EE 6/7 (CDI, EJB 3.x)Auto matisierung Beispiel: PetStore 1.3.2 16. EJB Transformation (1/5) public class CartEJBAction extends EJBActionSupport { public EventResponse perform(Event e) throws { CartEvent ce = (CartEvent)e; ShoppingClientFacadeLocal scf = (SCFL)machine.getAttribute(); ShoppingCartLocal cart = scf.getShoppingCart(); switch (ce.getActionType()) { case CartEvent.ADD_ITEM : { cart.addItem(ce.getItemId()); } } } } 17. EJB Transformation (2/5) public class ShoppingClientFacadeLocalEJB implements SessionBean { public ShoppingCartLocal getShoppingCart() { if (cart == null) { try { ServiceLocator sl = new ServiceLocator(); ShoppingCartLocalHome home =(SCLH)sl.getLocalHome(...); cart = home.create(); } catch (javax.ejb.CreateException cx) { ... } catch (ServiceLocatorException slx) { ...} } return cart; } } 18. EJB Transformation (3/5) public class ShoppingCartLocalEJB implements SessionBean { private HashMap cart; // default to the US English private Locale locale = Locale.US; public ShoppingCartLocalEJB() { cart = new HashMap(); } ... } 19. EJB Transformation (4/5) @Named @SessionScoped public class CartAction extends ActionSupport { @Inject privat ShoppingCart cart; public EventResponse perform(Event e) throws { CartEvent ce = (CartEvent)e; switch (ce.getActionType()) { case CartEvent.ADD_ITEM : { cart.addItem(ce.getItemId()); } } } } 20. EJB Transformation (5/5) @Stateful public class ShoppingCart { private HashMap cart; // default to the US English private Locale locale = Locale.US; public ShoppingCart() { cart = new HashMap(); } ... } 21. Beispiel Swing UI Layout Migration nach JSF 2.x MigrationspfadAuto matisierung Swing -> XMLEncoder -> XSLT -> XHTML 22. Swing Layout Migration (1/3) ... ... continued ... 23. Swing Layout Migration (1/3) javax.swing.JComboBoxnameKundenextFocusableComponent Profil Kunde 24. Swing Layout Migration (3/3) ..>

....

25. Was? Bestandaufnahme (Veraltete) Technologien (Veraltete) Muster Unntige Infrastruktur Fehlende Abstraktionen Over-engineering Architektonische Fehler Assets Domain Data Access Business Logik UI 26. Was? Achtung Manuelle Bestandsaufnahme fehleranfllig Daher Toolsupport nutzen Beispiel JBoss Windup 27. JBoss Windup High Level Architektur Analyse Problem Spots Focus Technologien Muster Konfigurationen JBoss Migrationen 28. JBoss Windup Core Features Java Klassifikation XML Klassifikation JBoss Migration Rules Rule Extension Reporting 29. Discover problem spots Design alternatives Implement New core features Refactorings TransformationsWie? Automate migration Test and improve Freeze and Test Rollout 30. Java2Java Refactoring Web2Web (Begrenzt) XSLT SwingToXXXWie? Layout und Binding via XMLDecoder und XSLT Refactoring Java2XXX Refactoring & Code Generierung 31. Fehlendes Domain Modell Fehlende Muster DB Layer/ OR-MappingProblem Bereiche Fehlende JPA Features Lebenszyklus Stateful Handling (UI)-Framework pollution Domain und UI Code View Logik 32. Upgrade EJB 2.x EJB 3.x, CDI oder Spring Remove J2EE Pattern Injection Remove/Simplify YOUR Framework Re-use CMPWas geht? Nur Basis fr weiterfhrende Arbeiten Swing2JavaFX Swing2JSF 33. Q&A Vielen Dank fr Ihre Zeit. Kontakt: open knowledge GmbH Bismarckstr. 13 26122 Oldenburg 34. openknowledge@WJAX2013 Dienstag: 12:00 13:00 17:45 18:45Java EE Day New School Enterprise Architecture Wir mssen migrieren! Was nun?Donnerstag: 08:45 09:45 10:15 11:15Android goes asynchronous JS-Components in JSF-AnwendungenFreitag: 13:30 15:00 15:30 17:00Java EE Experts Day JPA: Pitfalls, Patterns und Performance Real-Life-Chaos und Best Practices 35. Links http://www.vogella.com/articles/EclipseJDT/article.html http://www.eclipse.org/articles/article.php?file=Article-Unleashing-thePower-of-Refactoring/index.html http://www.eclipse.org/articles/article.php?file=ArticleJavaCodeManipulation_AST/index.html http://publib.boulder.ibm.com/infocenter/rtnlhelp/v6r0m0/index.jsp? topic=%2Forg.eclipse.jdt.doc.isv%2Fguide%2Fjdt_api_manip.htm

Recommended

View more >