NET vs. J2EE: In welche Plattform investieren?
Transcription
NET vs. J2EE: In welche Plattform investieren?
.NET vs. J2EE: In welche Plattform investieren? IEX 2003 | Seminar d-9 Donnerstag, 6. Februar 2003 Andreas Göldi, CEO, namics ag Jürg Stuker, CTO, namics ag Frankfurt, Hamburg, Konstanz, St.Gallen, Zug, Zürich www.namics.com team–based net solutions Agenda » Einführung » Evaluationskriterien – Kosten – Architektur – Plattformneutralität – Plattformreife – Skalierbarkeit – Der „Sprachenstreit“ » Fazit und Ausblick © namics Seite 1 Einführung Die lange Geschichte der IT-Konflikte: z.B. Mainframe vs. Client/Server vs. © namics Seite 2 Die lange Geschichte der IT-Konflikte: z.B. OS/2 vs. Windows vs. Ist J2EE vs. .NET wirklich wieder so eine wichtige Entscheidung? » Ja, denn... – es geht um beträchtliche IT-Investitionen – es geht um den Kern jeder modernen IT-Strategie – diese beiden Plattformen beherrschen schon jetzt 85% der geplanten Applikationsinvestitionen – die Entscheidung wird jahrelange Konsequenzen für jedes Unternehmen haben © namics Seite 3 Keine Äpfel mit Birnen vergleichen! » „Java“ist eine sehr umfassende Spezifikation. Implementiert wird diese durch alle namhaften Softwarehersteller (ausser Microsoft) » „.NET“ist eine Basisframework und Produktfamilie des einen Herstellers Microsoft » Eigentlich „SUN ONE“vs „Microsoft .NET“, da J2EE nur eine Gruppe von Java Standards zusammenfasst --> Im folgenden sind die Begriffe J2EE, Java und SUN ONE synonym genutzt. – http://www.sun.com/software/sunone/ – http://www.microsoft.com/net/ J2EE (Java 2 Enterprise Edition) ist nur ein Teil von SUN ONE Java 2 Enterprise Edition (J2EE) Java 2 Standard Edition (J2SE) Java 2 Micro Edition Java Language HotSpot © namics JVM KVM Card VM Seite 4 .NET: Neuste Stufe der Microsoft-Plattform-Evolution Web services 2002 Internet Client/ server Standalone PC 2000 1998 1994 1990 .NET 1988 Windows DNA Windows MS-DOS Quelle: Gartner .NET ist ein Framework und ein Schwall von Serversoftware und SW-Produkten VB C++ C# JScript … Common Language Specification ASP.NET Windows Forms ADO.NET and XML Base Class Library Common Language Runtime Windows © namics COM+ Services Seite 5 Gemeinsamkeiten (Web Browser Client) » 3-Tier-Architektur Presentation Layer » Komponentenorientiert, optimiert für verteilte Architekturen Business Logic Layer » Netzwerkorientierung: Internet als zentrale Infrastruktur Data Layer » Web-Browser als primäres User Interface; „Rich Clients“als sekundäres User Interface Sind die beiden überhaupt vergleichbar? J2EE: Plattform-Spezifikation .NET: Basis-Framework, Gruppe von Produkten Sprache: Java Sprachen: C#, VB, C++, ... Toolhersteller: Sun, BEA, IBM, Oracle, Borland, ... Toolhersteller: Microsoft Komponentenmodell: (Enterprise) Java Beans Komponentenmodell: .NET (Web) Services/COM+ Betriebssystem: fast alle Betriebssystem: Windows ð Die Ansätze sind sehr verschieden, aber das grundsätzliche Ziel ist gleich: wichtigste Plattform für Applikationsentwicklung werden. © namics Seite 6 Evaluationskriterien Kriterien für die Evaluation Möglichkeiten Kosten » Entwicklung von E-BusinessAnwendungen und „klassischer“ Unternehmensanwendungen » Neue Arten von Anwendungen, z.B. Web Services » » » » Plattform-Investitionen Ausbildungskosten Entwicklungskosten Pflegekosten für Applikationen Äusseres Umfeld » » » » Reifegrad Skalierbarkeit/ Ausbaufähigkeit Verfügbarkeit von Entwicklern und Support Auswahl an Produkten Unternehmensinternes Umfeld » Bestehendes Know-How » Bisherige IT-Strategie © namics Seite 7 Möglichkeiten: Kurz im Überblick » Grundsätzlich: Beide gleichermassen geeignet für Entwicklung anspruchsvoller Applikationen » Differenzierungsfaktoren: J2EE .NET » Herstellerunabhängigkeit » Plattformunabhängigkeit: „Write once, run anywhere“ » Alles aus einer Hand » Web Services voll eingebaut à Integration über Internet » Sprachunabhängigkeit Die Kostensituation © namics Seite 8 Typische Kostenaufteilung für grosse Entwicklungsprojekte Kosten KapitalInvestitionen: Systeme, Softwarelizenzen Entwicklungskosten 50-60% Pflege 1. Jahr Pflege 2. Jahr Pflege 3. Jahr 20-35% 20-35% 20-35% 15-20% Zeit ð Die Initialinvestitionen machen nur einen relativ geringen Teil der Gesamtkosten aus. ð Wichtiger sind eine effiziente Entwicklung und Verringerung der Pflegekosten! Quelle: Gartner, namics Research Kapitalinvestitionen J2EE .NET Hardware Diverse, von IntelPCs bis High-EndUnix-Servern Intel-PCs Betriebssystem Diverse Derzeit nur Windows Application Server Von versch. Herstellern, eher teuer integriert Tools verschiedenste Visual Studio .NET ð Kein eindeutiger Vorteil für eine der Plattformen ð Möglicher Kostentreiber bei J2EE: Application Server-Lizenzen. Oft auch anspruchsvollere Hardware erforderlich © namics Seite 9 Entwicklungskosten J2EE .NET Nötiger Skill-Level der Entwickler (=Lohnkosten) Hoch Mittel; höher für komplexere .NETAnwendungen Entwicklerproduktivität Anfangs eher gering, steigend Von Anfang an recht hoch, steigt aber langsamer Verfügbarkeit von Entwicklern Eher knapp Relativ gut, da auch mit VB etc. benutzbar. Kosten für externe Dienstleister Hoch Mittel ð 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 Java-Regionen. Maintenance-Kosten J2EE System-Stabilität mittel bis hoch .NET mässig bis mittel Pflegefreundlichkeit komplex, daher oft „pragmatische“ der Applikationen nicht immer optimal Architektur, daher schwierig Wiederverwertbarkeit von Code hoch traditionell recht gering, sollte mit .NET steigen Erweiterungsfreundlichkeit hoch traditionell eher gering, sollte mit .NET steigen ð 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 10 Kostensituation: Fazit » J2EE: – Eher für grosse, langfristig angelegte Projekte geeignet – Rentabilität wird langfristig durch niedrigere Pflegekosten und bessere Wiederverwertbarkeit erreicht. » Microsoft .NET – Eignet sich besser für Projekte mit kurzen Payback-Zeiträumen – Dafür: langfristige Pflege eher aufwendiger – Tatsächliche Konsequenzen aller neuen Elemente schwer vorhersagbar Verfügbarkeit von Entwicklern Anzahl Programmierer weltweit Visual Basic 3Mio 2Mio COBOL C++ 1Mio Java C# ? 2000 2001 2002 2003 Quelle: Gartner 2004 2005 ð Die Verfügbarkeit von Entwicklern für die jeweiligen Kernsprachen ist grundsätzlich gut, mit Ausnahme von C#. ð Externer Support ebenfalls bei beiden ausreichend vorhanden. © namics Seite 11 Entwickler: Wie beschaffen und ausbilden? » Lohnkosten: – Erfahrene Java-Entwickler kosten ca. 30-50% mehr als äquivalente Entwickler im Microsoft-Umfeld. » Fortbildungskosten (Schätzungen): Vorhandene Skills C++ C++ VB/ASP VB/ASP VB/ASP Dauer bis volle Produktivität, Schulungskosten Ca. 4 Monate, 25-35kCHF Ca. 3 Monate, 20-30kCHF Ca. 8 Monate, 35-50kCHF Ca. 6 Monate, 30-40kCHF Ca. 4 Monate, 20-30kCHF Zielskills Java/J2EE .NET mit C# Java/J2EE .NET mit C# .NET mit VB Quelle: Gartner, namics Research Die Architektur © namics Seite 12 Architekturübersicht J2EE Business Partners Fat Clients (Applets: Swing, AWT) SOAP, ebXML etc. Light Client (Webbrowser) RMI over IIOP FIREWALL Servlet Small Clients Mobile, PDA etc. HTTP HTTP Java Server Pages (JSP) Enterprise Javabeans (EJB) JDBC Connector API JVM SQL ??? Datenbanksystem SOAP, ebXML etc. Legacy Systeme Business Partners Light Client (Webbrowser) Small Clients Mobile, PDA etc. Architekturübersicht .NET Business Partners Fat Clients (win32, Win Forms) SOAP, ebXML etc. HTTP HTTP HTTP FIREWALL ASP.NET .NET Managed Components ADO.NET Host Integration Server.NET CLR SOAP „Dienste“ © namics SQL, OLE DB Datenhaltung ??? Legacy Systeme SOAP, ebXML etc. Business Partners Seite 13 Architekturdetail: Integration von Serviceobjekten .NET .NET Client .NET Objekt A .NET Objekt B Komponente für A (COM+ in Wrapper) Komponente für B (COM+ in Wrapper) managed (.NET) unmanaged com+ J2EE Java Client EJB Session A EJB Session A JAAS JNDI Java Mail JMS JTA/JTS RMI/IIOP managed Die Basisklassen © namics Seite 14 .NET Framework Namespace System.Web System.WinForms Services Description UI HtmlControls Discovery Protocols WebControls Design ComponentModel System.Drawing Caching Security Drawing2D Printing Configuration SessionState Imaging Text System.Data System.Xml ADO SQL XSLT Design SQLTypes XPath Serialization System Collections IO Security Configuration Net ServiceProcess Diagnostics Globalization Reflection Resources Text Threading Runtime InteropServices Remoting Serialization Mögliche Entsprechungen bei J2EE für den .NET Framework Namespace System.Web Services Description System.WinForms UI HtmlControls Design ComponentModel Applet / Swing / AWT Discovery WebControls Servlet / JSP Protocols System.Drawing Caching Security Drawing2D Configuration SessionState Imaging System.Data ADO Design Printing Java 2D Text System.Xml SQL XSLT SQLTypes XPath JDBC Serialization JAXP System © namics Collections IO Security Configuration Net ServiceProcess Diagnostics Globalization Reflection Resources Java Core API Text Threading Runtime InteropServices Remoting Serialization Seite 15 Alles Klassen-APIs von J2EE Demokratie bei JAVA: Der Community Process (http://jcp.org/) © namics Seite 16 Und der Entscheidungsprozess bei Microsoft ;-) Aber auch: http://research.microsoft.com/ Web Services © namics Seite 17 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 offenen W3C-Standards ð Begriff wurde von Microsoft für .NET geprägt, Web Services basieren aber auf offenen Standards und sind darum in beiden Welten verfügbar. Der bekannteste Web Service: Microsoft Passport » Zentrale UserverwaltungsInfrastruktur für dezentrale Anwendungen » Stark gestützt von Microsoft mit Hotmail, Windows XP und anderen Produkten » Integriert in alle Microsoft Entwicklungsumgebungen und Server » War zentraler Baustein der .NET My Services (Hailstorm)-Strategie » Microsoft begegnet Kritik mit Versuch einer Dezentralisierung © namics Seite 18 Web Services: Bewertung Vorteile: Nachteile: » Vielversprechender Ansatz für die Vernetzung im und zwischen Unternehmen » Noch sehr unreife Technologie » Denkbare neue Businessmodelle: Leistungen als kostenpflichtige Web Services anbieten » Basiert auf offenen Standards, daher universell einsetzbar » Viele Fragen offen: Performance, Sicherheit, Interoperabilität, ... » Echter Nutzen entsteht erst, wenn entsprechende Geschäftsprozesse vorhanden sind » Unklare Businessmodelle ð Web Services dürften vor 2003/04 kaum eine echte Bedeutung für missionskritische Anwendungen erlangen. Experimente lohnen sich aber jetzt schon. ð Microsoft hat einen gewissen Vorsprung, der aber kaum lang anhalten dürfte. Plattformneutralität © namics Seite 19 .NET = Windows und J2EE = alles? » Mit Rotor gibt es eine Betaversion der C# und JScript.NET Compilers und der CLI (Common Language Infrastructure) für Open 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.go-mono.com/ versucht das gesamte .NET Framework als Open Source für Linux zu implementieren. » Auch kommerzielle Anbieter implementieren das .NET Framework: http://www.stryon.com/products.asp » Die Clientseite ist faktisch fast ausschliesslich Windows Java WORA (write once run anywhere)? » Die Java Virtual Machine stellt die Kompatibilität sicher... » Aber: „Zusatzfunktionen“bei J2EE Server reduzieren Portierbarkeit – Clustering – Load Balancing mit Session Failover – Deployment-Mechanismen – etc. » Softwareverteilung bei Java: Nicht immer so automatisch wie versprochen... © namics Seite 20 „Öffnung“von .NET? » Standardisierung von zwei zentralen Elementen bei ECMA gemeinsam mit HP und Intel » C# – http://www.ecma.ch/ecma1/STAND/ecma-334.htm » CLI (Common Language Infrastructure) – http://www.ecma.ch/ecma1/STAND/ecma-335.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) » » » » » » » » » » » » » » » » » © namics ATG BEA Systems Borland Corp. BroadVision Brokat Cape Clear Software Compaq DataDirect Technologies Fujitsu Fujitsu Siemens Computers Hewlett-Packard 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ür Version 1.3 Seite 21 Die Plattformreife Java gibt es seit 1995 © namics Seite 22 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++, and OSF Distributed Computing Environment (DCE) – 1993: First public release of COM as part of OLE 2.0 SDK » 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 guten Webbrowser… Skalierbarkeit © namics Seite 23 Die Skalierbarkeits-Legende (1 von 2) » Gängiges Vorurteil: Microsoft nicht geeignet für grosse e-Business-Systeme, Java schon. ð J2EE-Hersteller stellen sich bisher keinem objektiven Benchmark! ð Auch noch keine Angaben für neue .NET-Plattform, erst „alte“MS-Technologie. Die Skalierbarkeits-Legende (2 von 2) » Diverse sehr grosse Installationen auch auf MS-Plattformen: ð Auf beiden Plattformen lassen sich hochskalierbare Anwendungen bauen, vergleichbaren Aufwand und Skill-Levels vorausgesetzt. © namics Seite 24 Zwei Kinder streiten: Der Pet Store » Pet Store ist eine Referenzanwendung von SUN zum Einsatz der J2EE Technologie (http://developer.java.sun.com/developer/relea ses/petstore/) » Die Anwendung war nie als Benchmark aber als Lernbeispiel für gedacht -- dennoch würde Pet Store von Oracle für 9i aber dazu verwendet… Implementing Sun’ s Java Petstore with Microsoft .NET 17 500 1750 0 14,273 1500 0 15 000 .NET Pet Pet Shop Shop J2EE J2E E Pet Pet Store Store 10 ,00 0 10,000 7500 5,891 5,891 5 5000 000 2,566 863 1,881 Total Lines of of Code Code User User Interface Tier Interface Tier 684 Middle Tier Tier 412 Data Data Tier 56 56 Config Config Response Time vs. User Load 1.2 P er Pa ge Avg. Response Time (sec onds) … und vergleicht gegen einen bestehenden Test mit Oracle9iAS (dann ging es weiter). 5,404 3,484 25 00 2500 » Im November 2001 implementiert Microsoft einen funktional identischen PetStore in .NET Technologie … Lines of Code Required 12 500 1250 0 1 .NE T Resp onse Time with Out put Caching 0.8 0.6 .NE T Resp onse Time with no Output Caching 0.4 J2E E Re sponse Time 0.2 0 0 500 1000 1500 200 0 2500 3000 3500 4000 User Load Quellen: http://www.gotdotnet.com/team/compare/ und http://www.middleware-company.com/j2eedotnetbench/ Der „Sprachenstreit“ © namics Seite 25 Der „Sprachenstreit“ » J2EE baut auf einer einzigen Sprache auf: Java » .NET ist von Grund auf mehrsprachig konstruiert – C# als neue (wichtigste) Sprache als ECMA-33 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 (da gibt auch für JavaVM verschiedene Sprachen) sondern die Interoperabilität auf Klassenebene während der Laufzeit (ohne Linking). – Dazu haben alle .NET Sprachen das selbe Typensystem und 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 Java class HelloWorld{ public static void main(String[] args){ for(int ii= 1; ii <= 100; ii++) System.out.println(" Hallo, " + ii + " mal."); } } © namics Seite 26 Java vs C# » Java und alle (managed) .NET-Sprachen sind typen- und pointersicher » Java und C# sind objektorientiert » Aus Java und alle .NET-Sprachen wird bei der Kompilation ein plattformneutraler 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 der Zwischencode für die JVM auf Interpretation ausgelegt – ist isolierter als die .NET-Sprachen von Betriebssystem als .NET bspw. 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? » Programmierer-Religion oder in gewissen Anwendungsfällen eine optimale Auswahl (Technology Follows Function) » .NET lässt das Zusammenspiel zwischen un- und sicherem Code 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 27 Fazit und Ausblick Zusammenfassung .NET J2EE » Architektur – Alt und neu aber alles drin – „Perfekt“, evt. zu sauber » Basisklassen – Eher knapp dafür übersichtlich – Sehr mächtig, hoher Lernaufwand » Plattformneutralität – Serverseite: Kommt evt. – Serverseite: Ja, bewiesen – Clientseite: Favorit – Clientseite: Ohne Erfolg » Maturität – Jung, Schlau und Flink – Bewährt mit viel Energie » „Sprachenstreit“ – Handlungsfreiraum © namics – Eher eine Einschränkung Seite 28 Applikationsportfolio und Entwicklungstechnologien: die nächsten drei Jahre Stabilität der Technologie Microsoft Web-Techn. „klassisch“ Missionskritische, Host und stabilitätsorientierte Trad. C/S Entwicklungsarbeit .NET J2EE Java bisher Innovationsprojekte Komplexität/Wichtigkeit des Systems Welche Plattform einsetzen? » Fast alle grösseren Unternehmen werden in den nächsten Jahren beide Welten parallel einsetzen. – Desktop-Welt/PC-Server: Microsoft-zentriert – Enterprise-Applikationen: 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, serviceorientierte Softwareinfrastrktur © namics Seite 29 Wichtigste Aufgaben für IT-Management » Entscheidend: Klare Definition der strategischen Hauptplattform, dort Hauptinvestitionen konzentrieren » Typische Migrationspfade: – Microsoft VB / ASP à .NET – Unix, C++, CORBA, Java à J2EE » Kriterien für projektspezifische Technologiewahl aufstellen – Taktische Ausnahmen zulassen, aber begründet » Integrationsfähigkeit in jedem Projekt sicherstellen 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! andreas.goeldi@namics.com juerg.stuker@namics.com Frankfurt, Hamburg, Konstanz, St.Gallen, Zug, Zürich www.namics.com © namics team–based net solutions Seite 30