Ist Java oder C# für Anfänger leichter zu erlernen?
-
player4245 schrieb:
Ich kenn mich mit Mono nicht aus, aber Tatsache ist, dass es nicht alle Bibliotheken unterstützt.
Auch unter Java hast du Bibliotheken die ans Betriebssystem gekoppelt sind
-
aber nicht in der Standardbibliothek.
-
player4245 schrieb:
Ich kenn mich mit Mono nicht aus, aber Tatsache ist, dass es nicht alle Bibliotheken unterstützt.
Und deswegen ist für dich C# nicht Platformunabhängig? Wenn du sagen würdest, dass .Net nicht vollständig Platformunabhängig ist, dann wäre es noch in Ordnung.
Wenn ich mich recht erinnere, so ist .Net 2.0 fast vollständig in Mono enthalten. Wenn in Java neue Versionen rauskommen, sind die ja meistens auch zuerst nicht auf allen Platformen sofort vorhanden. Bis ich meinem Tutor an der Uni Java 1.6 Programme abgeben konnte, weil er keine vernünftige JRE Version 6 für seinen Apple hatte ...
Grüssli
-
player4245 schrieb:
aber nicht in der Standardbibliothek.
Was ist für dich die Standardbibliothek? .NET definiert nur BCL und FCL.
-
Stradivari schrieb:
Welche der beiden Sprachen ist für einen totalen Neuling leichter erlernbar? Oder kann man als Neuling beide Sprachen ähnlich leicht erlernen, da sie sich ja in vielen Punkten ähneln?
IMHO sind beide Sprachen etwa gleich leicht zu erlernen. Du könntest also im Grunde fast würfeln, welche Sprache Du nimmst.
Besser wäre es aber zu überlegen, was Du später denn damit machen willst. Möchtest Du eher Desktop Anwendungen (Richclient) für Windows schreiben, dann könnte C#/.NET etwas interessanter für Dich sein (wegen WPF). Möchtest Du hingegen plattformunabhängige Richclients oder Webanwendungen schreiben, dann würde ich auf jeden Fall eher zu Java raten.
-
Dravere schrieb:
player4245 schrieb:
Ich kenn mich mit Mono nicht aus, aber Tatsache ist, dass es nicht alle Bibliotheken unterstützt.
Und deswegen ist für dich C# nicht Platformunabhängig? Wenn du sagen würdest, dass .Net nicht vollständig Platformunabhängig ist, dann wäre es noch in Ordnung.
Nicht vollständig plattformunabhängig ist leider zu harmlos ausgedrückt. Denn das UI Framework (WPF) ist bei Richclient Anwendungen ein ganz wesentlicher Anteil. Du müsstest also die gesamte Oberfläche neu programmieren, um die Anwendung wirklich plattforumabhängig zu deployen.
Bei Anwendungen ohne Richclient Oberfläche mag das anders sein.
-
chrische5 schrieb:
Hallo
Ich denke, dass WPF ein gutes Argument für C# ist. Des weiteren solltest du dir überlegen, ob du für Windows programmieren willst. Wenn ja, bleibt die Frage, warum dann nicht C# nehmen. Die Toolchain ist sehr gut und Umsetzung grafischer Oberflächen gelingt problemlos auch mit WinForms.
chrische
Was ist an WPF so toll? Und wir haben schon im anderen Thread festgestellt, dass die Java-Toolchain haushoch überlegen ist.
-
Hallo
Das hatten wir nicht festgestellt. Wenn das deine Art der Beweisführung ist, dann verstehe ich deine Freude an Esoterik. WPF ist unglaublich intuitiv, bedienerfreundlich und hebt wohlwollen von WinForms ab. Ich mag es einfach und vertrete nur meine persönliche Meinung.
chrische
-
DEvent schrieb:
chrische5 schrieb:
Hallo
Ich denke, dass WPF ein gutes Argument für C# ist. Des weiteren solltest du dir überlegen, ob du für Windows programmieren willst. Wenn ja, bleibt die Frage, warum dann nicht C# nehmen. Die Toolchain ist sehr gut und Umsetzung grafischer Oberflächen gelingt problemlos auch mit WinForms.
chrische
Was ist an WPF so toll? Und wir haben schon im anderen Thread festgestellt, dass die Java-Toolchain haushoch überlegen ist.
Toller Thread, der fast nur aus Beiträgen von DAUs besteht
Ich wette 95% der User kennen .NET nur von Bildern
-
Stradivari schrieb:
ich habe vor programmieren zu lernen, weiß aber noch nicht genau ob es Java oder C# werden soll. Bisher weiß ich durchs lesen von Artikeln und Einführungen bloß was ein Integer, ein Boolean , ein Array etc.
naja, da C# zum grossen teil ein Java-nachbau ist (dazu eine schuss C++ und ein kleine prise delphi), spielt es eigentlich keine rolle, was du nimmst. willst du dir keine proprietären microsoft-technologien an die backe nageln und suchst maximale plattformunabhängigkeit, dann nimm Java, ansonsten ist es fast egal. aber schau mal da: http://en.wikipedia.org/wiki/Comparison_of_Java_and_C_Sharp
Stradivari schrieb:
Später würde ich hauptsächlich für Windows Programme schreiben wollen (ein Punkt für C#?).
ja, das spricht ein bisschen für C#, obwohl Java unter windows auch gut funzt.
-
byto schrieb:
Nicht vollständig plattformunabhängig ist leider zu harmlos ausgedrückt. Denn das UI Framework (WPF) ist bei Richclient Anwendungen ein ganz wesentlicher Anteil. Du müsstest also die gesamte Oberfläche neu programmieren, um die Anwendung wirklich plattforumabhängig zu deployen.
Ich habe explizit hingeschrieben, dass es fast vollständig .Net 2.0 zur Verfügung stellt. WPF kam erst mit .Net 3.0.
(Und brauchbar wohl auch erst mit 3.5? Naja, da lehne ich mich ein wenig weit aus dem Fenster, ich nehme es lieber wieder zurück :))Aber nur weil es nicht in der aktuellsten Version vorliegt, zu behaupten, dass es keinen Anspruch darauf hat, als Platformunabhängig zu gelten, finde ich schon ein wenig heftig. Vor allem ist das GUI nur ein Teil und wahrscheinlich im Vergleich eher der kleinere vom .Net Framework.
Ich habe schon viele Konsolenprojekte mit .Net erstellt, auch sehr praktisch und angenehm in .Net.
Grüssli
-
Bashar schrieb:
Tim schrieb:
DEvent schrieb:
Java.
Wenigstens lügst du dir diesmal keine falschen Argumente zusammen, sondern lässt sie gleich weg
Psst, oder willst du die falschen Argumente unbedingt noch nachgeliefert bekommen?
Es würde den Thread zumindest attraktiver gestalten. So rein aus humoristischer Sicht
-
Stradivari schrieb:
Welche der beiden Sprachen ist für einen totalen Neuling leichter erlernbar? Oder kann man als Neuling beide Sprachen ähnlich leicht erlernen, da sie sich ja in vielen Punkten ähneln?
Jacke wie Hose, die Sprachen sind im Prinzip gleich, nimm was du willst, hauptsache kein C++ oder sowas
-
Dravere schrieb:
byto schrieb:
Nicht vollständig plattformunabhängig ist leider zu harmlos ausgedrückt. Denn das UI Framework (WPF) ist bei Richclient Anwendungen ein ganz wesentlicher Anteil. Du müsstest also die gesamte Oberfläche neu programmieren, um die Anwendung wirklich plattforumabhängig zu deployen.
Ich habe explizit hingeschrieben, dass es fast vollständig .Net 2.0 zur Verfügung stellt. WPF kam erst mit .Net 3.0.
(Und brauchbar wohl auch erst mit 3.5? Naja, da lehne ich mich ein wenig weit aus dem Fenster, ich nehme es lieber wieder zurück :))Aber nur weil es nicht in der aktuellsten Version vorliegt, zu behaupten, dass es keinen Anspruch darauf hat, als Platformunabhängig zu gelten, finde ich schon ein wenig heftig. Vor allem ist das GUI nur ein Teil und wahrscheinlich im Vergleich eher der kleinere vom .Net Framework.
Ich habe schon viele Konsolenprojekte mit .Net erstellt, auch sehr praktisch und angenehm in .Net.
Grüssli
Naja, kannst du einfach dein .NET2.0 oder .NET3.0 Projekt nehmen und es auf anderen Plattformen einfach so laufen lassen? Mit Java, Python, Perl, Ruby, usw. kannst du das. Auch gibt es nur Mono für Linux. Wie sieht es mit Solaris, MacOS, *BSD aus?
Die "Plattformunabhänigkeit" von .NET und C# ist nur Marketing. Es würde anderes aussehen, gäbe es eine Referenzimplementierung vom Hersteller persöhnlich und/oder würde das Framework unter eine freien Lizenz stehen, wie z.B. einer MIT, BSD, LGLP Lizenz.
So wie ich das aber sehe, macht die Mono-Community die ganze Arbeit und von MS gibt es nur ein "Wir versprechen euch nicht zu verklagen (vielleicht)". Welche Unterstützung hat den Mono vom Hersteller?
Dagegen ist Java Open Source, steht unter einer freien Lizenz, hat offizielle Unterstützung und offizielle Referenzimplementierungen von Sun für fast alle Systeme. Java wird auch von der Community weiter entwickelt und verbessert. Deswegen hat sich auch Java als Industriestandard etabliert, dagegen ist C# ein "Wir haben auch Java" von MS.
Dann stellt sich die Frage an den Tools die du zur Verfügung hast. Wieder in Java hast du eine ganze Palette von Enterprise-Tools und alle sind frei und kostenlos. Eclipse, JBeans, IntelliJ, Maven2, Ant. Was hast du außer Visual Studio für C#?
-
Dravere schrieb:
Ich habe explizit hingeschrieben, dass es fast vollständig .Net 2.0 zur Verfügung stellt. WPF kam erst mit .Net 3.0.
(Und brauchbar wohl auch erst mit 3.5? Naja, da lehne ich mich ein wenig weit aus dem Fenster, ich nehme es lieber wieder zurück :))Aber nur weil es nicht in der aktuellsten Version vorliegt, zu behaupten, dass es keinen Anspruch darauf hat, als Platformunabhängig zu gelten, finde ich schon ein wenig heftig. Vor allem ist das GUI nur ein Teil und wahrscheinlich im Vergleich eher der kleinere vom .Net Framework.
Grundsätzlich hast Du recht. Ich habe ja auch geschrieben, dass die Plattformunabhängigkeit für Nicht-GUI-Anwendungen grundsätzlich gegeben ist.
ABER: Jede GUI Anwendung in C#/.NET ist eben NICHT plattformunabhängig, nicht mal ansatzweise. DENN: WPF wird von Mono nicht implementiert. Ich weiss nicht, ob Du schonmal ne richtige GUI Anwendung geschrieben hast, aber grob geschätzt ist da sicherlich 50% der Codebase GUI-Code. Und 50% des Codes neu zu schreiben, passt für mich nicht grade in die Definition eines plattformunbhängigen Frameworks.
At this point, the Mono project does not have plans to implement Windows Presentation Foundation APIs as part of the project. The notes on this page are merely to keep some notes around.
Edit: In Java sind sowohl Swing als auch SWT für alle Java-Plattformen verfügbar.
-
DEvent schrieb:
So wie ich das aber sehe, macht die Mono-Community die ganze Arbeit und von MS gibt es nur ein "Wir versprechen euch nicht zu verklagen (vielleicht)". Welche Unterstützung hat den Mono vom Hersteller?
Das ist immer noch der Knackpunkt, warum ich als Entscheider nie Mono für unternehmenskritische Software einsetzen würde.
Details: http://en.wikipedia.org/wiki/Mono_(software)#Mono_and_Microsoft.E2.80.99s_patents
-
DEvent schrieb:
Naja, kannst du einfach dein .NET2.0 oder .NET3.0 Projekt nehmen und es auf anderen Plattformen einfach so laufen lassen? Mit Java, Python, Perl, Ruby, usw. kannst du das. Auch gibt es nur Mono für Linux. Wie sieht es mit Solaris, MacOS, *BSD aus?
Du machst dich lächerlich. Wenn du nur einmal auf die Frontseite vom Mono Projekt gewesen wärst, wäre ein Teil deiner Fragen beantwortet und wenn du nur mal ein wenig über die FAQ des Mono Projekts geflogen wärst, wüsstest du, dass dies alles auch für Mono gilt.
Aber naja, lieber sich nicht informieren und an irgendetwas glauben, was einem gerade in den Kram passt
DEvent schrieb:
Die "Plattformunabhänigkeit" von .NET und C# ist nur Marketing. Es würde anderes aussehen, gäbe es eine Referenzimplementierung vom Hersteller persöhnlich und/oder würde das Framework unter eine freien Lizenz stehen, wie z.B. einer MIT, BSD, LGLP Lizenz.
Zwei Dinge dazu:
1. Was hat Plattformunabhängigkeit mit einer freien Lizenz zu tun?
2. Die "Plattformunabhängigkeit" von Java ist nur Marketing. "Compile Once & Run Everywhere" ist zwar ein netter Spruch, trifft aber leider oft nicht wirklich zu. Es leben die Security- und UnsupportedOperationExceptions. Wenn man in Java plattformunabhängig sein möchte, muss man immer noch einiges an zusätzlichen Überlegungen mit reinwerfen. Ein simples "Compile Once & Run Everywhere" ist es definitiv nicht. Ein "Think long, Compile Once & Run Everywhere" könnte vielleicht noch zutreffen. Bis man dann auf Windows deployed, wo der Kunde das *.jar File mit dem Archivprogramm verbunden hat ...DEvent schrieb:
So wie ich das aber sehe, macht die Mono-Community die ganze Arbeit und von MS gibt es nur ein "Wir versprechen euch nicht zu verklagen (vielleicht)". Welche Unterstützung hat den Mono vom Hersteller?
Soweit ich weiss, bekommt Novell und das Monoprojekt mehr und mehr gute technische Hilfe von Microsoft. Eine direkte Unterstützung gibt es aber schon nicht. Es ist aber durchaus im Sinne von Microsoft, dass eine Portierung stattfindet.
DEvent schrieb:
Deswegen hat sich auch Java als Industriestandard etabliert, dagegen ist C# ein "Wir haben auch Java" von MS.
ROFL
DEvent schrieb:
Dann stellt sich die Frage an den Tools die du zur Verfügung hast. Wieder in Java hast du eine ganze Palette von Enterprise-Tools und alle sind frei und kostenlos. Eclipse, JBeans, IntelliJ, Maven2, Ant. Was hast du außer Visual Studio für C#?
Und nochmals: ROFL.
Ich liebe Fanboys, die sind immer so witzig
byto schrieb:
Grundsätzlich hast Du recht. Ich habe ja auch geschrieben, dass die Plattformunabhängigkeit für Nicht-GUI-Anwendungen grundsätzlich gegeben ist.
Völliger Quatsch. Nicht-GUI-Anwendungen ... als wenn es nur WPF als GUI gäbe. WinForms wird von Mono fast vollständig unterstützt. Zudem gibt es auch noch GTK#.
byto schrieb:
Ich weiss nicht, ob Du schonmal ne richtige GUI Anwendung geschrieben hast, aber grob geschätzt ist da sicherlich 50% der Codebase GUI-Code.
1. Was ist eine "richtige" GUI Anwendung?
2. Ich würde sagen, die Menge an Quellcode, welcher für das GUI verwendet wird, hängt auch stark vom Projekt ab. Bei 50% würde ich an ein sehr stark GUI lastiges Programm denken. Ausser man trennt Anwendungslogik und GUI nicht sauber genug, dann fällt natürlich plötzlich Anwendungslogik dem GUI Code zu
3. Es gibt eben Möglichkeiten ein GUI mit .Net zu schreiben, welches portierbar ist und daher nicht neu geschrieben werden muss.byto schrieb:
At this point, the Mono project does not have plans to implement Windows Presentation Foundation APIs as part of the project. The notes on this page are merely to keep some notes around.
Edit: In Java sind sowohl Swing als auch SWT für alle Java-Plattformen verfügbar.
Was aber nicht heisst, dass Mono in Zukunft sowas nicht auch unterstützen wird, zum Beispiel über OpenGL statt DirectX. Und wie ich schonmal sagte, ist es halt eine Versionsfrage. Swing und SWT waren auch nicht von Anfang an bei Java dabei. Und die plattformunabhängigen Implementierungen kommen auch bei Java zum Teil verspätet. Das ist auch egal, denn das sagt nichts über Platformunabhängigkeit aus. Höchstens über die Plattformunabhängigkeit der Versionen.
Und deshalb sagte ich, und ich wiederhole mich, dass .Net 2.0 fast vollständig Platformunabhängig ist.Grüssli
-
byto schrieb:
Dravere schrieb:
player4245 schrieb:
Ich kenn mich mit Mono nicht aus, aber Tatsache ist, dass es nicht alle Bibliotheken unterstützt.
Und deswegen ist für dich C# nicht Platformunabhängig? Wenn du sagen würdest, dass .Net nicht vollständig Platformunabhängig ist, dann wäre es noch in Ordnung.
Nicht vollständig plattformunabhängig ist leider zu harmlos ausgedrückt. Denn das UI Framework (WPF) ist bei Richclient Anwendungen ein ganz wesentlicher Anteil. Du müsstest also die gesamte Oberfläche neu programmieren, um die Anwendung wirklich plattforumabhängig zu deployen.
Bei Anwendungen ohne Richclient Oberfläche mag das anders sein.
Wenn man noch nichts geschrieben hat, dann kann das einem auch egal sein
.
-
Dravere schrieb:
byto schrieb:
Grundsätzlich hast Du recht. Ich habe ja auch geschrieben, dass die Plattformunabhängigkeit für Nicht-GUI-Anwendungen grundsätzlich gegeben ist.
Völliger Quatsch. Nicht-GUI-Anwendungen ... als wenn es nur WPF als GUI gäbe. WinForms wird von Mono fast vollständig unterstützt. Zudem gibt es auch noch GTK#.
Bin kein .NET Experte aber meiner Erfahrung nach ist WPF sowohl WinForms als auch GTK# haushoch überlegen. Ich empfinde es als extreme Einschränkung, auf WPF verzichten zu müssen, um plattformunabhängig zu bleiben.
Dravere schrieb:
byto schrieb:
In Java sind sowohl Swing als auch SWT für alle Java-Plattformen verfügbar.
Was aber nicht heisst, dass Mono in Zukunft sowas nicht auch unterstützen wird, zum Beispiel über OpenGL statt DirectX. Und wie ich schonmal sagte, ist es halt eine Versionsfrage. Swing und SWT waren auch nicht von Anfang an bei Java dabei. Und die plattformunabhängigen Implementierungen kommen auch bei Java zum Teil verspätet. Das ist auch egal, denn das sagt nichts über Platformunabhängigkeit aus. Höchstens über die Plattformunabhängigkeit der Versionen.
Und deshalb sagte ich, und ich wiederhole mich, dass .Net 2.0 fast vollständig Platformunabhängig ist.Du hast Deine Meinung, ich habe eine andere. Respektiere das oder lass es bleiben.
Für mich ist das fehlende WPF in Mono + die nicht ganz klare Rechtslage wegen der Patente schon arg störend.Es ist nun mal ein Unterschied, ob die Plattform von einem Vendor direkt für alle Plattformen portiert wird wie es bei Java der Fall ist oder ob der Vendor nur eine Plattform bedient (.NET). Neue Java Versionen kommen immer zeitgleich für alle Plattformen raus. MacOS ist hier die Ausnahme, aber das lag ja an Apple und nicht an Sun.
WPF ist das vielleicht geilste UI Framework. Java Swing ist alt und da tut sich auch eher wenig. SWT wird zwar immer weiterentwickelt, enthält aber auch viel deprecated Kram. Hätte ich die freie Auswahl für eine GUI Anwendung, dann würde ich WPF wählen. Solls aber plattformunabhängig sein, dann würde meine Wahl auf SWT (Eclipse RCP) fallen.
-
DEvent schrieb:
Die "Plattformunabhänigkeit" von .NET und C# ist nur Marketing.
jo, mit genügend dreistigkeit kann man alles für plattformunabhängig erklären. mono usw. sind doch nichts anderes als machbarkeitsstudien. welcher softwareentwickler für unixoide systeme hat denn schon ernsthaft interesse daran für .NET zu entwickeln? viele werden es nicht sein und die wenigen, die es tun, wären mit windows sicherlich besser bedient.
DEvent schrieb:
...dagegen ist C# ein "Wir haben auch Java" von MS.
genau so ist es. mickrigweich konnte es noch nie verwinden, wenn sie in irgendwelchen it-marktsegmenten nicht mitmischen können. als z.b. das internet hochkam, haben die richtig abgekotzt, weil sie jahre der entwicklung verpennt haben. aber trotzdem schaffen sie es immer wieder, mit gewaltiger kraftanstrengung, doch noch verloren boden wieder gutzumachen. zur zeit sind die microsofties ja die absoluten loser im sektor mobile geräte, smartphones, usw. das werden sie unmöglich auf sich sitzen lassen, wie ich sie so einschätze. bin mal gespannt, was ms da noch für geschütze auffährt. *fg*