Java EE vs. MS .NET Java Platform Enterprise Edition vs. Microsoft .NET 1 Januar 2009 1/30 Java EE vs. MS .NET Einführung Überblick Entwicklungsgeschichte Java Platform, Enterprise Edition Microsoft .NET Java EE vs. .NET: Gemeinsamkeiten und Unterschiede Entscheidung Integrationstechniken Marktforschung Java EE vs. MS .NET Microsoft macht seit einigen Jahren mit der Softwareplattform .NET der Java Platform Enterprise Edition Konkurrenz Beide wollen zukünftiger Standard für die Entwicklung web-basierter Anwendungen sein. ● ● Wer macht das Rennen? 2 Januar 2009 2/30 Einführung Mit der Software-Plattform .NET macht Microsoft nun schon seit einigen Jahren der Java Platform Enterprise Edition (J2EE bzw. Java EE) Konkurrenz. Beide Technologien verfolgen das Ziel, den zukünftigen Standard für die Entwicklung web-basierter Anwendungen zu stellen und sind tatsächlich die beiden Marktführer in diesem Bereich. Die Wahl der passenden Projekt-Plattform ist somit häufig eine Entscheidung zwischen .NET und Java EE. Wer macht aber das Rennen? Java EE vs. MS .NET Gliederung ● Überblick beider Plattformen ● Gemeinsamkeiten und Unterschiede ● IT-Markt ● Beurteilung 3 Januar 2009 3/30 Gliederung Erst einmal werden wir einen kurzen Überblick über die beiden Plattformen geben, um danach genauer auf Gemeinsamkeiten und Unterschiede eingehen zu können, die bei der Entscheidungsfrage .NET vs. Java EE eine Rolle spielen. Zuletzt werden wir den aktuellen IT-Markt in Deutschland studieren, um dann mit weiteren Analysen die Position der beiden zu beurteilen. Java EE vs. MS .NET 4 Januar 2009 4/30 Überblick / Entwicklungsgeschichte Microsoft .NET und Java EE sind Software-Plattformen, mit denen komplexe Unternehmensanwendungen, so genannte EnterpriseApplikationen, realisiert werden. .NET wurde im Jahr 2000 erstmals von Bill Gates angekündigt und erlangte 2002 Marktreife. Die Java Plattform war zu diesem Zeitpunkt schon drei Jahre verfügbar; die Edition 1.0 kam bereits im Dezember 1999 auf den Markt. Die aktuellste Version ist Java Platform, Enterprise Edition 5 (Java EE 5) aus dem Jahr 2006. Der neue Name Java EE ersetzt die vorherige Abkürzung J2EE (Java 2 Platform, Enterprise Edition). Das Release der neuesten .NET Version 3.5 ist seit November 2007 auf dem Markt und im August 2008 durch das SP1 erweitert worden. Im September 2008 gab Microsoft erstmals Informationen zum zukünftigen .NET Framework 4.0 bekannt. 1 NGWS: Microsoft begann mit der Entwicklung des .NET Frameworks in den späten 1990ern, ursprünglich unter dem Namen der Next Generation Windows Services (NGWS). 3 .NET Framework 4.0: Microsoft gab Informationen zum .NET Framework 4.0 erstmals am 29. September 2008 und auf der diesjährigen Professional Developers Conference (PDC 2008) bekannt. (Obwohl noch keine genauen Details über die zukünftige Version bekannt wurden, sind einige allgemeine Informationen über die Pläne des Unternehmens veröffentlicht worden. So sollen Parallelrechner in .NET 4.0 stärker unterstützt werden, insbesondere Systeme mit Mehrkernprozessoren oder Systeme, die auf verteiltes Rechnen ausgelegt sind. Weiterhin existieren Pläne, Verfahren wie wie PLINQ (Parallel LINQ) zu integrieren, sowie die Task Parallel Library (TPL), die die Parallelverarbeitung über Methodenaufrufe und Delegaten ermöglicht. Darüberhinaus hat Microsoft bekanntgegeben, eine Untermenge des .NETFrameworks und von ASP.NET im Microsoft Windows Server Core zu unterstützen.) Java EE vs. MS .NET Java Platform Enterprise Edition ● Spezifikation ● Modulares Komponentenmodell ● Basiskomponenten: Java Servlet, JavaServer Pages, Enterprise JavaBeans, ... ● Herstellerunabhängig (→ Sun Microsystems) ● Sprachabhängig: Java 5 Januar 2009 5/30 Java Platform Enterprise Edition Die Java Platform, Enterprise Edition (Java EE) stellt kein eigenständiges Produkt dar, vielmehr wird darunter ein allgemeiner Rahmen, also eine Spezifikation einer Softwarearchitektur für die transaktionsbasierte Ausführung von in Java programmierten Anwendungen und insbesondere Web-Anwendungen verstanden. Java EE bezeichntet also keine konkrete Implementierung, sondern einen Standard der auf Basis eines standardisierten modularen Komponentenmodells mehrschichtige, portable, skalierbare und stabile Business-Anwendungen realisiert, bzw. unternehmensweite und unternehmensübergreifende Anwendungen (Enterprise Applications) erstellt. Die Basiskomponenten sind dabei z.B. Java Servlet, JavaServer Pages (JSP) oder Enterprise JavaBeans (EJB). Geprägt und weiterentwickelt wurde die Java EE-Technologie durch ein Hersteller-Konsortium (IBM, Oracle, BEA, …) unter der Führung von Sun Microsystems. Im Gegensatz zu .NET ist Java EE herstellerunabhängig und läuft auf fast allen Betriebssystemen. Java EE vs. MS .NET Java Platform Enterprise Edition ● ● Hohe Verfügbarkeit, Sicherheit und Skalierbarkeit der verteilten Anwendung Spezifikation gewährleistet Interoperabilität zwischen Softwarekomponenten unterschiedlicher Hersteller → Java Community Process (JCP) 6 Januar 2009 6/30 Die Java EE-Ablaufumgebung sorgt für hohe Verfügbarkeit, Sicherheit und Skalierbarkeit der verteilten Anwendung. Die klar definierten Schnittstellen zwischen den Komponenten und Containern sorgen dafür, dass Softwarekomponenten unterschiedlicher Hersteller interoperabel sind, wenn sie sich an die Spezifikation halten. Bestandteile der Spezifikation werden innerhalb des Java Community Process (JCP) von diversen Unternehmen erarbeitet und schließlich der Öffentlichkeit in Form eines Dokuments und einer Referenzimplementierung zur Verfügung gestellt. Java EE vs. MS .NET Java Platform Enterprise Edition ● Implementierungen können von Sun für die jeweilige Version zertifiziert werden → Kompatibilität der Anwendungen / Portierung ist gewährleistet 7 Januar 2009 7/30 Eine Implementierung des Java-EE-Standards kann zusätzlich von Sun für die jeweilige Version zertifiziert werden. Dadurch wird die grundsätzliche Kompatibilität der Anwendungen zwischen den Servern bestätigt, d.h. Eine Portierung einer Anwendung auf andere Java EEApplication-Server ist gewährleistet. Java EE vs. MS .NET 8 Januar 2009 8/30 Implementierungen: Komplette Java EE-Server 4 Unter Nutzer findet sich die Anzahl der Unternehmen und Organisationen, die den jeweiligen Server lizenziert oder, im Falle von JBoss, einen Wartungsvertrag abgeschlossen haben. JBoss schätzt, dass es insgesamt 10.000 Nutzer der JBoss Enterprise Application Platform gibt. Java EE vs. MS .NET Java Platform Enterprise Edition ● Separate Web-Container (Servlet-/JSP-Container): Apache Tomcat, Caucho Technology Resin, Enhydra Server, Jetty ● Separate EJB-Container: Apache OpenEJB 9 Januar 2009 9/30 Neben den Implementierungen kompletter Java EE-Server gibt es natürlich auch Implementierungen separater Webund EJB-Container: Separate Web-Container (Servlet-/JSP-Container): Apache Tomcat, Caucho Technology Resin, Enhydra Server, Jetty (alle Open Source) Separate EJB-Container: Apache OpenEJB (Open Source) Java EE vs. MS .NET Java Platform Enterprise Edition Tier-Architektur ● Laufzeitumgebung: Java EE-Applikationsserver und verschiedene Services (Transaktionen, Security, Namens- und Verzeichnisdienste, Persistenz-Mechanismen) ● Web-Container (unterstüzt Servlets und Java Server Faces) ● Remoting-Methoden, Schnittstellen zu Messaging Middleware ● Management: Java Management Extension 10 Januar 2009 10/30 Schichtenarchitektur von Java EE: Die Java EE-Umgebung dient zur Entwicklung verteilter Geschäftsanwendungen. Ein Java EE-Applikationsserver stellt dabei die Laufzeitumgebung für Softwarekomponenten (dies umfasst Lifecycle Management und Deployment) sowie verschiedene Services (Transaktionen, Security, Namens- und Verzeichnisdienste, Persistenz-Mechanismen) zur Verfügung. Weiter wird ein Web-Container angeboten, der Unterstützung für Servlets und Java Server Faces bietet. Das Komponentenframework ist explizit auf verteilte Komponenten ausgelegt und bietet entsprechende Remoting-Methoden und Schnittstellen zu Messaging Middleware (JMS) sowie Webservices an. Das Management von Komponenten erfolgt über die standardisierte Java Management Extension. Java EE vs. MS .NET 11 Januar 2009 11/30 Komplexe Webapplikationen werden häufig in drei sogenannte Tier unterteilt: Client Tier: Client-Komponenten (Browser, …) → Interaktion mit dem Middle Tier über definierte Protokolle (HTTP, ...) Middle Tier: J2EE Server und die Container → Interaktion u.a.über JNDI (JNDI: Java Naming an Directory Interface: Namens- und Verzeichnisdienst: Bekanntmachen und Auffinden von JavaObjekten im Netz) Enterprise Information System (EIS) Tier: Legacy-Systeme und Datenbanken → Datenbankzugriff vom Middle Tier per JDBC (JDBC: Java Database Connectivity: API für Datenbakverbindung insb. zu relationalen Dbs (Java APIs: (Application Programming Interface: Programmierschnittstelle))) Servlets, JSP: JavaServer Pages: Generieren von dynamischen Webinhalt EJB: Enterprise Java Beans: Serverseitige Komponentenarchitektur, Rahmen für Datenbankzugriff und Geschäftslogik RMI (IIOP): Remote Method Invocation (Internet Inter-ORB Protocol): Entfernter Methodenaufruf Java EE vs. MS .NET Java 2 Platform Enterprise Edition 5 Neuerungen in Java EE 5 (ehemals J2EE): wesentliche Vereinfachungen ● Statt komplexer Konfigurationsdateien Java-Annotationen ● „Convention over Configuration“: voreingestellte Vorgaben ● Dependency Injection ● Unterstützung Aspect-orientierter Programmierung ● JPA (Java Persistence API) 12 Januar 2009 12/30 Java EE 5 Java EE 5 bietet einige signifikante Neuerungen, die die Entwicklung dieser Klasse von Applikationen aus der Sicht des Programmierers wesentlich unkomplizierter gestalten. Nicht nur deshalb ist Java EE 5 eines der bedeutendsten Enterprise Java releases seit Langem. Mit dieser neuen, einfacheren Herangehensweise an Enterprise Java Software-Entwicklung wurde auf die Kritik von Entwicklerseite reagiert: - Statt komplexen Konfigurationsdateien kommen nun JavaAnnotationen zum Einsatz. - Parallel kommt das «Convention over Configuration»-Paradigma zur Anwendung; also die Idee, dass das System vernünftige Vorgaben macht, mit denen man schnell und leicht starten kann und diese nur ändert, wenn es wirklich erforderlich ist. Im Gegensatz dazu standen umfangreiche Konfigurationen bei früheren Versionen. - Es wird Dependency Injection unterstützt – ein Pattern, das flexibles Lifecycle-Management, Wiederverwendbarkeit und Konfiguration von Komponenten erlaubt. - Dank Unterstützung Aspekt-orientierter Programmierung wird es leichter, Funktionen wie Security, Logging oder Transaktionen, die viele Teile einer Anwendung betreffen, unabhängig von bestimmten Modulen zu entwickeln und wiederzuverwenden. - JPA, also die Java Persistence API, wird unterstützt. Dank dieser Modifikationen ist die Verwendung von Java EE erheblich einfacher. Java EE vs. MS .NET Microsoft .NET ● Proprietär, an Windows angepaßt ● Sprachunabhängig (C# und mehr als 20 Sprachen) ● .NET Framework: einheitliche Laufzeitumgebung (CLR, Klassenbibliotheken, Subsysteme (ASP.NET) ● Technische Basis: Windows Server und Visual Studio .NET ● Quelltext veröffentlicht, aber keine freie Lizenz ● Seit Windows Vista integraler Bestandteil des Betriebssystems 13 Januar 2009 13/30 Als Alternative zu Java EE führte Microsoft die .NET-Plattform ein, eine im Gegensatz zum herstellerbeziehungsweise plattformübergreifenden Java- System proprietäre und nur an Windows angepasste Architektur. Als primäre Systemsprache für .NET fungiert das Java-ähnliche C#, das die Vorteile von JAVA und C++ in sich vereint. Zurzeit können .NET-Anwendungen in mehr als 25 Sprachen erstellt werden, z. B. in C++, Microsoft Visual Basic .NET, Jscript und eine Vielzahl weiterer Sprachen von Drittanbietern wie COBOL, Eiffel, Perl, Python und Smalltalk. .NET ist eine Kombination aus den Komponenten .NET Framework, Web Services und .NET Enterprise Server. Die Entwicklungsgrundlage bildet das .NET Framework, welches sich aus drei Kernelementen zusammensetzt: eine einheitliche Laufzeitumgebung (CLR), Klassenbibliotheken und Subsysteme zur Entwicklung von Lösungen wie ASP.NET (Active Server Pages) Laufzeitumgebung (CLR, Common Language Runtime): Zur Laufzeit ist die CLR für die Verwaltung des Speichers, für den Start und Stopp von Prozessen, für die Durchsetzung der Sicherheitsmechanismen und für die Bezüge auf andere Komponenten verantwortlich. Klassenbibliotheken: Die Klassenbibliotheken sind übersichtlich in Namensräumen (Namespaces) aufgeteilt (äquivalent zu PackageKonzept in Java) und dienen der übersichtlichen Organisation der Framework-Klassen (.NET Framework Classes: Sammlung von Funktionen zur Anwendungsentwicklung). Es werden zusammengehörige Klassen zu logischen Gruppen zusammengefasst. Bspw. lässt die Bibliothek System.Web.Services erkennen, dass die darin enthaltenen Klassen sich auf bestimmte Dienstleistungen für das Web beziehen. Die Bibliotheken des Frameworks selbst sind bereits als vorkompilierte Version auf dem Rechner vorhanden sind und müssen damit nicht beim Programmstart neu kompiliert werden. Die vereinheitlichten Klassen stellen eine konsistente Methode für den Zugriff auf die Funktionen der Plattform zur Verfügung und machen es überflüssig, zum Schreiben von Anwendungen verschiedene API-Architekturen zu kennen und zu beherrschen. Die technische Basis für .NET bilden der "Windows Server 2003" und die Entwicklungsumgebung "Visual Studio .NET". Seit dem 17. Januar 2008 ist der Quelltext großer Teile des Frameworks zum "erleichtertem Debugging" für Entwickler verfügbar. Allerdings unter der restriktiven Microsoft Reference License, also nicht unter einer freien Lizenz. Im Gegensatz zu Java ist es nicht erlaubt, den Quellcode zu modifizieren oder in andere Projekte zu integrieren. Microsoft gestattet lediglich die Einsicht des Quellcodes zur Unterstützung des Debugging-Prozesses in Projekten. Dank der Veröffentlichung des Quelltextes lassen sich in IT-Projekten im Fehlerfall zumindest präzisere Workarounds schreiben. Seit Windows Vista (November 2006) ist .NET integraler Bestandteil des Betriebssystems, bisher gab es .NET als optionales Add-on. Java EE vs. MS .NET 14 Januar 2009 14/30 CLR / CIL – Basisprinzip: Die Common Language Runtime (CLR) ist die Laufzeitumgebung von .NET und stellt somit den Interpreter für den standardisierten Zwischencode, der Common Intermediate Language (CIL). Die CIL hieß früher Microsoft Intermediate Language (MSIL), wurde aber im Rahmen der Standardisierung durch die ECMA umbenannt. Für sie wurde ein sprachübergreifendes System von objektbasierten Datentypen definiert, so dass alle Hochsprachen, die sich an den CLI-Standard (Common Language Infrastructure) halten, in gültigen CIL-Bytecode kompiliert werden können. Die benötigten Programmteile (Ausführbare Dateien und Bibliotheken) werden bereits vor der Ausführung durch die Common Language Runtime (CLR) in reine Maschinensprache übersetzt und erst dann ausgeführt. Dabei wird die Maschinensprache entsprechend dem Prozessor optimiert. Das Ergebnis ist ein schnelles Laufzeitverhalten, das in einigen wenigen Bereichen sogar an Maschinenkompilierte C++ Programme heranreichen kann. Java EE vs. MS .NET ● ● Sprachenvielfalt: nicht nur Vorteile → geringere Wartbarkeit Plattformunabhängigkeit unter .NET: grundsätzlich möglich - Shared Source CLI (Rotor): eingeschränkte offene Implementierung - Mono: Open Source Nachbau des .NET Frameworks - dotGNU-Pojekt: Portable.NET 15 Januar 2009 15/30 Java EE vs. .NET: Gemeinsamkeiten und Unterschiede In dieser Tabelle haben wir noch einmal die Hauptunterschiede der beiden Platformen, die beide Marktführer sind, zusammengestellt. 5 Die Hauptunterschiede zwischen Java EE und .NET definieren sich in der Laufzeitkomponente und in der Sprachenvielfalt. Die Unterstützung gemischtsprachiger Programmierung von .NET wird dabei oft als Vorteil gegenüber Java EE gesehen, ist aber nicht unumstritten, da die Wartbarkeit eines Projektes, welches in mehreren Sprachen implementiert wurde, geringer ist als bei der Entwicklung mit nur einer Sprache. Wiederverwendung bestehenden Entwicklerwissens wird zwar durch die Sprachunabhängigkeit erleichtert, es bleibt jedoch fraglich, ob diese Funktionalität innerhalb eines IT-Projekts immer von Vorteil ist, da es ohnehin bestehende Kommunikationsprobleme nicht vereinfachen kann. 6 Eigentlich ist die .NET-Plattform propietär, dennoch ist Plattformunabhängigkeit auch unter .NET grundsätzlich möglich. Microsoft selbst hatte 2002 eine abgespeckte (und nicht mehr aktuelle) .NET-Variante namens Shared Source CLI (Codename Rotor) für Mac und FreeBSD zur Verfügung gestellt. Rotor ist eine offene Microsoft-Implementierung der CLI und C# auf Basis der CLR von .NET, jedoch kein vollwertiger Ersatz für .NET, da zum einen die Nutzung einschränkt ist, also nicht kommerziell sein darf, und zum anderen wichtige Bibliotheken fehlen (Windows Forms, ADO.NET, ASP.NET und Web Services). Der Hauptzweck ist Forschung und Test der .NET-Technologie. Open-Source-Projekte haben sich einer Implementierung auf Grundlage des ECMA-Standards angenommen. Die beiden wohl am weitesten entwickelten Projekte sind Mono und das dotGNU-Projekt. Mono ist ein von Novell unterstütztes Projekt für UNIX, ein kompletter Open Source Nachbau (keine Portierung!) des .NET Frameworks, das vom Hersteller Ximian initiiert wurde, entwickelt einen Compiler und eine Laufzeitumgebung für Nicht-Windows-Plattformen (Linux/Unix, MacOS). Die Klassenbibliothek unterstützt ASP.NET und ADO.NET. Mittlerweile gibt es Versionen für Linux, Windows, Solaris, FreeBSD und Mac OS. Das dotGNU-Projekt arbeitet an einer Portable.NET genannten Laufzeitumgebung. Beide Implementierungen sind jedoch noch nicht auf dem Entwicklungsstand des heutigen .NET. Java EE vs. MS .NET Gemeinsamkeiten mit Unterschieden: .NET ist kein neues Konzept, sondern viele, gute Fremdkonzepte in einer neuen Lösung Januar 2009 16 16/30 In dieser Tabelle vergleichen wir noch einmal einige Elemente der beiden Plattformen. Wir finden viele prinzipielle Gemeinsamkeiten, die sich dann widerum in Details unterscheiden. Beide basieren je auf Client- und Serverseite auf einem Komponentenmodell. Die Laufzeitumgebung stellt in Java EE die JVM und in .NET die CLR. Die JVM benutzt JIT oder auch Interpreter, die CLR benötigt immer JIT. Beide benutzen einen Zwischencode. Javas Bytecode in Java-Archiven, .NETs intermediate Language in Assemblies. Javas Bytecode wird interpretiert, .NET setzt auf Performative Kompilation. Bei Java Ees Objektmodell finden wir einfache Typen und Klassen, wobei .NET nur Klassen verwendet. 7 Vergleicht man die sogenannten Namespaces (die Namensgebungen der einzelnen Bibliotheken innerhalb des Frameworks) mit den Namen von Java-Packages, findet man durchaus Parallelen. Das .NET Framework ist nämlich keine Entwicklung eines neuartigen Konzepts, sondern die Zusammenfassung vieler guter Fremdkonzepte in einer neuen Lösung. 8 So läuft auch die verteilte Kommunikation ähnlich und ist bei beiden einfach nutzbar. 9 Beide unterstützen Web Services.Bei Java EE stehen alle notwendigen Komponenten zur Verfügung. WebServices sind jedoch nicht das zentrale Element der Architektur. Bei .NET ist die komplette Entwicklung auf das Web-Services-Konzept ausgerichtet, jedoch mit proprietären Elementen. 10 Auf der Clientseite stellen beide Technologien (Java Applets und Microsoft ActiveX) in Webseiten ausführbaren Programmcode dar. ActiveX Controls dienen jedoch spezifisch dazu, Eigenschaften der MS-Betriebssysteme über das Web nutzbar zu machen (kein wirklicher Internet-Standard). Die Sicherheitseigenschaften sind wesentlich geringer als die von Java-Applets. Java EE vs. MS .NET Microsofts Marktposition gegen den frei implementierbaren Java-Sandard → Kann es nur einen geben? Deutliche technische Unterschiede → Einzelfallentscheidung! 17 Januar 2009 17/30 Entscheidung Microsofts Marktposition gegen den frei implementierbaren Standard Java EE: Kann es nur einen geben? Zwar ist .NET ein Produkt von einem einzigen Hersteller und keine Spezifikation, also keine offene Plattform, allerdings ist bei Microsoft nicht zu erwarten, daß sie morgen den Markt verlassen. Bei allen Parallelitäten, technisch unterscheiden sich beide IT-Architekturen deutlich, eine eindeutige Entscheidung für eine der beiden Plattformen läßt sich auf der technischen Ebene nicht fällen. Das bedeudet, je nach Projekt sollte immer eine Einzelfallentscheidung getroffen werden. Java EE vs. MS .NET Integrationstechniken ● WebServices ermöglichen Zweisamkeit ● Integration von .NET- und Java EE-Applikationen 18 Januar 2009 18/30 Integrationstechniken Die starke Konkurrenz zwischen Java EE und Microsoft .NET ist für die Weiterentwicklung und ständige Verbesserung der beiden sehr förderlich. Das Gewicht der beiden brachte zudem die Idee hervor, beide miteinander zu verknüpfen. Da sich beide auf Grund der WebServices auch gut miteinander verbinden lassen, spricht nichts gegen eine Zweisamkeit. Tool-Anbieter bieten verschiedene Lösungen an, .NET- und Java EE- Applikationen ineinander zu integrieren. Von Bedeutung sind dabei diese zwei Varianten: Integration des Presentation-Tier von .NET mit dem Middle-Tier von Java EE oder die Integration des Middle-Tier von .NET mit dem von Java EE jeweils mit Hilfe einer MOM (message oriented middleware) Als Beispiel sei Janeva genannt: Die Software ermöglicht es, .Net-Anwendungen in Java EE-Umgebungen zu integrieren. Sie funktioniert als Plug-In für Entwicklungsumgebungen, wie Microsoft Visual Studio.net oder Borland C#Builder. Java EE vs. MS .NET IT-Marktstudie auf www.gulp.de ● ● GULP: Internet Jobbörse mit Marktstudien-Tool 65.000 Kandidaten, 2.000 Unternehmen, 600.000 Projekte (→ Marktabdeckung 90%) Position von Java EE und .NET im deutschen IT-Projektmarkt? 19 Januar 2009 19/30 Marktforschung Technisch ist keine eindeutige Entscheidung möglich, wie aber sieht es der Markt? Anhand einer kleinen Marktstudie wollen wir zunächst versuchen, die Positionen von Java EE und .NET im deutschen ITProjektmarkt einzuschätzen. Dazu haben wir im Internet -Portal von GULP (www.gulp.de) eine Studie durchgeführt. GULP ist eine Internet-Jobbörse für IT-Freiberufler, die 1996 gegründet wurde und als wichtige Quelle für die Besetzung von ITProjekten mit externen Spezialisten im deutschsprachigen Raum gesehen werden darf. Abgesehen von den Dienstleistungen der Jobvermittlung bietet GULP in seinem umfassenden Online-Portal auch die Möglichkeit eigene Marktstudien zu erstellen. Die Studie schöpft also aus den Daten von 65.000 in GULP registrierten Kandidaten (IT-Freiberufler, die zum Teil auch nach Festanstellung suchen), über 2.000 Unternehmen und 600.000 abgewickelten Projektangeboten. Mit 65.000 registrierten ITFreiberufler wird eine Marktabdeckung über 90% erreicht. Java EE vs. MS .NET ● Anteil Java EE Projekte höher ● .NET holt auf 20 Januar 2009 20/30 Anhand unserer kleinen Marktstudie wollen wir sehen, wie Microsoft, der den Internet-Boom der 90er zunächst verschlafen hatte, gegenüber den bewährten JavaStandard aufholt. Noch ist zwar der Anteil der Java EE- Projekte höher, aber wie die Grafik zeigt, schrumpft der Abstand der Projektanteile zwischen den beiden Skills seit 2006 langsam aber sicher. 2006 hatten beide noch von der besseren wirtschaftlichen Lage profitiert, aber im letzten Jahr (2008) fiel Java bedrohlich ab. Möglicherweise hängt diese Entwicklung mit der aktuellen Wirtschaftskrise zusammen, .NET jedoch konnte sich immerhin noch auf den Werten des Vorjahres halten. Die Annäherung der beiden zueinander zeigt aber auch die schöne Aufholjagt von .NET. Andererseits kann sie auch auf eine Stabilisierung in guter Zweisamkeit der beiden Plattformen hindeuten. Java EE vs. MS .NET .NET stärker im Süden nachgefragt ● Erhöhter Java EE-Bedarf in der Region Frankfurt a. M. ● ● Stundensatz 2008: Java EE = 70,36 €, .NET = 64,76 € Januar 2009 21 21/30 IT-Freiberufler mit Qualifikationen in .NET oder Java EE werden bundesweit von Unternehmen gesucht, tendenziell wird aber externes .NET Know-how im Süden der Republik (Postleitzahlgebiete 8, 9) aber etwas stärker nachgefragt, wie der Blick auf die regionale Verteilung der Projektanfragen im Jahr 2008 zeigt: In der Bankenregion Frankfurt am Main (Postleitzahlgebiet 6) ist die Nachfrage nach .NET dagegen eher verhalten; hier ist der Bedarf an Java EE-Experten höher. Branchen, die sich bevorzugt in den Einzugsgebieten mit erhöhtem Bedarf an .NET und Java EE-Experten befinden, sind neben Banken und Finanzdienstleistern u.a. Automobil-Industrie, IT/EDV, Telekommunikation und Versicherungen. Interessant ist noch der durchschnittliche Stundensatz für Selbständige aus dem letzten Jahr (2008): Während Java EE-Qualifikationen einen Stundensatz von 70,36 € erzielen, bringt .NET-Wissen nur 64,76€. Java EE vs. MS .NET Gartner Inc.: ● ● IT-Marktforschung, USA Magic-Quadrants: Positionierung nach Führer, Visionär, Herausforderer und Nischenakteur → hier: Magic Quadrant für Enterprise Application Servers, 2. Quartal 2008 22 Januar 2009 22/30 Wie beurteilt Gartner die Situation? Die 1979 gegründete Gartner Group, seit 2001 Gartner Inc. ist ein riesiger Anbieter für Marktforschung und Analyse in der weltweiten Technologie-Industrie mit Hauptsitz in Stamford (Connecticut), USA. Zur Visualisierung der Ergebnisse der Marktanalysen setzt Gartner unter anderem sogenannte Magic-Quadrants ein. Magic-Quadrants stellen dar, wie bestimmte Anbieter sich nach von Gartner definierten Kriterien innerhalb des Marktes positionieren. Die Positionierung erfolgt in einem der vier Quadranten: Führer, Visionär, Herausforderer und Nischenakteure. Hier haben wir den Magic Quadrant für Enterprise Application Servers für das 2. Quartal von 2008: Wie man sieht, gehört .NET (Microsoft) neben den durch IBM, Oracle, Bea uns Jboss vertretenen Java EE zu den Marktführern der Enterprise Application Servers. Java EE vs. MS .NET Gartner: „Java and .NET: You Can't Pick a Favorite Child“ 23 Januar 2009 23/30 Im Jahr 2006 hat Gartner in einer Gegenüberstellung von Java EE und .NET festgestellt, daß es keinen Favoriten gibt. „Java and .NET: You Can't Pick a Favorite Child“ Darin stellt Gartner verschiedene Stärken und Schwächen der beiden Plattformen fest. Die Stärke des einen ist oft wieder die Schwäche des anderen und andersherum, was die Entscheidung zwischen den beiden Plattformen erschwert und letztendlich für jedes Projekt eine Einzelfallentscheidung fordert. Die hohe Flexibilität bei Java EE schränkt zwar die Produktivität zu Beginn eines Projektes erst einmal ein. Dafür ist man bei .NET bei schnelleren Entwicklungserfolgen wesentlich unflexibler. Java EE vs. MS .NET Marktunterteilung: Hohe Komplexität und Skalierbarkeit→Java EE Schnellere Produkteinführungszeit, höhere RAD-Anforderung→.NET Große Unternehmen → Java EE-Plattform Kleine Unternehmen →.NET-Plattform Januar 2009 24 24/30 Die typische Marktverteilung von Java EE und .NET sieht so aus: Bei Projekten mit hoher Komplexität und Skalierbarkeit ist Java EE die erste Wahl Ist eine schnellere Produkteinführungszeit und höhere RAD-Produktivität gefordert, bevorzugt man .NET. (RAD: Rapid Application Development) Während die Java-Plattform mit Zunahme der Unternehmensgröße verstärkt zum Einsatz kommt, ist die .NET-Plattform bei kleiner-werdenden Unternehmen stärker verbreitet. Java EE vs. MS .NET Umfrage zu SOA-Projekten: Primäre Entwickler-Plattform für SOAProjekte? „ .NET increasing rapidly, Java declining even more rapidly“ Nur noch eine Frage der Zeit? 25 Januar 2009 25/30 Im September 2008 veröffentlichte Gartner eine Umfrage speziell zu SOA-Projekten (service-oriented architecture) mit einem interessanten Ergebnis: „.NET increasing rapidly, Java declining even more rapidly“ Waren es im Jahre 2006 noch 29% der Firmen, die .NET als primäre Entwickler-Plattform für SOA-Projekte angab, stieg die Zahl im Jahre 2007 auf 41%. Dagegen wurde die Java-Plattform 2007 nur noch zu 23% als primäre Platform gewählt, obwohl es 2006 noch 67% gewesen waren. Die Angabe „Andere“ erhöhte sich im selben Zeitraum von 4% (2006) auf 21% (2007). Ist es also nur noch eine Frage der Zeit? Java EE vs. MS .NET ● .NET hat sich etabliert, Java EE bleibt de facto Standard ● Zukunft: Open Source wird sich weiter durchsetzen ● Interoperabilität ● Konkurrenz fördert Weiterentwicklung Januar 2009 26 26/30 (Ist es also nur noch eine Frage der Zeit?) Sicher hat sich Microsoft mit .NET etabliert, dennoch ist auch Java EE ein nicht wegdenkbarer de facto Standard. Nicht nur von Gartner kommt aber auch die Prognose, daß sich Open Source in Zukunft noch weiter in den Firmen durchsetzen wird. Man kann und will sich nicht vorstellen, daß Java EE ganz Microsoft. NET weichen wird. Sicher bleibt Interoperabilität zwischen Anwendungen der beiden Platformen ein wichtiger Stichpunkt. Konkurrenz wird die stetige Weiterentwicklung beider vorantreiben. Java EE vs. MS .NET Danke für die Aufmerksamkeit! ENDE 27 Januar 2009 Danke für die Aufmerksamkeit! ENDE 27/30 Java EE vs. MS .NET Quellen: www.microsoft.com www.java.sun.com www.gartner.com www.gulp.de http://java.sun.com/javaee/ http://java.sun.com/javaee/5/docs/tutorial/doc/bnaax.html http://java.sun.com/developer/technicalArticles/J2EE/intro_ee5/ 28 Januar 2009 Quellen.... 28/30 Java EE vs. MS .NET http://de.wikipedia.org/wiki/.NET http://de.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition http://de.wikibooks.org/wiki/Programmieren:_Wahl_der_Programm iersprache:_Objektorientierte_Sprachen http://de.wikipedia.org/wiki/Gartner_Inc. http://mediaproducts.gartner.com/reprints/microsoft/vol3/article2/art icle2.html http://www.http://www.infoweek.ch/archive/ar_single.cfm? ar_id=22558&ar_subid=2&sid=0 http://www.gulp.de/kb/mk/chanpos/rennen.html http://www.crn.de/showArticle.jhtml?articleID=184422418 http://dmc-group.de/download/CY4ce8b260X1122c8f0ba3XY1eba/ DY4ce8b260X1122c8f0ba3XY1fbb.pdf http://proglang.informatik.uni-freiburg.de/teaching/j2ee/2005ws/01Intro-J2EE.pdf 29 Januar 2009 Quellen.... 29/30 Java EE vs. MS .NET http://www.agoeldi.com/articles/IEX03_d9_DotNetJ2EE_10JAN03 _v1.pdf http://www.approximity.com/papers/DotNetvsJava.pdf http://www.bs.informatik.unisiegen.de/www/lehre/ss05/webtech/Ausarbeitungen/Dotnet_Folien. pdf http://www.gft.com/etc/medialib/Downloads/Fachbeitraege.Par.001 6.File.tmp/GFT_J2EE_vs_NET_FB_de.pdf http://www.infosoft.de/download/Presse_spiegel/040518%20Presse veroeffentlichung%20INFOSOFT%20ERP-Architekten%20bauen %20auf%20NET%20oder%20J2EE.pdf http://www.mobile.ifi.lmu.de/Hauptseminare/ws0203/handouts/WSArchitekturen-Folien.pdf http://www.sigs.de/publications/js/2005/06/ammon_rohe_JS_06_05. pdf http://www.cpp-entwicklung.de/downld/Strategievergleich.pdf 30 Januar 2009 30/30 Quellen.... ( 2 Offenlegung des Quellcodes: Am 17. Januar 2008 veröffentlichte Microsoft den Quelltext des Frameworks zwecks "erleichtertem Debugging" unter der restriktiven Microsoft Reference License. Zu diesem Schritt entschloss sich Microsoft bereits im Oktober 2007, als Sun Microsystems ihr Produkt Java unter der GNU GPL mit eigenen Zusatzklauseln zur Verfügung stellte. Im Gegensatz zu Java stehen die Quelltexte des .NET Frameworks jedoch nicht unter einer freien Lizenz - es ist nicht erlaubt, den Quellcode zu modifizieren oder in andere Projekte zu integrieren. Microsoft gestattet lediglich die Einsicht des Quellcodes zur Unterstützung des Debugging-Prozesses in Projekten. Dank der Veröffentlichung des Quelltextes lassen sich in IT-Projekten im Fehlerfall zumindest präzisere Workarounds schreiben.)