Bitte nicht hauen, ich frage euch hier, was besser wäre für eine Anwendung, die auf möglichst vielen Systemen (ab Windows95 und Linux) laufen kann (also plattformunabhängig ist), und die zudem für die Komunikationen zwischen einem zentralen Server und vielen Clients ideal ist. Wird Java auch in Zukunft noch C# Paroli bieten können, oder wie sehen die Chancen von C# und die Möglichkeiten von Java aus? Ich hoffe mal auf etwas objektive antworten, auch wenn das bei solchen Themen wirklich nicht leicht ist ja, PB ist zwar auch relativ plattformunabhängig, aber eben nicht so plattformunabhängig, wie ich es brauche. (Ich würde wohl viel zu viel WinAPI nutzen, ohne es zu merken )
Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
C# ist ja nur durch einen Zweithersteller Platformunabhängig, nicht aber durch MS selbst. Also wirst du unterschiedlichen Support erwarten können. Java ist schon mehr verbreitet als C#, da C# noch nicht lange existiert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Naja, das mit der Verbreitung ist nicht so schlimm, es würde mich nichts davon abhalten das .Net Framework/Java RTE mit dem Programm zu installieren. (Wobei .Net in zukunft wohl standartmäßig auf Windowssystemen enthalten sein wird)
Support ist natürlich so eine sache, aber gibt es durch den Opensource Charakter von Mono nicht eine kürzere Zeit bis zu den nächsten Updates?
Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
benpicco hat geschrieben:Support ist natürlich so eine sache, aber gibt es durch den Opensource Charakter von Mono nicht eine kürzere Zeit bis zu den nächsten Updates?
Schonmal Benutzer an einer OpenSource Software arbeiten/mithelfen gesehen?
Java hat so schon überdimensional viele Zusatzprogramme bekommen seit es Java gibt und darunter sind widerum viele Open Source.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Die Möglichkeiten, die Java von Haus aus mitbringt sind bereits enorm umfangreich. Und gibt es mal etwas, dass nicht bereits in den Standard-packages drin ist, dann findest du für Java unglaublich viele professionell programmierte Zusatz-packages für nahezu alles. Da will man sich gerade reinfuchsen, um .dvi-Dateien anzeigen zu lassen, oder Daten als Diagramme grafisch aufzubereiten, oder Graphenstrukturen und Algorithmen darauf zu implementieren, oder ganz spezielle Algorithmen, ... und schwupps findet man dazu die genialsten open-source-Implementierungen, die viel weiter gehen, als man benötigt. Aufgrund OOP und meist guter docs ist dann die Anbindung kein Problem.
Wenn es nicht um ein Spiel, oder eine extrem zeitkritische Routine (wobei das wegen der hervorragenden JIT-Compiler schon absolut extrem zeitkritische Routinen sein müssen), oder ein Mini-Tool geht, würde ich Java nehmen.
Zudem laufen die Programme sogar auf Sun-Kisten, Macs, etc. und du kannst fast jedes Java-Programm auch in ein Applet umwandeln und dann online ausführen.
Gerade auch sämtliche Client-Server-Netzwerkgeschichten sind ein Schwerpunkt von Java.
Das einzige Problem ist, sich in die Fülle der Möglichkeiten Schritt für Schritt reinzuarbeiten. Fast immer gibt es bereits irgendeine Standard-Klasse, die die gewünschte Funktion bereits liefert - aber man muss sie eben erstmal finden. D.h lieber viel Java-Dokumentation lesen und dann einen eleganten Weg gehen, als dirty-programming. Dafür solltest du dich natürlich auch in die OOP von Java reinarbeiten (Vererbung, Interfaces, Abstrakte Klassen, Reflections, Generische Typen, etc.) um sauber zu programmieren.
Bei Fragen gibt es zahlreiche sehr gute Java-Foren, aus denen man ebenfalls sehr viel Kniffe lernen kann.
Ich bin aber in meiner Meinung vielleicht auch nicht ganz unabhängig, denn ich habe mich eine Zeitlang mit C++ und Java beschäftigt, und mich dann ganz klar für Java als meinen Favouriten entschieden.
C# ist meiner meinung nach die elgantere Sprache. Endlich gibt es wieder dinge wie Rückgabeparameter, wie hab ich die vermisst.
Wenn du C# mit Gtk# verwendest läuft dein Programm auf etwa gleich vielen Platformen wie Java, wobei da Java schon ein kleines bischen verbreiteter ist.
C# für's Handy gibt es zb afaik noch nicht, es sei den es läuft auf WinCE/Pocket PC.
Dafür findest du in Java sehr viel mehr Beispiele und wie Frogger schon sagte, oft schon gute Lösungen die du einbauen kannst.
Was an Java ein bischen nervt ist die irrsinnige Menge an Redundanz in der Bibliothek. Oft sind sachen in tausend äquivalenten variationen umgesetzt, um wirklich jede mal erdachte herangehensweise an das selbe Problem zu implementieren.
Java hat aber imho die *weit* besseren Tools. Netbeans zb ist einfach großartig.
Auch ist der einstieg in Multiplatform taugliches C# sicherlich ein bischen schwerer als in Java.
Letztendlich ist es aber eher eine Frage des persönlichen Geschmackes.