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



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



  • knivil schrieb:

    ich meinem Tutor an der Uni Java 1.6 Programme abgeben konnte

    Und deswegen ist Java nicht plattformunabhaengig. Java ist eine Plattform.

    😕 🤡



  • knivil schrieb:

    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.

    Das ist bei C# ähnlich (Wobei es derzeit nur 3 Hauptversionen 1.0, 1.1, 2.0 und Ergänzungen zu 2.0 [3.0, 3.5]) gibt. Java hat plattformübergreifend eine bessere Unterstützung, .Net ist dafür relativ unabhängig von der Sprache (ob C#, VB...). Beides hat seine Vor- und Nachteile.



  • knivil schrieb:

    Und deswegen ist Java nicht plattformunabhaengig. Java ist eine Plattform.

    eine plattformunabhängige plattform, sozusagen eine plattform höherer stufe.

    knivil schrieb:

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

    Und Java nur ein C++ Nachahmer ...

    wie? nö, also das nun wirklich nicht, wäre ja furchtbar. Java hat mit C++ nur soviel gemein, dass beides sprachen mit C-ähnlicher syntax sind.
    🙂



  • Ich glaube einige in diesem Forum kennen die Bedeutung des Begriffs Plattformunabhängig nicht. Ich behaupte jetzt mal, dass VisualBASIC auch Plattformunabhähngig ist weil man dafür auch einen Compiler für Linux und Mac schreiben kann.



  • player4245 schrieb:

    Ich glaube einige in diesem Forum kennen die Bedeutung des Begriffs Plattformunabhängig nicht. Ich behaupte jetzt mal, dass VisualBASIC auch Plattformunabhähngig ist weil man dafür auch einen Compiler für Linux und Mac schreiben kann.

    ^^ du musst schon irgendwo 'ne grenze setzen. wie ich schon schrieb, kann man sonst alles für plattformunabhängig erklären. lass uns diese grenze mal dort stecken, wo man neu compilieren muss. dann sind per definition nur noch solche sprachen plattformunabhängig, für die es auf der jeweiligen plattform einen interpreter gibt (für source- oder byte-code, etc.). also, write once - run anywhere bedeutet plattformunabhängigkeit, write once - compile anywhere nicht.
    🙂



  • ;fricky schrieb:

    knivil schrieb:

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

    Und Java nur ein C++ Nachahmer ...

    wie? nö, also das nun wirklich nicht, wäre ja furchtbar. Java hat mit C++ nur soviel gemein, dass beides sprachen mit C-ähnlicher syntax sind.
    🙂

    Java hat mit der C++ Syntax mehr gemein als mit der C Syntax.

    Und Java hat (unter anderem) von C++ abgeschaut. Daran ist auch nichts verwerflich, und ist sogar verständlich (Den jeder Entwickler einer Sprache kannte vorher Andere, und wird dadurch geprägt - und hat in der Regel durchaus Vorstellungen was ihn an einer anderen Sprache gefallen oder gestört hat).



  • asc schrieb:

    Java hat mit der C++ Syntax mehr gemein als mit der C Syntax.

    sicherlich, schon weil es schlüsselwörter wie class, public, private, z.b. in beiden sprachen gibt, jedoch nicht in C. nur macht das Java noch lange nicht zum C++ nachahmer. dazu sind die unterschiede einfach zu gross. die Java-erfinder waren ziemlich unzufrieden mit C++ und wollten eine sprache entwickeln, die's besser macht und keinen C++-klon.
    🙂



  • ;fricky schrieb:

    player4245 schrieb:

    Ich glaube einige in diesem Forum kennen die Bedeutung des Begriffs Plattformunabhängig nicht. Ich behaupte jetzt mal, dass VisualBASIC auch Plattformunabhähngig ist weil man dafür auch einen Compiler für Linux und Mac schreiben kann.

    ^^ du musst schon irgendwo 'ne grenze setzen.

    Die Frage ist nur wo. Und darunter verstehen wir eindeutig was anderes. Plattformunabhängigkeit heißt z.B. für mich, das Code nicht verändert werden muss, unabhängig von der Zielplattform (Und nicht ob der Code nun Interpretiert oder Compiliert werden muss).

    Ganz davon abgesehen wird Java und C# Code heutzutage auch compiliert und läuft in der Regel nicht in einem reinen Interpreter. Der Unterschied ist nur wann die Compilierung erfolgt, ob es Zwischenstufen (Bytecode oder ähnliches...) gibt, und auf welcher Ebene die Compilierung einsetzt (z.B. ob der Code einmalig compiliert wird, auf Funktions-/Klassenebene beim ersten Zugriff...).

    Und selbst wenn man die Plattformunabhängigkeit nach deiner Definition interpretiert: Für die gängigsten PC-basierenden Plattformen gilt dies sowohl für Java als auf .Net - sofern man keine Betriebssystemspezifischen Bestandteile verwendet. Nach meiner Interpretation gilt dies aber auch für beispielsweise C++, sofern man entsprechende Bibliotheken verwendet.



  • ;fricky schrieb:

    asc schrieb:

    Java hat mit der C++ Syntax mehr gemein als mit der C Syntax.

    sicherlich, schon weil es schlüsselwörter wie class, public, private, z.b. in beiden sprachen gibt, jedoch nicht in C. nur macht das Java noch lange nicht zum C++ nachahmer.

    Das behaupte ich auch garnicht, wohl aber das sie sich unter anderem bei C++ bedient haben. Und ich als C++ Entwickler habe den Umstieg auf Java und C# recht einfach empfunden (nur bei der Bibliothek musste ich mich stärker umstellen).

    ;fricky schrieb:

    die Java-erfinder waren ziemlich unzufrieden mit C++ und wollten eine sprache entwickeln, die's besser macht und keinen C++-klon.

    Aber dennoch haben sie genügend von der Sprache übernommen um den Umstieg recht einfach zu gestalten.



  • Danke schonmal für die vielen Antworten.

    Ich werden dann wohl mal einen Taschenrechner mit C# und mit Java umsetzen, und schauen was mir besser gefällt (auch wenn der Einblick in die jeweiligen Sprachen bis dahin kaum gegeben ist).

    Was mir bisher mit meinem nahezu nicht vorhandenen Wissen an Java gefällt, ist die Tatsache das man die Programme auch für Macs schreiben kann, welche in den USA meines Wissens nach weiter verbreitet sind als Windows-PCs (wobei mir das als vermutlich ewiger Hobby-Programmierer (sofern ich überhaupt gefallen am programmieren finde) im Grunde egal sein kann).

    An C# bzw. eigentlich ja an .Net, gefällt mir vor allem WPF in Kombination mit MVVM, wodurch man das Aussehen der Anwendung vom Programm trennen kann. Wobei das glaube ich auch mit MVC geht, wenn ich mich richtig erinnere.

    P.S. ist das nur mein subjektiver Eindruck, oder sind .Net GUIs auf Windows etwas schneller als Java GUIs (beide in vergleichbarer Größe)?


Anmelden zum Antworten