java pet store vs. .net pet shop - software engineering · (petshop.components) – beinhaltet von...

34
Java Pet Store vs. .NET Pet Shop Java Pet Store vs. .NET Pet Shop Seminar Software-Entwurf Jörg Eggermann <[email protected]>

Upload: others

Post on 16-Jun-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

Java Pet Store vs. .NET Pet Shop Java Pet Store vs. .NET Pet Shop

Seminar Software-EntwurfJörg Eggermann

<[email protected]>

Page 2: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

2Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

GliederungGliederung

• Motivation• Einordnung• Einschub - Enterprise Java Beans• Anwendungen in der Übersicht

– Java Pet Store– .NET Pet Shop

• Vergleich – Hintergründe & Geschichte– Vergleich– Kritik am Vergleich

• Zusammenfassung

Page 3: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

3Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

MotivationMotivation

• .NET und J2EE führend für Webanwendungsentwicklung

• Folge : Vergleich interessant

• Durchgeführt an zwei Beispielanwendungen mit identischen Funktionen

Page 4: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

4Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

EinordnungEinordnung

Page 5: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

5Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Enterprise Java Enterprise Java BeansBeans (EJB) (EJB) -- KurzKurzüübersichtbersicht

• Enterprise Java Bean– Software-Komponente, keine eigenständige Applikation– Funktioniert nur in EJB-Container

• EJB-Container stellt Funktionalität zur Verfügung– Bsp.: Transaktionsverwaltung, Namensdienst, Multithreading

– Anwendung steht im Vordergrund• Programmierer kümmert sich nur um Nutzung der Techniken• Technische Implementierung übernimmt Container• Ermöglicht effektives Programmieren

• EJB Arten– Entity Beans– Session Beans

Page 6: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

6Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Enterprise Java Enterprise Java BeansBeans (EJB) (EJB) -- KurzKurzüübersichtbersicht

• Entity Beans– Bieten Zugriff auf Daten aus einer Datenbank – Repräsentiert persistent gespeicherte Daten

• Meist Datensätze

• Zwei Arten– Container Managed Persistence (CMP)

• Container verwaltet Zugriffe• Bietet Arbeitsersparnis und Geschwindigkeitsvorteile

– Bean Managed Persistence (BMP)• Bean zuständig für Laden/Schreiben der Daten• Bietet Flexibilität

Page 7: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

7Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Enterprise Java Enterprise Java BeansBeans (EJB) (EJB) -- KurzKurzüübersichtbersicht

• Session Beans– Schnittstelle zwischen Geschäftsanwendung und Client– Stellt Client Methoden zur Verfügung

• Versteckt Komplexität des Servers (Information Hiding)

• Zwei Arten– Stateful

• Speichert Zustandsinformationen über Bean Lebensdauer hinaus– Stateless

• Speichert keine Zustandsinformationen

Page 8: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

8Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Enterprise Java Enterprise Java BeansBeans –– CodebeispielCodebeispiel

Erinnert an Interface

Methoden liefern Entity Beans zurück

Page 9: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

9Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Anwendungen in der Anwendungen in der ÜÜbersicht bersicht –– Java Pet StoreJava Pet Store

Java Pet Store 3-Tier Architektur

Page 10: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

10Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Anwendungen in der Anwendungen in der ÜÜbersicht bersicht –– Java Pet StoreJava Pet Store

Page 11: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

11Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Anwendungen in der Anwendungen in der ÜÜbersicht bersicht –– Java Pet StoreJava Pet Store

• Verwendet fast alle Kern-Designpatterns von J2EE

Page 12: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

12Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Anwendungen in der Anwendungen in der ÜÜbersicht bersicht –– .NET Pet Shop.NET Pet Shop

• 3 Tier Architektur• Implementiert durch C# Klassen• Klare Trennung UI - Business Logic

– ASP.NET Web Forms für Kommunikation

• Business Komponenten greifen durch ADO.NET auf Datenbank zu

• Datenzugriffe getrennt vom Business Layer

Page 13: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

13Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Typischer Einkaufsvorgang bei beiden ProgrammenTypischer Einkaufsvorgang bei beiden Programmen

• Startbildschirm der beiden Programme

• Benutzer wählt Abteilung (Tierart) aus

• Auswahl ruft neue Seite auf

Page 14: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

14Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Typischer Einkaufsvorgang bei beiden ProgrammenTypischer Einkaufsvorgang bei beiden Programmen

• Benutzer erreicht Vogelabteilung

• Auswahl eines Tieres möglich

Page 15: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

15Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Typischer Einkaufsvorgang bei beiden ProgrammenTypischer Einkaufsvorgang bei beiden Programmen

• Detaillierte Informationen zur letzen Auswahl

• Möglichkeit Tier zu kaufen

Page 16: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

16Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Typischer Einkaufsvorgang bei beiden ProgrammenTypischer Einkaufsvorgang bei beiden Programmen

• Einkaufswagen– Kauf überprüfen– Ggf. ändern– Bestellung

abschließen

Page 17: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

17Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Vergleich Vergleich –– HintergrHintergrüünde und Geschichtende und Geschichte

Versions Übersicht• Mai 2001

– Java Pet Store • Oktober 2001

– .NET Pet Shop• Juli 2002

– Middleware Pet Store 2.0• Optimierte Version auf Geschwindigkeit und Skalierbarkeit• Ergänzt um XML basierte Web-Services und verteilte Datenbank-

Transaktionen

• September 2002– .NET Pet Shop 2.0

• Nochmals optimierte Version mit Funktionsumfang von Pet Store 2.0

• Juni 2003– .NET Pet Shop 3.0

Page 18: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

18Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Vergleich Vergleich –– Lines of Code v1.5Lines of Code v1.5

UI Tier J2EE 3x größer• J2EE

– bietet viel Beispielcode• Design Pattern • EJBs

– Organisation von Servlets/JSP´s

• .NET– nutzt ASP.NET Web

Forms und User Controls

• vereinfacht Webpage Konstruktion

• spart Codezeilen

Page 19: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

19Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Vergleich Vergleich –– Lines of Code v1.5Lines of Code v1.5

Middle Tier J2EE 6x größer• J2EE

– Design Pattern – EJBs– Methoden für

Datenbankzugriffe verschiedener Hersteller

• .NET– wenig Code da SQL

Teil im Data Tier – nur Business Logic hier

Page 20: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

20Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Vergleich Vergleich –– Lines of Code v1.5Lines of Code v1.5

Data Tier .NET 1.6x größer• J2EE

– Datenbank Code im Middle Tier (BeanManaged Persistence)

• .NET– nutzt Stored

Procedures• Bietet Performance

Steigerung• -> mehr Code

• Kern Datenbank Schema ungefähr identisch

Page 21: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

21Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Vergleich Vergleich –– Lines of Code v1.5Lines of Code v1.5

Config J2EE 45x größer• J2EE

– viel Code nötig für Java Beans Container Konfiguration

• .NET– wenig Code

Page 22: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

22Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Vergleich Vergleich –– Lines of CodeLines of Code

Version 2.0 Änderungen • Neue Funktionen

– XML basierter Web Service– Verteilte Datenbank Transaktionen

• Änderungen – Pet Shop nutzt dynamic SQL anstelle

Stored Procedures– Optimierung am Code

Veränderungen v1.5 -> v2.0• UI

– .NET ~ 45% weniger– J2EE ~ 5% weniger

• Middle Tier– .NET ~ gleich / J2EE ~15% mehr

• Data Tier– .NET ~70% weniger – J2EE ~50% weniger

• Gesamt– .NET ~40% weniger– J2EE ~ gleich

Page 23: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

23Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Vergleich Vergleich -- PerformancePerformance

• Web Application Benchmark– 2 Skripte typischer Benutzeraktionen

• Skript 1– Homepage besuchen– 3 Produkte suchen– Detailinformationen ansehen

• Skript 2– Einloggen mit Benutzeraccount– 2 Produkte suchen– Detailinformationen ansehen– Kaufvorgang abschließen– 1 Produkt suchen

Page 24: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

24Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Vergleich Vergleich -- PerformancePerformance

• Compaq Server (2-3 GB RAM) unter Windows 2000/2003 und .NET Framework 1.0/1.1

• Datenbank : Microsoft SQL Server 2000

• J2EE Application Server A (Windows 2000, Java 1.4) und B (Windows 2000 Java 1.3)

• Datenbank: Oracle 9i Server

Page 25: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

25Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Vergleich Vergleich -- PerformancePerformance

Page 26: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

26Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Kritik Kritik –– Lines of Code Lines of Code

• Zählweise

– Kommentare und Leerzeilen werden Übersprungen– Suche nach spezifischen Codefragmenten in Dateien

– HTML Dateien wurden übersprungen • oft durch Tool generiert

– XML config Dateien mitgezählt• für J2EE größer und zahlreicher als in .NET

– meist durch Tool generiert• J2EE Dateien beinhalten weitaus mehr Informationen als .NET

– Beschreibt wie EJB-Container Bean behandelt (Typ, Art, Methoden etc.)

Page 27: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

27Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Kritik Kritik –– Lines of CodeLines of Code

• Unterschiedliche Intentionen

– J2EE Pet Store dient als Referenzapplikation / Lehrbeispiel

• Beinhaltet viele Design Pattern und EJBs• Beispielcode für Entwickler• Besser wartbar und flexibler – Einfügen neuer Funktionen leichter

Page 28: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

28Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Kritik Kritik -- PerformancePerformance

• Testumgebung unklar– Microsoft stellte Rechenzentrum zur Verfügung und übernahm Kosten– J2EE auf nicht genau genannten Rechnern getestet

• Optimierung nicht ausreichend an Pet Store– Grundprogramm war nie als Benchmark gedacht

• Optimierung hat Ursprungsprogramm nicht grundlegend geändert– Microsoft Angestellter optimierte Server/Database & .NET Framework

vor Testbeginn

Page 29: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

29Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Kritik Kritik -- PerformancePerformance

• Unfaire Testbedingung– J2EE Rechner nur mit Java 1.3 anstelle 1.4 betrieben

• Angegebener Grund Server sei nicht kompatibel zu 1.4• 1.4 wäre laut Sun ~ 50% schneller wegen besserer garbage collection

– Testregeln pro .NET (caching, etc.)

• Verschiedene Intentionen– J2EE priorisiert Stabilität und Plattform- / Herstellerunabhängigkeit– .NET priorisiert Performance, nur ein Hersteller

Page 30: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

30Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Kritik Kritik -- AntiAnti--Pattern Design bei .NETPattern Design bei .NET

• Bei Multi-Tier Anwendungen muss vom obersten zum untersten Layer gearbeitet werden• Hier Aufrufe vom Service Layer auf Presentation Layer!• Gefährlich bei großen Anwendungen

Importieren aus Presentation Layer

Page 31: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

31Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Kritik Kritik –– AntiAnti Pattern Pattern DesingDesing bei .NETbei .NET

• Direkter Aufruf vom Presentation Layer– (= Kurzschluß des Service Layers)

• Item agiert als Service Objekt• Technischer Code gemixt mit Attributen• GetItem(ItemID) Methode ist statisch

– besser Factory Design Pattern nutzen

Page 32: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

32Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Kritik Kritik –– Schlechtes Design bei .NETSchlechtes Design bei .NET

• Komplette Applikation in einem Namespace(PetShop.Components)– Beinhaltet von Datenbank über Items bis zur Bestellung

alles– Schweres zurechtfinden – Nachträgliches Ändern sehr Umständlich– Ein Package und 10 Klassen

• Java Pet Store beinhaltet zahlreiche Packages und Klassen– Schnelles zurechtfinden durch intuitive Namensgebung– Nachträgliche Änderungen leicht

Page 33: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

33Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

Kritik Kritik –– Schlechtes Design bei .NET Schlechtes Design bei .NET

• Datenbank Unabhängigkeit nicht gewährleistet bei .NET Pet Shop– SQL Server stark integriert– Andere Hersteller nicht unterstützt

• Möglich durch besseres Design

• Kein Exception Handling bei .NET Pet Shop– Fundamental bei Multi Tier Anwendungen – Pet Shop übergibt Exceptions bis an Benutzer

• Verteilte Transaktion bei .NET Pet Shop zu simpel umgesetzt– OrderCOM.cs Klasse führt lediglich zwei SQL insert statements Befehle in

zwei Datenbanken aus • Ungeeignet als Referenzmodell

Page 34: Java Pet Store vs. .NET Pet Shop - Software Engineering · (PetShop.Components) – Beinhaltet von Datenbank über Items bis zur Bestellung alles – Schweres zurechtfinden – Nachträgliches

34Jörg Eggermann : Java Pet Store vs. .NET Pet Shop

ZusammenfassungZusammenfassung

J2EE Pet Store .NET Pet Shop

Vorteile • Programmieranleitung / Hilfe• Viele Codebeispiele• Gutes Design• Späteres Ändern/Einfügen

neuer Funktionen leicht• Plattform- und

Datenbankunabhängig

• Schnell• Wenig Codezeilen

Nachteile • Viele Codezeilen• Langsamer

• Schlechtes unübersichtliches Design

• Späteres Ändern/Einfügen neuer Funktionen weitgehend unmöglich

• Einzelne Kombination aus Hardware/OS/Datenbank