Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
© namics Seite 1
Frankfurt, Hamburg, Konstanz, St.Gallen, Zug, Zürich
team–based net solutionswww.namics.com
.NET vs. J2EE: In welche Plattform investieren?IEX 2003 | Seminar d9
Donnerstag, 6. Februar 2003
Andreas Göldi, CEO, namics agJürg Stuker, CTO, namics ag
Agenda
» Einführung
» Evaluationskriterien– Kosten– Architektur– Plattformneutralität– Plattformreife– Skalierbarkeit– Der „Sprachenstreit“
» Fazit und Ausblick
© namics Seite 2
Einführung
Die lange Geschichte der ITKonflikte:z.B. Mainframe vs. Client/Server
vs.
© namics Seite 3
Die lange Geschichte der ITKonflikte:z.B. OS/2 vs. Windows
vs.
Ist J2EE vs. .NET wirklich wieder so einewichtige Entscheidung?
» Ja, denn...– es geht um beträchtliche ITInvestitionen– es geht um den Kern jeder modernen ITStrategie– diese beiden Plattformen beherrschen schon jetzt
85% der geplanten Applikationsinvestitionen– die Entscheidung wird jahrelange Konsequenzen
für jedes Unternehmen haben
© namics Seite 4
Keine Äpfel mit Birnen vergleichen!
» „Java“ist eine sehr umfassende Spezifikation.Implementiert wird diese durch alle namhaftenSoftwarehersteller (ausser Microsoft)
» „.NET“ist eine Basisframework und Produktfamiliedes einen Herstellers Microsoft
» Eigentlich „SUN ONE“vs „Microsoft .NET“, da J2EEnur eine Gruppe von Java Standards zusammenfasst> Im folgenden sind die Begriffe J2EE, Java undSUN ONE synonym genutzt.
– http://www.sun.com/software/sunone/– http://www.microsoft.com/net/
J2EE (Java 2 Enterprise Edition) ist nur einTeil von SUN ONE
HotSpot JVM KVM
Java Language
Java 2Enterprise
Edition(J2EE)
Java 2StandardEdition(J2SE)
Java 2 Micro Edition
Card VM
© namics Seite 5
.NET: Neuste Stufe derMicrosoftPlattformEvolution
MSDOS
Windows
Windows DNA
.NET
Standalone
PC
Client/server
Internet
Webservices
19901994
19982000
2002
1988
Quelle: Gartner
.NET ist ein Framework und ein Schwallvon Serversoftware und SWProdukten
Windows COM+ Services
Common Language Runtime
Base Class Library
ADO.NET and XML
ASP.NET Windows Forms
Common Language Specification
VB C++ C# JScript …
© namics Seite 6
Gemeinsamkeiten
» 3TierArchitektur
» Komponentenorientiert,optimiert für verteilte Architekturen
» Netzwerkorientierung:Internet als zentrale Infrastruktur
» WebBrowser als primäres User Interface;„Rich Clients“als sekundäres User Interface
Presentation Layer
Business Logic Layer
Data Layer
(Web Browser Client)
Sind die beiden überhaupt vergleichbar?
J2EE:PlattformSpezifikation
.NET:BasisFramework,
Gruppe von Produkten
Sprache:Java
Betriebssystem:fast alle
Komponentenmodell:(Enterprise) Java Beans
Toolhersteller:Sun, BEA, IBM, Oracle, Borland, ...
Sprachen:C#, VB, C++, ...
Betriebssystem:Windows
Komponentenmodell:.NET (Web) Services/COM+
Toolhersteller:Microsoft
ð Die Ansätze sind sehr verschieden, aber das grundsätzliche Ziel ist gleich:wichtigste Plattform für Applikationsentwicklung werden.
© namics Seite 7
Evaluationskriterien
Kriterien für die Evaluation
Kosten» PlattformInvestitionen» Ausbildungskosten» Entwicklungskosten» Pflegekosten für Applikationen
Möglichkeiten» Entwicklung von EBusiness
Anwendungen und „klassischer“Unternehmensanwendungen
» Neue Arten von Anwendungen,z.B. Web Services
Äusseres Umfeld» Reifegrad» Skalierbarkeit/ Ausbaufähigkeit» Verfügbarkeit von Entwicklern und Support» Auswahl an Produkten
Unternehmensinternes Umfeld» Bestehendes KnowHow» Bisherige ITStrategie
© namics Seite 8
Möglichkeiten: Kurz im Überblick
» Grundsätzlich:Beide gleichermassen geeignet für Entwicklunganspruchsvoller Applikationen
» Differenzierungsfaktoren:
J2EE» Herstellerunabhängigkeit» Plattformunabhängigkeit:
„Write once, run anywhere“
.NET» Alles aus einer Hand» Web Services voll eingebautà Integration über Internet
» Sprachunabhängigkeit
Die Kostensituation
© namics Seite 9
Typische Kostenaufteilung für grosseEntwicklungsprojekte
Quelle: Gartner, namics Research
KapitalInvestitionen:
Systeme,Softwarelizenzen
1520%
Entwicklungskosten
5060% Pflege1. Jahr
2035%
Pflege2. Jahr
2035%
Pflege3. Jahr
2035%
ð Die Initialinvestitionen machen nur einen relativ geringen Teil derGesamtkosten aus.
ð Wichtiger sind eine effiziente Entwicklung und Verringerung der Pflegekosten!
Kosten
Zeit
Kapitalinvestitionen
Visual Studio .NETverschiedensteTools
integriertVon versch.Herstellern, eherteuer
Application Server
Derzeit nurWindows
DiverseBetriebssystem
IntelPCsDiverse, von IntelPCs bis HighEndUnixServern
Hardware
.NETJ2EE
ð Kein eindeutiger Vorteil für eine der Plattformenð Möglicher Kostentreiber bei J2EE: Application ServerLizenzen. Oft auch
anspruchsvollere Hardware erforderlich
© namics Seite 10
Entwicklungskosten
MittelHochKosten für externeDienstleister
Relativ gut, da auchmit VB etc.benutzbar.
Eher knappVerfügbarkeit vonEntwicklern
Von Anfang an rechthoch, steigt aberlangsamer
Anfangs ehergering, steigend
Entwicklerproduktivität
Mittel; höher fürkomplexere .NETAnwendungen
HochNötiger SkillLevelder Entwickler(=Lohnkosten)
.NETJ2EE
ð J2EE verursacht in der Entwicklung tendenziell die höheren Kosten.ð Der Einstieg bei .NET ist leichter und billiger, für anspruchsvolle Projekte
steigen die Kosten aber in JavaRegionen.
MaintenanceKosten
traditionell ehergering, sollte mit.NET steigen
hochErweiterungsfreundlichkeit
traditionell rechtgering, sollte mit.NET steigen
hochWiederverwertbarkeit von Code
oft „pragmatische“Architektur, daherschwierig
komplex, dahernicht immer optimal
Pflegefreundlichkeitder Applikationen
mässig bis mittelmittel bis hochSystemStabilität
.NETJ2EE
ð In Bezug auf Erweiterbarkeit und Wiederverwendbarkeit hat J2EE klare Vorteile;.NET ist den Beweis hier noch schuldig.
ð Systemstabilität: Bei Microsoft oft geringer durch vermiedenen Wartungsaufwand
© namics Seite 11
Kostensituation: Fazit
» J2EE:– Eher für grosse, langfristig angelegte Projekte
geeignet– Rentabilität wird langfristig durch niedrigere
Pflegekosten und bessere Wiederverwertbarkeiterreicht.
» Microsoft .NET– Eignet sich besser für Projekte mit kurzen
PaybackZeiträumen– Dafür: langfristige Pflege eher aufwendiger– Tatsächliche Konsequenzen aller neuen
Elemente schwer vorhersagbar
Verfügbarkeit von Entwicklern
COBOL
Visual Basic
C++
Java1Mio
2Mio
3Mio
2000 2001 2002 2003 2004 2005
C# ?
AnzahlProgrammierer
weltweit
Quelle: Gartner
ð Die Verfügbarkeit von Entwicklern für die jeweiligen Kernsprachen istgrundsätzlich gut, mit Ausnahme von C#.
ð Externer Support ebenfalls bei beiden ausreichend vorhanden.
© namics Seite 12
Entwickler: Wie beschaffen und ausbilden?
» Lohnkosten:– Erfahrene JavaEntwickler kosten ca. 3050% mehr als äquivalente
Entwickler im MicrosoftUmfeld.
» Fortbildungskosten (Schätzungen):
VB/ASP Java/J2EECa. 8 Monate, 3550kCHFVB/ASP .NET mit C#Ca. 6 Monate, 3040kCHFVB/ASP .NET mit VBCa. 4 Monate, 2030kCHF
VorhandeneSkills ZielskillsDauer bis volle Produktivität, Schulungskosten
C++ Java/J2EECa. 4 Monate, 2535kCHFC++ .NET mit C#Ca. 3 Monate, 2030kCHF
Quelle: Gartner, namics Research
Die Architektur
© namics Seite 13
Datenbanksystem
Architekturübersicht J2EE
Fat Clients(Applets: Swing, AWT)Business Partners Light Client
(Webbrowser)Small Clients
Mobile, PDA etc.
F I R E W A L L
JVM
Servlet Java Server Pages (JSP)
Enterprise Javabeans (EJB)
Legacy Systeme Business Partners
SOAP,ebXML etc.
RMI overIIOP
HTTP HTTP
??? SOAP,ebXML etc.
SQL
Connector APIJDBC
„Dienste“ Datenhaltung
Architekturübersicht .NET
Fat Clients(win32, Win Forms)Business Partners Light Client
(Webbrowser)Small Clients
Mobile, PDA etc.
F I R E W A L L
CLR
ASP.NET
Legacy Systeme Business Partners
.NET Managed Components
SOAP,ebXML etc.
HTTP HTTP HTTP
??? SOAP,ebXML etc.
SQL, OLE DBSOAP
Host IntegrationServer.NETADO.NET
© namics Seite 14
.NET Objekt A
.NET Objekt B managed(.NET)
Architekturdetail:Integration von Serviceobjekten
.NET Client
.NET
Komponente für A(COM+ in Wrapper)
unmanagedcom+
Komponente für B(COM+ in Wrapper)
EJB Session A
EJB Session A
managed
Java Client
J2EE
RM
I/IIOP
JTA/JTS
JMS
Java Mail
JND
I
JAAS
Die Basisklassen
© namics Seite 15
.NET Framework Namespace
System
System.Data System.Xml
System.Web
GlobalizationDiagnosticsConfigurationCollections
ResourcesReflectionNetIO
ThreadingTextServiceProcessSecurity
DesignADO
SQLTypesSQL
XPathXSLT
RuntimeInteropServicesRemotingSerialization
Serialization
Configuration SessionStateCaching Security
ServicesDescriptionDiscoveryProtocols
UIHtmlControlsWebControls
System.Drawing
ImagingDrawing2D
TextPrinting
System.WinForms
Design ComponentModel
Mögliche Entsprechungen bei J2EE für den.NET Framework Namespace
System
System.Data System.Xml
System.Web
GlobalizationDiagnosticsConfigurationCollections
ResourcesReflectionNetIO
ThreadingTextServiceProcessSecurity
DesignADO
SQLTypesSQL
XPathXSLT
RuntimeInteropServicesRemotingSerialization
Serialization
Configuration SessionStateCaching Security
ServicesDescriptionDiscoveryProtocols
UIHtmlControlsWebControls
System.Drawing
ImagingDrawing2D
TextPrinting
System.WinForms
Design ComponentModel
Servlet / JSP
JDBC JAXP
Java Core API
Applet / Swing / AWT
Java 2D
© namics Seite 16
Alles KlassenAPIs von J2EE
Demokratie bei JAVA: Der CommunityProcess (http://jcp.org/)
© namics Seite 17
Und der Entscheidungsprozess beiMicrosoft ;)
Aber auch: http://research.microsoft.com/
Web Services
© namics Seite 18
Web Services: Übersicht
» Elemente– Aufruf von Softwarekomponenten auf entfernten
Servern: SOAP (XML plus HTTP[s])– Schnittstellen und Methodenbeschreibung:
WSDL– Verzeichnisdienst: UDDI
» Funktioniert im verteilten Umfeld:– Im Unternehmen (LAN/WAN)– Zwischen Unternehmen per Internet
» Definiert von Microsoft, basierend auf offenenW3CStandards
ð Begriff wurde von Microsoft für .NET geprägt, Web Services basieren aber aufoffenen Standards und sind darum in beiden Welten verfügbar.
Der bekannteste Web Service:Microsoft Passport
» Zentrale UserverwaltungsInfrastruktur für dezentraleAnwendungen
» Stark gestützt von Microsoft mitHotmail, Windows XP undanderen Produkten
» Integriert in alle MicrosoftEntwicklungsumgebungen undServer
» War zentraler Baustein der .NETMy Services (Hailstorm)Strategie
» Microsoft begegnet Kritik mitVersuch einer Dezentralisierung
© namics Seite 19
Web Services: Bewertung
Vorteile:
» Vielversprechender Ansatz für dieVernetzung im und zwischenUnternehmen
» Denkbare neue Businessmodelle:Leistungen als kostenpflichtigeWeb Services anbieten
» Basiert auf offenen Standards,daher universell einsetzbar
Nachteile:
» Noch sehr unreife Technologie
» Viele Fragen offen: Performance,Sicherheit, Interoperabilität, ...
» Echter Nutzen entsteht erst, wennentsprechende Geschäftsprozessevorhanden sind
» Unklare Businessmodelle
ð Web Services dürften vor 2003/04 kaum eine echte Bedeutung fürmissionskritische Anwendungen erlangen. Experimente lohnen sich aber jetztschon.
ð Microsoft hat einen gewissen Vorsprung, der aber kaum lang anhalten dürfte.
Plattformneutralität
© namics Seite 20
.NET = Windows und J2EE = alles?
» Mit Rotor gibt es eine Betaversion der C# und JScript.NETCompilers und der CLI (Common Language Infrastructure) fürOpen BSD Unix von Microsoft als Shared Source.
– Get Your Rotor Running:http://research.oreilly.com/pub/a/dotnet/2002/03/27/gettingstarted.html
– Uncovering Rotor A Shared Source CLI:http://research.oreilly.com/pub/a/dotnet/2002/03/04/rotor.html
» http://www.gomono.com/ versucht das gesamte .NETFramework als Open Source für Linux zu implementieren.
» Auch kommerzielle Anbieter implementieren das .NETFramework: http://www.stryon.com/products.asp
» Die Clientseite ist faktisch fast ausschliesslich Windows
Java WORA (write once run anywhere)?
» Die Java Virtual Machine stellt dieKompatibilität sicher...
» Aber: „Zusatzfunktionen“bei J2EE Serverreduzieren Portierbarkeit
– Clustering– Load Balancing mit Session Failover– DeploymentMechanismen– etc.
» Softwareverteilung bei Java: Nicht immer soautomatisch wie versprochen...
© namics Seite 21
„Öffnung“von .NET?
» Standardisierung von zwei zentralen Elementen beiECMA gemeinsam mit HP und Intel
» C#– http://www.ecma.ch/ecma1/STAND/ecma334.htm
» CLI (Common Language Infrastructure)– http://www.ecma.ch/ecma1/STAND/ecma335.htm
» Baldige Übernahme durch ISO angestrebt– ISO/IEC 23270 (C#)– ISO/IEC 23271 (CLI)– ISO/IEC 23272 (CLI TR)
Autorisierte Lizenznehmer von J2EE(http://java.sun.com/j2ee/licensees.html)
» ATG» BEA Systems» Borland Corp.» BroadVision» Brokat» Cape Clear Software» Compaq» DataDirect Technologies» Fujitsu» Fujitsu Siemens
Computers» HewlettPackard» Hitachi» IBM» Interworld» IONA Technologies» Macromedia» MERANT
» NEC» Nokia» Oracle Corporation» Persistence Software, Inc.» Pramati» SAP» SAS Institute, Inc.» Secant» SilverStream» Sonic Software
Corporation» SpiritSoft» SUN» Sybase, Inc.» TIBCO Software Inc.» Tmax Soft» Trifork Technologies rot/bold =
zertifiziert fürVersion 1.3
© namics Seite 22
Die Plattformreife
Java gibt es seit 1995
© namics Seite 23
und Microsoft gibt es seit…
» Microsoft = COM (aus Präsentation von Don Box)– 1988: Seed work for COM began inside MS.
Influenced by prior work done in Smalltalk, C++, andOSF Distributed Computing Environment (DCE)
– 1993: First public release of COM as part of OLE 2.0SDK
» Wer war des erste? Ist kaum wichtig.
» Aber:– Wer kennt die Kundenbedürfnisse?– Wer agiert am geschicktesten?– Wer verkauft sich besser?– etc.
» Oder: Wer war der Erste mit einem gutenWebbrowser…
Skalierbarkeit
© namics Seite 24
Die SkalierbarkeitsLegende (1 von 2)» Gängiges Vorurteil:
Microsoft nicht geeignet für grosse eBusinessSysteme, Java schon.
ð J2EEHersteller stellen sich bisher keinem objektiven Benchmark!ð Auch noch keine Angaben für neue .NETPlattform, erst „alte“MSTechnologie.
Die SkalierbarkeitsLegende (2 von 2)
» Diverse sehr grosse Installationen auch auf MSPlattformen:
ð Auf beiden Plattformen lassen sich hochskalierbare Anwendungen bauen,vergleichbaren Aufwand und SkillLevels vorausgesetzt.
© namics Seite 25
Zwei Kinder streiten: Der Pet Store
» Pet Store ist eine Referenzanwendung vonSUN zum Einsatz der J2EE Technologie(http://developer.java.sun.com/developer/releases/petstore/)
» Die Anwendung war nie als Benchmark aberals Lernbeispiel für gedacht dennoch würdePet Store von Oracle für 9i aber dazuverwendet…
» Im November 2001 implementiert Microsofteinen funktional identischen PetStore in .NETTechnologie …
… und vergleicht gegen einen bestehendenTest mit Oracle9iAS (dann ging es weiter).
Quellen: http://www.gotdotnet.com/team/compare/ undhttp://www.middlewarecompany.com/j2eedotnetbench/
1500015000
75007500
10,00010,000
50005000
25002500
1750017500
1250012500
Implementing Sun’s Java Petstore with Microsoft .NETImplementing Sun’s Java Petstore with Microsoft .NET
J2EE Pet StoreJ2EE Pet Store
Lines of Code Required
UserUserInterface TierInterface Tier
3,4843,484
Data TierData TierMiddle TierMiddle Tier
1,8811,881
.NET Pet Shop.NET Pet Shop
14,27314,273
5,8915,891
ConfigConfigTotal LinesTotal Linesof Codeof Code
863863
5,4045,404
684684 412412 5656
2,5662,566
Response Time vs. User Load
0
0.2
0.4
0.6
0.8
1
1.2
0 500 1000 1500 2000 2500 3000 3500 4000
User Load
Per
Pag
e A
vg. R
espo
nse
Tim
e (s
econ
ds)
.NET Response Timewith Output Caching
.NET Response Timewith no OutputCaching
J2EE Response Time
Der „Sprachenstreit“
© namics Seite 26
Der „Sprachenstreit“
» J2EE baut auf einer einzigen Sprache auf: Java
» .NET ist von Grund auf mehrsprachig konstruiert– C# als neue (wichtigste) Sprache als ECMA33 Standard
anerkannt (http://www.ecma.ch/)– VB.NET (eigtl. Visual Basic 7), Managed C++, JScript.NET– weitere Sprachen von Microsoft oder von Drittanbietern:
J#, PERL, APL, COBOL, Eiffel, Fortran, Haskell etc.
» Die Herausforderung ist nicht der Bytecode Compiler (dagibt auch für JavaVM verschiedene Sprachen) sonderndie Interoperabilität auf Klassenebene während derLaufzeit (ohne Linking).
– Dazu haben alle .NET Sprachen das selbe Typensystemund nutzen die selbe Basisklassen
Hallo
// Ich bin C++#include <iostream.h>int main(){for(int ii = 1; ii <= 100; ii++)
cout <<"Hallo, " << ii << " mal. " << '\n';}
// Ich bin C#using System;class HelloWorld{static void Main(){for(int ii = 1; ii <= 100; ii++)
Console.WriteLine(" Hallo, {0} mal. ", ii);}
}
// Ich bin Javaclass HelloWorld{public static void main(String[] args){
for(int ii= 1; ii <= 100; ii++)System.out.println(" Hallo, " + ii + " mal.");
}}
© namics Seite 27
Java vs C#
» Java und alle (managed) .NETSprachen sind typen undpointersicher
» Java und C# sind objektorientiert
» Aus Java und alle .NETSprachen wird bei der Kompilation einplattformneutraler Zwischencode (Bytecode resp. MSIL)erzeugt
» Die virtuellen Maschine resp. der JIT unterscheiden sich stark:– Java
– war ursprünglich für clientseitige Applets gedacht und daher ist derZwischencode für die JVM auf Interpretation ausgelegt
– ist isolierter als die .NETSprachen von Betriebssystem als .NETbspw. Speicherzugriffe
– .NET Sprachen– werden durch die CLR ausschliesslich kompiliert (verschiedenen
Compiler JIT, EconoJIT und NGen und Übersetzungszeitpunkte)– http://students.infoiasi.ro/~microsoft/articole/download/
virtual_machines.pdf
Braucht es mehrere Sprachen?
» ProgrammiererReligion oder in gewissen Anwendungsfälleneine optimale Auswahl (Technology Follows Function)
» .NET lässt das Zusammenspiel zwischen un und sicheremCode zu und ermöglich somit modulare Migrationen
class TestClass{static unsafe void PerformOperation (int* x){
*x = 99;}
public static unsafe void Main(){
int a = 1;System.Console.WriteLine("before a:"+a);PerformOperation (&a);System.Console.WriteLine("after a:"+a);
}}
© namics Seite 28
Fazit und Ausblick
Zusammenfassung
.NET
» Architektur– Alt und neu aber alles drin
» Basisklassen– Eher knapp dafür übersichtlich
» Plattformneutralität– Serverseite: Kommt evt.– Clientseite: Favorit
» Maturität– Jung, Schlau und Flink
» „Sprachenstreit“– Handlungsfreiraum
J2EE
– „Perfekt“, evt. zu sauber
– Sehr mächtig, hoher Lernaufwand
– Serverseite: Ja, bewiesen– Clientseite: Ohne Erfolg
– Bewährt mit viel Energie
– Eher eine Einschränkung
© namics Seite 29
Applikationsportfolio und Entwicklungstechnologien: die nächsten drei Jahre
Stabilitätder Technologie
Komplexität/Wichtigkeit des Systems
Innovationsprojekte
Missionskritische,stabilitätsorientierteEntwicklungsarbeit
Host undTrad. C/S
Javabisher
MicrosoftWebTechn.„klassisch“
J2EE.NET
Welche Plattform einsetzen?
» Fast alle grösseren Unternehmen werden inden nächsten Jahren beide Welten paralleleinsetzen.
– DesktopWelt/PCServer: Microsoftzentriert– EnterpriseApplikationen: Immer mehr Java
» Integrationsfähigkeit wird zum Schlüssel– Grosse Hoffnung auf Web Services– Aber: Bisher wenig gute Antworten zur
Integration von Legacy Systems
» Langfristige Vision:Plattformunabhängige, serviceorientierteSoftwareinfrastrktur
© namics Seite 30
Wichtigste Aufgaben für ITManagement
» Entscheidend:Klare Definition der strategischen Hauptplattform,dort Hauptinvestitionen konzentrieren
» Typische Migrationspfade:– Microsoft VB / ASPà .NET– Unix, C++, CORBA, Javaà J2EE
» Kriterien für projektspezifische Technologiewahlaufstellen
– Taktische Ausnahmen zulassen, aber begründet
» Integrationsfähigkeit in jedem Projekt sicherstellen
Frankfurt, Hamburg, Konstanz, St.Gallen, Zug, Zürich
team–based net solutionswww.namics.com
Vielen Dank für Ihre Aufmerksamkeit!Seminarunterlagen: http://www.namics.com/knowledge
Besuchen Sie uns am Stand 145 in der Halle 5 und gewinnen Sie!
[email protected]@namics.com