Write Once, Run Nowhere (else)?“ - OIO â€‍Write Once, Run Nowhere?“ -...

download Write Once, Run Nowhere (else)?“ - OIO â€‍Write Once, Run Nowhere?“ - Portabilitأ¤t von J2EE-Anwendungen

of 28

  • date post

    09-Jul-2020
  • Category

    Documents

  • view

    0
  • download

    0

Embed Size (px)

Transcript of Write Once, Run Nowhere (else)?“ - OIO â€‍Write Once, Run Nowhere?“ -...

  • 1

    Orientation in Objects GmbH

    Weinheimer Str. 68 68309 Mannheim

    www.oio.de info@oio.de

    "Write Once, Run Nowhere (else)?“

    Portabilität von J2EE-Anwendungen

    Tobias Kieninger

    2

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    Gliederung

    • Motivation

    • Entwicklungsszenario • Typische Verdächtige

  • 2

    3

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    Was wir (nicht) tun!

    • Ist Websphere performanter als BEA?

    • Skaliert Orion besser als Jboss? • Hat Resin mehr Features als Tomcat? • Welcher Application Server hat die besten Mapping Tools?

    4

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    Ziele der Session!

    • Mögliche Lösungsansätze

    • Richtlinien • Mögliche Entwicklungsprozesse • Mögliche Integrationsprozesse

  • 3

    5

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    Portabilität! Warum?

    • Wir haben doch einen Standard ;-)

    • Was steht leider nicht drin? – Persitenzmappping – Administration

    • JMX teil von J2SE

    – Deployment • Deployment API ab J2EE 1.5

    6

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    Portabilität! Warum?

    • Unabhängigkeit vom Lieferanten eröffnet Verhandlungsspielräume

    • Verkauf / Weitergabe des Produkts - verschiedene Zielplattformen geplant

    • Entwicklungsbeginn vor Serverentscheidung

    • Serverentscheidung muss nachträglich geändert werden – politische Gründe (Stichwort „immer IBM“) – ökonomische Gründe (Stichwort „JBoss ist doch umsonst...“) – technologische Gründe (Stichwort J2EE 1.4 und BEA)

  • 4

    7

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    Gliederung

    • Motivation

    • Entwicklungsszenario • Typische Verdächtige

    8

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    Projektkennzahlen

    • 8 Leute

    • ca. 3,5 Personenjahre • ca. 60 Entitäten • ca. 220 Formulare • Gesamtlaufzeit ca. 1,5 Jahre

  • 5

    9

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    Voraussetzungen zum Projektbeginn

    • Kundenwunsch – Zielsystem: Websphere, Oracle

    • Entwicklerwunsch – Entwicklersysteme: JBoss, Eclipse, Open Source

    10

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    WebschichtWebschicht

    Business DelegatesBusiness Delegates

    Datenbank

    Session FassadeSession Fassade

    Grobe Architektur

    DAOsDAOs Entity BeansEntity Beans

    • Frontend – Servlets / JSP – Struts

    • Backend – EJBs – J2EE-Patterns – DAOs

    • Datenbank – Relational

  • 6

    11

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    Tooling, ein wichtiges Thema!

    • Eclipse – Lomboz – XML Buddy – Checkstyle – DBEdit

    • Ant • XDoclet ...

    WSAD

    12

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    Web Server

    Servlet Engine

    Application Server

    Server, Tools, Datenbanken ....

    Oracle MySql MS-SQL Postgress

    JBoss

    Websphere

    OC4J BEA

    Tomcat Jetty

    Resin

    Tooling

    ASTK

    Eclipse

    Ant

    Toad

    ErWin

    XDE

    Together

  • 7

    13

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    XP - the central principles

    • Fast and detailled feedback –test driven design with acceptance tests

    –Customer On-site –pair programming

    • Continuous process: –continuous integration –refactoring –frequent and small releases

    • Common understanding – planning game – simple design – System metaphor – collective code ownership – coding conventions

    • Developer Welfare – a week has 40 hours

    14

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    WebschichtWebschicht

    Business DelegatesBusiness Delegates

    Datenbank

    Testing

    Tests / Junit

    JUnitJUnit

    JWebUnitJWebUnit

    DBUnit

  • 8

    15

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    JUnit

    • Basis-Treiber für zahllose Derivate und damit einheitliche Basis für autom. Tests

    • Unit-Tests für Business Delegates

    FrontendFrontend

    Business DelegatesBusiness Delegates

    BackendBackend

    Junit - TestsJunit - Tests

    16

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    JWebUnit

    • Basiert auf HTTPUnit

    • Simuliert Webbrowser

    • Prüft Ergebnisseiten ab

    ... public void testCreateAndDisplay() { login("/admin/mandator/create.do"); assertTitleEqualsKey("admin.mandator.create.title"); setFormElement("name", "Norbert Leitwein"); submit(BUTTON_SAVE); assertTitleEqualsKey("admin.mandator.create.title"); assertTextPresent("Sie müssen Feld Name ausfüllen."); ...

  • 9

    17

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    DBUnit

    • Schreibt Testdaten in Datenbank

    • Datenbank wird für jeden Test neu initialisiert

    ...

    ...

    18

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    CVS - Concurrent Versions System

    CVS

    Entwicklung

  • 10

    19

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    A build a day... Continuous Integration!

    CVS

    Entwicklung

    Cruise Control

    QA

    JBoss

    TestsTestsTestsTests

    Intranet

    20

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    Cruise Control

    Ist im Prinzip ein Timer

    • der Ant-Skripte anstoßen • und Mails verschicken • und Reports ablegen kann

  • 11

    21

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    Wöchentliche Milestonebuilds

    CVS

    QA

    Entwicklung

    wöchentliche manuelle Akzeptanz-Tests

    22

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    XDoclet

    XDocletEngine

    ...

    /** * @ejb.interface-method */ public int addiere(int a, int b) { return (a + b); } ...

    XML Java Text

  • 12

    23

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    XDoclet im Projekt

    • EJB – SessionBeans – EntityBeans

    • CMR Relationen • Mappinginformationen

    – Value Objects / Transfer Objects – Session Fassade – Struts Formulare

    • Mit Validierung

    • Web – Servlets – Listener – Struts

    • Actions

    • ActionForms

    24

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    XDoclet Beispiel

    /** * @ejb.bean description="value" display-name="Account" * local-jndi-name="local/AccountLocalHome" * name="Account" primkey-field="id" schema="Account“ * type="CMP" cmp-version="2.x" view-type="local" * * @ejb.pk class = "java.lang.Long“ * ... * * @ejb.value-object name = "Account" match = "Account" * ... * @struts.form name = "Account" * ... */ public abstract class AccountBean implements EntityBean { ...

  • 13

    25

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    XDoclet und Portabilität

    • JBoss-Tags – Bsp: @jboss.query – mehr als 30 Tags – Gut gepflegt

    • Websphere-Tags – DB Mapping – Schwer verwendbar

    26

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    Strategie: Seltene aber regelmäßige Portierung

    CVS

    Entwicklung

    JBoss JBoss

    JBoss

    Integratoren

    WAS TestsTestsTestsTests

  • 14

    27

    © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere?“ - Portabilität von J2EE-Anwendungen

    Regelmäßige, seltene Portierung

    • Vorteile – Bewahrung der Arbeitsweise – Kenntnisse für verschiedene Server können auf wenig Leute

    reduziert werden

    • Nachteile – Zusätzliche Migrationsaufwände

    • Aufwand bei ca. 2 BT