Ist Java oder C# für Anfänger leichter zu erlernen?



  • 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.
    🙂


  • Administrator

    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


  • Administrator

    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*
    🙂


  • Administrator

    byto schrieb:

    Du hast Deine Meinung, ich habe eine andere. Respektiere das oder lass es bleiben. 🤡

    Hier geht es eben weniger um persönliche Meinungen. Ich würde C# auch nicht unbedingt für ein plattformunabhängiges Projekt einsetzen. Aber das ist schlicht und einfach eine persönliche und subjektive Meinung. Plattformunabhängigkeit hat aber eher weniger mit subjektiven Kriterien zu tun, was du aber hier definitiv machst und was ich eben nicht korrekt finde.

    Vor allem vermischst du halt eben immer wieder die Versionen. Es gibt verdammt viele Anwendungen, welche auf WinForms basieren und es werden immer noch neue Anwendungen mit WinForms erstellt.

    Trenne also deine subjektive Meinung von den Fakten und dann ist alles in Ordnung.

    Grüssli



  • Du hast Recht und ich hab meine Ruhe. 🙄


  • Administrator

    byto schrieb:

    Du hast Recht und ich hab meine Ruhe. 🙄

    Off-Topic: http://german-bash.org/275092 😃

    Grüssli



  • 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?

    Kann ich mit einer Java Anwendung auch nicht. Für ein Hello World Programm stimmts, für eine Kommerzielle Anwendung nicht.
    Das Plattform-Unabhängigkeit nur darauf beruht ein Programm ausführen zu können, das ist Marketing.
    Java ist alles bloss nicht Plattformunabhängig.



  • Spontan fallen mir nur zwei Dinge an, die man bei Java beachten muss:

    1. Filezugriff: man sollte natürlich keine OS-spezifischen Separatoren hart verdrahten. Java übersetzt hier den / in Pfadangaben direkt für die richtige Plattform. Solange man hier also keinen \ benutzt, ist man auf der sicheren Seite.
    2. JNI: wenn man native Bibliotheken einsetzt, dann muss man die natürlich für jede Plattform bereit stellen und beim Build berücksichtigen.

    JNI ist ein Spezialfall und Filezugriff sollte nun wirklich jeder plattformunabhängig hinbekommen, der halbwegs klar denken kann. 🤡

    Aber du kannst ja mal erzählen, was es sonst noch alles zu beachten gibt. 😃



  • ihoernchen schrieb:

    Java ist alles bloss nicht Plattformunabhängig.

    klar isses das, du darfst nur keine faxen machen, die nur auf einer plattform möglich sind (z.b. als pfad-trenner \ nehmen, anstatt System.getProperty("file.separator"), usw.). Java kann nichts dafür, wenn du fehler machst.
    🙂



  • byto schrieb:

    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.

    1. Hat WPF auch seine Nachteile (Ressourcenhunger).
    (Unabhängig davon das ich WPF vom Grundsatz als sehr gelungen ansehe).

    2. Sind auch in Java bestimmte UI-Bibliotheken erst nachträglich hinzugekommen.

    3. Muss man bei WPF auch betrachten, ob bereits alle zu unterstützenden Plattformen überhaupt abgedeckt werden (sofern sich nichts geändert hat, wird 2000 nicht unterstützt - was durchaus noch gewisse Verbreitung geniest).

    Wenn man schon für oder wieder einer Sprache diskutiert, sollte man sich nicht auf irgendwelche Vorurteile versteifen. So wie man unter Java sowohl plattformabhängige wie auch plattformunabhängige Programme schreiben kann, kann man dies auch unter C#. Gerade die aktuellen Monoversionen scheinen mir schon relativ weit gekommen zu sein (Von ein paar Teilbibliotheken die sehr Systemabhängig sind - wie z.B. WPF - einmal abgesehen). Das Java Mono um ein paar Jahre voraus ist, ist ebenso klar. Dafür konnte z.B. C# als neuere Sprache von den Älteren durchaus lernen, und ein paar Probleme umschiffen (was nicht heißt, das C# nicht auch gewisse Probleme mitbringt).

    cu André



  • ich meinem Tutor an der Uni Java 1.6 Programme abgeben konnte

    Und deswegen ist Java nicht plattformunabhaengig. Java ist eine Plattform. Wie sich das bei C# verhaelt, kann ich nicht beurteilen. Ich habe bisher einen grossen Bogen um C# gemacht.

    naja, da C# zum grossen teil ein Java-nachbau ist

    Und Java nur ein C++ Nachahmer ...

    hauptsache kein C++ oder sowas

    Und taeglich gruesst das Murmeltier ...

    Industriestandard

    Was bedeutet denn Industriestandard? Darueber gibt es einige Essays von Paul Graham.

    Was aber nicht heisst, dass Mono in Zukunft sowas nicht auch unterstützen wird

    Es ist schwierig mit ungelegten Eiern zu programmieren.


Anmelden zum Antworten