java pet store vs. .net pet shop - software engineering · (petshop.components) – beinhaltet von...
TRANSCRIPT
Java Pet Store vs. .NET Pet Shop Java Pet Store vs. .NET Pet Shop
Seminar Software-EntwurfJörg Eggermann
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
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
4Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
EinordnungEinordnung
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
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
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
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
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
10Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
Anwendungen in der Anwendungen in der ÜÜbersicht bersicht –– Java Pet StoreJava Pet Store
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
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
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
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
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
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
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
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
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
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
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
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
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
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
25Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
Vergleich Vergleich -- PerformancePerformance
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.)
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
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
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
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
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
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
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
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