Java Petstore vs. .NET Petshop

Werbung
Java Pet Store vs. .NET Pet Shop
Seminar Software-Entwurf
Jörg Eggermann
<[email protected]>
Gliederung
•
•
•
•
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
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
2
Motivation
• .NET und J2EE führend für Webanwendungsentwicklung
• Folge : Vergleich interessant
• Durchgeführt an zwei Beispielanwendungen mit identischen
Funktionen
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
3
Einordnung
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
4
Enterprise Java Beans (EJB) - Kurzübersicht
• 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
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
5
Enterprise Java Beans (EJB) - Kurzübersicht
• 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
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
6
Enterprise Java Beans (EJB) - Kurzübersicht
• 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
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
7
Enterprise Java Beans – Codebeispiel
Erinnert an Interface
Methoden liefern
Entity Beans zurück
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
8
Anwendungen in der Übersicht – Java Pet Store
Java Pet Store 3-Tier Architektur
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
9
Anwendungen in der Übersicht – Java Pet Store
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
10
Anwendungen in der Übersicht – Java Pet Store
•
Verwendet fast alle
Kern-Designpatterns
von J2EE
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
11
Anwendungen in der Übersicht – .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
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
12
Typischer Einkaufsvorgang bei beiden Programmen
•
•
•
Startbildschirm der beiden
Programme
Benutzer wählt Abteilung
(Tierart) aus
Auswahl ruft neue Seite auf
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
13
Typischer Einkaufsvorgang bei beiden Programmen
•
•
Benutzer
erreicht
Vogelabteilung
Auswahl eines
Tieres möglich
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
14
Typischer Einkaufsvorgang bei beiden Programmen
•
•
Detaillierte
Informationen
zur letzen
Auswahl
Möglichkeit Tier
zu kaufen
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
15
Typischer Einkaufsvorgang bei beiden Programmen
•
Einkaufswagen
– Kauf überprüfen
– Ggf. ändern
– Bestellung
abschließen
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
16
Vergleich – Hintergründe 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 DatenbankTransaktionen
• September 2002
– .NET Pet Shop 2.0
• Nochmals optimierte Version mit Funktionsumfang von Pet Store 2.0
•
Juni 2003
– .NET Pet Shop 3.0
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
17
Vergleich – Lines 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
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
18
Vergleich – Lines 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
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
19
Vergleich – Lines of Code v1.5
Data Tier .NET 1.6x größer
• J2EE
– Datenbank Code im
Middle Tier (Bean
Managed Persistence)
•
.NET
– nutzt Stored
Procedures
• Bietet Performance
Steigerung
• -> mehr Code
•
Kern Datenbank
Schema ungefähr
identisch
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
20
Vergleich – Lines of Code v1.5
Config J2EE 45x größer
• J2EE
– viel Code nötig für
Java Beans Container
Konfiguration
•
.NET
– wenig Code
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
21
Vergleich – Lines 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
–
–
•
Middle Tier
–
•
.NET ~ gleich / J2EE ~15% mehr
Data Tier
–
–
•
.NET ~ 45% weniger
J2EE ~ 5% weniger
.NET ~70% weniger
J2EE ~50% weniger
Gesamt
–
–
.NET ~40% weniger
J2EE ~ gleich
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
22
Vergleich - Performance
• 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
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
23
Vergleich - Performance
•
•
J2EE Application Server A (Windows
2000, Java 1.4) und B (Windows 2000
Java 1.3)
Datenbank: Oracle 9i Server
•
•
Compaq Server (2-3 GB RAM) unter
Windows 2000/2003 und .NET
Framework 1.0/1.1
Datenbank : Microsoft SQL Server 2000
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
24
Vergleich - Performance
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
25
Kritik – 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.)
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
26
Kritik – Lines 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
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
27
Kritik - Performance
• 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
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
28
Kritik - Performance
• 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
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
29
Kritik - Anti-Pattern Design bei .NET
Importieren aus Presentation Layer
•
•
•
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
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
30
Kritik – Anti Pattern Desing bei .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
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
31
Kritik – Schlechtes 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
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
32
Kritik – 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
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
33
Zusammenfassung
J2EE Pet Store
Vorteile
•
•
•
•
•
Nachteile
•
•
.NET
Programmieranleitung / Hilfe •
•
Viele Codebeispiele
Gutes Design
Späteres Ändern/Einfügen
neuer Funktionen leicht
Plattform- und
Datenbankunabhängig
Viele Codezeilen
Langsamer
•
•
•
Pet Shop
Schnell
Wenig Codezeilen
Schlechtes unübersichtliches
Design
Späteres Ändern/Einfügen
neuer Funktionen weitgehend
unmöglich
Einzelne Kombination aus
Hardware/OS/Datenbank
Jörg Eggermann : Java Pet Store vs. .NET Pet Shop
34
Herunterladen