Java Platform Enterprise Edition

Werbung
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.)
Herunterladen