.NET vs JAVA (inkl. Frameworks)

kellerlanplayer

www.Blog2Help.com
ID: 10624
L
29 April 2006
2.280
247
Hallo liebe Klamm-Programmiergemeinde,

für eine Studienarbeit habe ich die Programmiersprache C# und Java mit ein paar ausgewählten Frameworks verglichen.

Ich habe das mit besten Wissen und gewissen getan und möchte euch trotzdem bitten, da mal rüber zu schauen und mir evtl. mitzuteilen, wenn ich irgendwo großen Schwachsinn geschrieben habe oder wenn ihr wo anderer Meinung seid.

Danke schon einmal für eure Mühen:


Java ist eine objektorientierte Programmiersprache, mit der es möglich ist, plattformunabhängig zu entwickeln. Die Sprache selbst ist „schlank und übersichtlich“[1] und sie kann trotzdem „für größere Projekte“[2] eingesetzt werden, da sie dafür genug Möglichkeiten bietet.

Obwohl es mit der aktuellen Java Enterprise Edition 6[3], die „nahezu jeden Bereich der Programmierung erfasst hat“[4], jederzeit möglich wäre Softwareanwendungen zufriedenstellend umzusetzen, empfiehlt es sich bei gewissen Projekten die Frameworks zu erweitern.

1.1.1.1.1 Spring-Framework

Das Spring Framework ist wahrscheinlich eines der mächtigsten in der Java Welt. Wie in dem Buch von Rod Johnson, Juergen Hoeller, Alef Arendsen, Thomas Risberg und Colin Sampaleanu beschrieben, ist es eine Methode um produktiver und einfacher mit Java und der Enterprise Edition weiterzuarbeiten. Desweiteren sind mit diesem Framework auch Web-Anwendungen möglich. Alle Spring Features sind auch in der Web-Version verfügbar.[5]

1.1.1.1.2 GWT Framework

Das Google-Webtool-Kit basiert auf JavaScript und Ajax und ist deshalb in jedem gängigen Browser verfügbar. Dies macht Installationen überflüssig und die Anwendung ist deshalb von überall erreichbar (Internetverbindung vorausgesetzt).
Der Programmcode wird allerdings in Java programmiert, erst der Compiler wandelt ihn anschließend in lauffähiges JavaScript um.

Für den Fall der DDB2.0 bietet die Ajax Technologie große Vorteile. So sind mit ihr „interaktive, desktopähnliche Applikationen im Web möglich, ohne die Nachteile einer Applet-Entwicklung oder von Flash in Kauf zu nehmen“[6].

Außerdem ist „das Arbeiten zügiger möglich, weil weniger Daten und weniger einzelne Requests mit einem Server ausgetauscht werden müssen“[7]. Dies könnte schon ein erster Ansatz für eine dringend notwendige Geschwindigkeitsverbesserung sein.

Der Einsatz von GWT wird empfohlen, wenn es sich „um hochdynamische Anwendungen handelt, die besonders viel Benutzerinteraktion erfordern“[8].

1.1.1.1.3 SwingWeb

Laut David M. Geary ist Swing lediglich eine API, die auf dem Abstract Window Toolkit basiert. Diese Erweiterung war nötig, da das AWT nicht für die Massenanwendung gedacht war und deshalb wies die Infrastruktur auch gravierende Fehler auf.[9]

Swing ist eine der meistverwendeten Schnittstellen in Java, wenn es um die Oberflächengestaltung geht. Jedoch „sehen Swing-Oberflächen auf allen Plattformen identisch aus“[10] und deshalb wirkt es manchmal etwas in die Jahre gekommen, da SwingWeb eine etwas ältere Schnittstelle ist.

Swingweb is an implementation of AWT toolkit that enables AWT/Swing application to be operating inside a web container and presented as a web application to the web browser, purely in HTML/CSS/javascript. There's no code conversion required for the swing application to run in the SwingWeb environment.”[11]


1.1.1.1.4 Vergleich
VergleichJavaFrameworksf7e72.jpg

Es gibt für jedes Framework viele Vor- und Nachteile, hier soll ein kurzer Überblick der Pros und Contras speziell für die DDB2.0 aufgezeigt werden



1.1.1.1.5 Entscheidung


Angesichts des großen Vorteils der Ajax Verwendung und der Fähigkeit, komplexe Applikationen mit vielen Daten schlank zu versenden ist es anzuraten, bei einer Webapplikation das GWT-Framework in Betracht zu ziehen.

Sollte in Java eine Standardapplikation verwendet werden, empfiehlt sich die JEE zu verwenden.
1.1.1.2 C#

Frank Eller schreibt in seinem Buch, dass sich C# aus dem .NET Framework entwickelte. Dieses war aus Sicht von Microsoft nötig um eine flexible Programmiersprache zu bekommen, die nicht die Komplexität von beispielsweise C++ hat, aber auch nicht so simpel ist wie Visual Basic.
Interessant ist, dass das .NET Framework eigentlich in C# geschrieben ist, obwohl es diese Programmiersprache bis dato gar nicht offiziell gab. Microsoft hat erst versucht, das .NET Framework in die bereits existierenden Programmiersprachen einzubetten und entschied sich nach einigen Problemen und Widerständen von Entwicklern dafür C# herauszubringen.

C# ist nur auf Windows Betriebssystemen nutzbar, dies schränkt den Endanwender zwar ein, bietet aber auch Vorteile. So ist es möglich, das Framework tiefer in das System zu integrieren und so viele APIs von Microsoft zu verwenden.[12]

Mit dieser Programmiersprache sind sowohl komplexe Webanwendungen, als auch Standardapplikationen möglich
1.1.1.2.1 ASP.NET AJAX

Auch die Verwendung von AJAX ist unter C# bzw. dem ASP.NET Framework möglich.

„As with ASP.NET itself, ASP.NET AJAX is designed to deliver functionality – in this case, the benefits of Ajax – without requiring mastery of Ajax technologies. ASP.NET AJAX can manage Ajax functionality for you in much the same way that ASP.NET manages HTTP functionality, such as postbacks, state management, and the client script required to make ASP.NET all “just work.””[13]

1.1.1.2.2 Fazit

Die vorgestellte Technologie ist sowohl für Webanwendungen als auch für eine Standardapplikation bestens geeignet.
1.1.1.3 Vergleich

In dieser Tabelle werden noch einmal die Vor- und Nachteile der ausgewählten Programmiersprachen mit dem ausgewählten Framework gegenübergestellt.

VergleichJavaNET7b126.jpg


Vergleicht man die zwei favorisierten Programmiersprachen mit ihrem Frameworks kann man davon ausgehen, dass sich sowohl C# als auch Java mit der JEE oder dem GWT Framework für die DDB2.0 eignen.

Möchte man die DDB2.0 als installierbare Software anbieten, würden sich demzufolge am besten Java mit dem JEE Framework oder C# und ASP.NET eignen.
Für eine Webapplikationen empfiehlt sich ein Einsatz von C# und ASP.NET und Java GWT. Bei letzterem fehlt jedoch die letzte Gewissheit, ob sich die theoretischen Vorteile auch tatsächlich in der Praxis umsetzen lassen. Das GWT Framework ist vergleichsweise neu und es sind nur vereinzelt große Projekte, wie Google-Mail[14] dadurch realisiert worden.

[1] Guido Krüger, Thomas Stark (2009). Handbuch der Java-Programmierung, S. 43

[2] Ders.

[3] Stand: Februar 2012

[4] Thomas Stark (2008). Java EE 5: Einstieg für Anspruchsvolle, S. 19

[5] Vgl. Rod Johnson,Juergen Hoeller,Alef Arendsen,Thomas Risberg undColin Sampaleanu (). Professional Java Development with the Spring Framework, S. 1,5

[6] Thomas Walter (2007). Kompendium der Web-Programmierung: Dynamische Web-Sites,
S. 398

[7] Michael Seemann (2007). Das Google Web Toolkit: GWT, S. 2

[8] Ders., S.9

[9] Vgl. David M. Geary (2000). Graphic Java 2.0 – Die JFC beherrschen (Swing), S.34

[10] Berthold Daum (2007). Java 6, S. 206

[11] https://java-source.net/open-source/web-frameworks/swingweb (29.02.2012)

[12] Frank Eller (2010). Visual C# 2010: Grundlagen, Programmiertechniken, Datenbanken, S.33-36, 40

[13] Christian Wenz (2007). Programming ASP.NET AJAX, S. 5

[14] https://www.ordix.de/ORDIXNews/1_2007/Java_J2EE/google_web_toolkit_ajax.html


 
Was ich anmerken möchte, ist folgendes.
Java ist zwar plattformunabhängig, aber mittels Framework aufgebläht.
.NET basiert halt auf MS Bibliotheken, wo man schon einen kleinen Geschwindigkeitsvorteil hat.
Machen kann man wohl fast alles mit beiden, wobei ich denke, das der Umfang in .NET doch
größer an Möglichkeiten ist, als in JAVA.

Es kommt ganz drauf an,
1> Was Du programmieren möchtest?
2> Wo es zum Einsatz kommen soll?
3> Wie schnell soll die Anwendung sein?
...
n> Welche der beiden Sprachen beherrschst Du "perfekt"?

Gewisse Gesichtspunkte solltest Du immer mit einbeziehen in den Entscheidungsprozess.

Nachtrag:
Bedenke,Sicherheitslücken gibt es in beiden ! Also ums Patchen wirst Du in Zukunft nicht
drumherum kommen ;(
 
Was ist denn Sinn und Zweck deiner Studienarbeit? Und wie groß soll der Umfang sein? Denn ehrlich gesagt, sieht das alles nach nur nen bisschen Zusammenfassung aus Wikipedia Artikeln ohne eigene Recherche oder ohne wirklich detaillierte Vergleichsmatrix aus. Vor allem weil auch nirgends erwähnt wird auf welcher Basis die Vergleichseigenschaften gewählt wurden.
Dein ganzer Java-Teil beschäftigt sich nur mit JEE, du kannst gar keine Entscheidung für JEE treffen, wenn nicht auch J2SE-Frameworks behandelt wurden. Z.B. das Play!-Framework oder weitere.

Der C#-Teil ist irgendwie auch sehr dürftig, es gibt sicherlich auch mehr bzw. gute Frameworks für C#, z.B. Spring.NET welches ich mit 5 sekunden googlen nach "C# Spring" gefunden habe.




Es ist für uns natürlich schwer das zu beurteilen, da wir auch nicht wissen, worauf der Hauptaugenmerk deiner Arbeit liegt, aber der Teil auf Web-Frameworks ist eben wirklich dürftig.
 
@ice: ich hab jetzt erst verstanden, das er seine Arbeit über das Vergleichen schreibt.
Wie kann man sowas nur als Thema für eine Dipl. oder Master Arbeit überhaupt durchbekommen... :ugly:
Also für den Umfang welche Frameworks es alles gibt in JAVA und welche im C# Bereich, da kann man aber noch einiges mehr suchen, finden und auswerten.
Und mehr ins Detail gehen könnte man auch als nur 5 Fakten zu vergleichen.
Bytecode Interpreter Geschwindigkeiten ...

Beim Besten Willen will sich mir nicht der Sinn der Arbeit erschließen.
Jeder der eine Sprache lernt, bleibt meist bei Ihr. Eine Übersicht welche sinnnmacht, da gibts vieles im Netz
 
Schau dir die Nummerierung an, seine Arbeit geht nicht rein um WebFrameworks, sondern das scheint ein Teil seine Arbeit zu sein. Ohne das größere Ganze kann man eben nicht beurteilen, ob es viel zu wenig ist oder nur etwas zu wenig oder gar absolut im Rahmen weil es eigentlich fast irrelevant ist.
 
"schlank und übersichtlich" ist Java eher nicht. Das gilt insbesondere für den Einsatz von Frameworks, da hat man ruck zuck einige zig MB an fremden jars mit in der Anwendung. Im übrigen ist Übersichtlichkeit kein Hinderungsgrund für den Einsatz in größeren Projekten, ganz im Gegenteil.

C# ist zumindest theoretisch auch für nicht-Windows-Plattformen verfügbar (Stichwort Mono). Zu C# kann ich aber mangels Erfahrung nix sagen.
 
Hmm, wenn ich ehrlich bin, bringt mich das nicht so ganz weiter ;)

Es geht darum, dass wir gerade eine Software in VB6 haben, die 2013/2014 neu programmiert werden soll in einer neuen Programmiersprache. Unsere externe Firma tendiert zu C# als Applikation. Ich eher zu C# oder GWT Als WebApp.
Die Übersicht, welche Sprachen/Frameworks es gibt, soll nur grob für meinen Arbeitgeber gedacht sein, um zu sehen, was es auf den Markt gibt, was möglich wäre ....

Ich hab einen Prototyp in GWT programmiert, um zu sehen, was abseits von C# noch möglich wär. Es geht also primär nicht darum, die Sprachen zu vergleichen, sondern eher um die Ergonomie der Software.
 
Die "Ergonomie" hast du aber selbst birgends erwähnt, du hast einfach nur eine Hand voll Frameworks aufgezählt und an Features verglichen. Für Ergonomie musst du vieeel tiefer hineintauchen, das wären dann gut 20 Seiten pro Framework, denn du müsstest dich in jedes Framework ersteinmal soweit hineinarbeiten, dass du damit Software schreiben könntest und deine Erfahrung dann schildern.
 
desweiteren, könnte man eine Webschnittstelle programmieren, und das ist völlig egal, welche Sprache hier zum einsatz kommt.
Warum aber soll eine Sprache generell neuprogrammiert werden ???
Vor allem wenn es Firmenintern ist.
Das Rad neuerfinden bringt es denn was ?
Würde nur hilfreich sein, wenn es dann von nicht programmierern benutzt werden kann, um selbst eine
Application zu schreiben. Wäre sowas wie eine Visualisierung der Bausteine, die dann nur noch verknüpft werden müssten.
Sowas würde ich lieber in JAVA bauen, weil es einfacher ist in diesem Sinne, aber C# hat einfach den Geschwindigkeitsvorteil und wird beim compilieren einfach besser an den Prozessor gegossen...
 
Sowas würde ich lieber in JAVA bauen, weil es einfacher ist in diesem Sinne, aber C# hat einfach den Geschwindigkeitsvorteil und wird beim compilieren einfach besser an den Prozessor gegossen...

ich möchte da wirklich keinen Krieg lostreten, aber auf Grund welcher Grundlage sollte C# schneller als Java sein? Beide sollten in etwa gleich schnell sein, da beiden die gleichen Konzepte zu Grunde liegen, wobei die JVM länger existiert und somit mehr Optimierungen haben sollte.
 
wird bei einer JVM nicht mehr emuliert ?
Schon da sollte ein kleiner Teil an Geschwindigkeit verloren gehen. Sicher schnell sind sie heute, da die Prozessoren auch VM Technologie von Hause aus mitbringen. Dennoch ist der Einsatzbereich nicht klar formuliert. Solange man nicht nach aussen will mit der Software...
Mir solls egal sein, aber ohne den genauen Zweck kann man nicht mal spekulieren ;)

@ice: Solange Du mir keine messbaren Beweise bringst, behaupte ich einfach :)

https://en.wikipedia.org/wiki/Comparison_of_Java_and_C++#Performance
https://scribblethink.org/Computer/javaCbenchmark.html
https://www.stefankrause.net/wp/?p=4

Mal die Komments anschaun ;)
https://numericalmethod.com/blog/2011/07/09/java-vs-c-performance/
 
Zuletzt bearbeitet:
wird bei einer JVM nicht mehr emuliert ?

Meine Güte, nein. Der Bytecode wird zur Laufzeit compiliert (Stichwort Just-In-Time-Compiler).

Schon da sollte ein kleiner Teil an Geschwindigkeit verloren gehen. Sicher schnell sind sie heute, da die Prozessoren auch VM Technologie von Hause aus mitbringen. Dennoch ist der Einsatzbereich nicht klar formuliert. Solange man nicht nach aussen will mit der Software...
Mir solls egal sein, aber ohne den genauen Zweck kann man nicht mal spekulieren ;)

Genau. Eine pauschale Aussage "x ist schneller als y" kann man nicht treffen, sondern es hängt vom Einsatzzweck ab.

Bis denn,
pco
 
wird bei einer JVM nicht mehr emuliert ?

Genau so etwas habe ich erwartet :roll:
Mal wieder groß rumtönen aber nicht den Hauch einer Ahnung haben: Sowohl Java als auch C# werden von einem JIT zur Laufzeit kompiliert und während der Laufzeit immer weiter optimiert. Und das schon seit Ewigkeiten, mindestens 8 Jahre (Java 5), aber auch davor gab es den JIT-Compiler schon, ein genaues Datum konnte ich auf die schnelle aber nicht finden. Deine Informationen sind also mehr als veraltet.
 
Wow. Das Dokument ist ungewöhnlich schlecht geschrieben.
Möchte man die DDB2.0 als installierbare Software anbieten, würden sich demzufolge am besten Java mit dem JEE Framework oder C# und ASP.NET eignen.
Am besten eigenet sich das eine .. oder das andere. Das ist keine klare Aussage.
Für eine Webapplikationen empfiehlt sich ein Einsatz von C# und ASP.NET und Java GWT.
Mit dem .NET 4.0 Framework hast du alles, was man für eine Webanwendung braucht. Das GWT ist zwar ganz nett, ist aber bei der Mächtigkeit von .NET warscheinlich überflüssig.

Vielleicht baust du mal dein Dokument etwas fachlicher auf. IST-Analyse, SOLL-Analyse, Machbarkeits-Protypisierung, etc.

Unter welchen Voraussetzungen soll das Programm entwickelt werden? Hat jeder das .NET Framework auf seinen Rechnern installiert oder JRE? Kann man nicht davon ausgehen? Dann eine Webanwendung.