7 Stimmen

Warum ist Java auf dem Server und C# auf dem Client eine beliebte Wahl?

Ich habe einige Beispiele gesehen, bei denen die Architektur aus Java auf der Serverseite und C# auf dem Client besteht - was macht diese Kombination so gut? Warum wäre .net auf beiden Seiten nicht die bessere Wahl (oder tatsächlich Java auf beiden Seiten?)

später hinzugefügt: in vielen Fällen wird das Java auf einem Windows-Server selbst gehostet, ich glaube über Tomcat (bin mir nicht 100% sicher) - was ist hier die Motivation?

19voto

Elliot Kroo Punkte 4313

Java wird aus verschiedenen Gründen häufig im Back-End-Bereich eingesetzt (und hat sich als De-facto-Standard durchgesetzt):

  • Java kann transparent auf verschiedenen Betriebssystemen laufen, von Windows-Entwicklungs-Workstations bis zu dedizierten Unix-Servern.
  • Java erzwingt einen modularen, objektorientierten Ansatz bei der Programmierung, der es ermöglicht, (hoffentlich) große Systeme zu schreiben, ohne dass sie unüberschaubar werden. (Dies gilt auch für C#/.NET, aber nicht für andere Backend-Sprachen wie Perl oder Python)
  • Java wird häufig in Back-End-Systemen verwendet (je beliebter eine Sprache für eine bestimmte Anwendung ist, desto wahrscheinlicher ist es, dass es ausgereifte Bibliotheken und Tools in dieser Sprache für diese bestimmte Anwendung gibt)

C# verfügt über großartige Tools und Bibliotheken für die Gestaltung von Benutzeroberflächen in Windows. Da Java betriebssystemunabhängig ist, stehen weniger Werkzeuge für die besonderen Eigenheiten der Benutzeroberfläche eines Betriebssystems zur Verfügung, während C# von Microsoft für die Entwicklung von Windows-Anwendungen entwickelt und gepflegt wird.

5voto

itowlson Punkte 72130

Nun, es gibt viele Fälle, in denen .NET an beiden Enden verwendet wird (und ich würde vermuten, dito für Java). Aber ich vermute, dass die Motivation hinter Java-Server/.NET-Client-Architekturen darin besteht, dass die Anwendung auf Unix als Server-Betriebssystem abzielt, entweder aus Kosten- oder Zuverlässigkeitsgründen oder weil sie in eine bestehende Unix-Server-Umgebung passen muss (z.B. um eng mit bestehenden Unix-Anwendungen zusammenzuarbeiten), aber auf Windows als Client-Plattform abzielt. (Ich denke, dass Java wahrscheinlich viel seltener eingesetzt wird, wenn Windows auch als Serverplattform verwendet wird; ich habe allerdings keine Zahlen, um dies zu belegen).

Wenn man von einem Unix-Server-Betriebssystem ausgeht, dann ist Java eine sehr produktive Wahl, gut unterstützt mit vielen Bibliotheken, aber mit einer größeren Entwicklerbasis (zumindest in "unternehmerischen" Umgebungen) und mehr "Management"-Anerkennung als Alternativen wie Perl, Ruby oder Python.

Umgekehrt ist .NET besser für den Windows-Client geeignet, da es eine viel bessere Unterstützung für die Erstellung von Windows-GUIs bietet. Es ist nicht nur das Tooling: Die Java-GUI-APIs selbst (z. B. Swing) neigen dazu, plattformübergreifende Ähnlichkeit einem nativen Look-and-Feel vorzuziehen, und führen daher eher zu Anwendungen, die nicht wie Windows-Anwendungen aussehen oder sich so verhalten. (Ich verallgemeinere hier ein wenig - sorry!)

3voto

justinhj Punkte 10753

Bei Datenaustauschformaten wie JSON ist es weit weniger wichtig, dass die Systeme auf beiden Seiten der Verbindung die gleiche Low-Level-Technologie verwenden.

Java ist eine sehr gut getestete und unterstützte Sprache für Server, während C# über großartige Tools für die Erstellung von grafischen Benutzeroberflächen verfügt.

2voto

Peter Lawrey Punkte 511323

Java gilt als ausgereifter, was ein gutes Attribut für einen Server ist, während C# besser in Windows und Office integriert ist bzw. ein ähnliches Erscheinungsbild aufweist (was den Kunden gefällt).

0voto

Marc Gravell Punkte 970173

Die meisten Server sind entweder Windows- oder *nix-basiert. Auf dem Server wäre also entweder Java oder .NET/C# (über Mono auf *Nix) perfekt geeignet.

Java bietet eine bessere Unterstützung für verschiedene Client-Geräte, aber in vielerlei Hinsicht wird diese Anforderung durch die viel bessere HTML-Unterstützung bei den meisten Clients ersetzt - zumindest bei Online-Geräten.

Für eine installierte Client-Anwendung hat Java wohl die bessere Portabilität - aber mit Dingen wie Compact Framework, Micro Framework, Silverlight usw. holt .NET auf.

Persönlich (aufgrund der beruflichen Rolle) ist mir wichtig hauptsächlich was auf dem Server liegt; .NET/C# hat mich noch nie im Stich gelassen - aber ich bin kein Java-Entwickler, kann also keinen direkten Vergleich ziehen. Aus der Arbeit an Open-Source-Projekten weiß ich, dass es eine gute Gemeinschaft von Leuten gibt, die Mono auf dem Server verwenden.

Auf dem Client bieten Tools wie WPF ein erstklassiges GUI-Erlebnis, wobei die Unterstützung von .NET für Winforms für normale Windows-Anwendungen nützlich ist. Da aber ein Großteil der WPF-Architektur mit Silverlight gemeinsam ist (mit Moonlight als Mono-Zwilling für *nix usw.), kann das Erlebnis auch auf Nicht-Windows-Clients genutzt werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X