Was ist das Net-Framework und wozu dient es ?



  • Noodles schrieb:

    mike2003 schrieb:

    Java ist ja platformunabhängig ist das C# denn auch ?

    Das sind beides Plattformen.

    Das ist keine Antwort. "Plattformunabhäng" heißt hier wohl, dass ich mein Programm auf verschieden Computerarchitekturen und Betriebssystemen laufen lassen kann und du sprichst hier von einer Programmierplattform.

    FlamourPur schrieb:

    Welche Nachteile sollen C# Generics haben?

    Och, die haben einige Nachteile. Es sind keine varianten Referenzen möglich, d.h. du hast die selbe Sturheit wie in C++, dass

    List<T> list* = new List< abgeleitet von T >()
    

    nicht geht.

    In Java hast du drei verschiedene Varianzmöglichkeiten, nämlich

    List<? super T>
    List<? extends T>
    List<?>
    

    Und kannst damit sehr viel allgemeinere Algorithmen schreiben. z.B. gibt es

    sort(List<T>, Comparator<? super T>)
    

    Das sind schöne Features, die manchmal einige Code-Duplizierung ersparen. Das mit den versteckten Casts ist implementierungsspezifisch und da ist wohl keiner wirklich begeistert von. Aber sprachlich gibt es zumindest einige Vorteile, neben ein paar Nachteilen gegenüber beispielsweise C#, was dafür Dinge wie new T[] kann.



  • Dann kommen natürlich Dinge hinzu, wie dass Operator-Constraints nicht möglich sind. Klar, in Java gibt es operator overloading gar nicht erst. Aber mir nützen die Operatoren auch nichts, wenn ich sie nicht mit den Typparametern nutzen kann. Letzlich ist das also noch nicht so in sich stimmig.
    Es bringt nichts, nur viele Features zu haben, die dann aber nicht ordentlich zusammenspielen. Wenn ich in C# eine Bruch-Klasse schreibe dann schreibe ich keine Methode add() sondern überlade den op+. Wenn ich den aber in Generics nicht verwenden kann, habe ich einen echten, miesen Nachteil gegenüber der Java-Lösung, so schön mein '+' sonst auch ist.



  • Ixtana schrieb:

    C# darfst du nicht als einen Naachfolger von Java sehen. Java und C# sind 2 Paar Schuhe.

    übrigens: der typ der federführend bei der entwicklung von c# war, hat früher an turbo-pascal und delphi gebastelt. deshalb sollen sich angeblich ehemalige delphi-user schnell mit dem zeug anfreunden können



  • Ixtana schrieb:

    C# ist normal nicht wirklich Plattformabhängig, da es auf dem .net Framework basiert und das nur unter Windows läuft. Es gibt aber Mono das C# und Teile des .net Frameworks unter Linux anbietet.

    😕 Weißt du was du da eigentlich von dir gibst??? C# ist _normal_ nicht plattformunabhängig? Was ist es denn im unnormalen Fall? Was hat C# eigentlich mit Plattformen zu tun? 😮 Was kann .NET dafür, das es unter Windows läuft? .NET darf auf jede Plattform implementiert werden. Genauso wie C# und C++/CLI.



  • Optimizer schrieb:

    Das ist keine Antwort. "Plattformunabhäng" heißt hier wohl, dass ich mein Programm auf verschieden Computerarchitekturen und Betriebssystemen laufen lassen kann und du sprichst hier von einer Programmierplattform.

    Und? Keine von beiden laufen "einfach so" auf anderen Systemen.



  • Ja? Was willst du damit sagen? Du weißt doch ganz genau, dass die Frage war, ob man mit .Net ähnlich leicht Programme für verschiedene Systeme entwickeln kann. Und es müsste eigentlich auch klar sein, dass das von dir nicht wirklich eine Antwort darauf war.

    Du kannst sagen theoretisch blabla, praktisch blabla, was auch immer, aber die Programmierplattform hat damit nichts zu tun. Standard C++ mit seiner stdlib kann man im weiteren Sinne auch als Plattform bezeichnen, auch wenn es eigentlich nicht vollständig genug ist um sich diese Auszeichnung zu verdienen. Es war aber einfach ein anderer Plattformbegriff gemeint.
    http://de.wikipedia.org/wiki/Plattform_(Computer)



  • Optimizer schrieb:

    Ja? Was willst du damit sagen?

    Das Java und .NET Plattformen und somit nicht plattformunabhängig sind.



  • Noodles schrieb:

    Das Java und .NET Plattformen und somit nicht plattformunabhängig sind.

    Könntest du deinen Plattformbegriff etwas spezifizieren? Du meinst wohl, dass man auf eine virtuelle Maschine angewiesen ist, damit entsprechende Programme laufen. Wie ist das mit native Compilern, wie zum Beispiel Excelsior Jet zu vereinen? Mit denen benötigt man dann plötzlich keine virtuelle Maschine mehr.



  • Hier wurde das schonmal lang diskutiert.



  • ***



  • passt zwar nicht ganz zum thema, aber würde mich mal interessieren: angenommen ihr kriegt 'nen auftrag eine anwendung zu entwickeln. irgendwas, was heute standard ist, datenbankgestützt, grafische oberfläche, bischn' netzwerk (emailen, web-services abfragen o.ä.). das ganze soll in ca. 1/2 jahr laufen aber der kunde weiss noch nicht, ob er das auf linux, freebsd, windows oder solaris einsetzen will. was würdet ihr nehmen? .NET? java? oder gar c++ mit'm haufen portabler libraries?



  • Den Auftrag würde ich erst garnicht annehmen. Zumindest nicht als Festpreisjrojekt. Und wenn ich ihn annehmen würde, würde ich dem Kunden ein OS empfehlen. :p Das würde ich auch in meiner Pflicht sehen.



  • Artchi schrieb:

    Den Auftrag würde ich erst garnicht annehmen. Zumindest nicht als Festpreisjrojekt. Und wenn ich ihn annehmen würde, würde ich dem Kunden ein OS empfehlen. :p Das würde ich auch in meiner Pflicht sehen.

    na gut, der kunde ist noch mitten im entscheidungsprozess und hört sich gern auch deine tips an aber das dauert noch bis er sich entschieden hat. mit der entwicklung muss aber schon begonnen werden (terminsache). also nehmen wir an du bist kein freiberufler und dein chef sagt: 'junge, du bist mein bester mann, mach das!'. was würdest du nehmen?



  • net schrieb:

    passt zwar nicht ganz zum thema, aber würde mich mal interessieren: angenommen ihr kriegt 'nen auftrag eine anwendung zu entwickeln. irgendwas, was heute standard ist, datenbankgestützt, grafische oberfläche, bischn' netzwerk (emailen, web-services abfragen o.ä.). das ganze soll in ca. 1/2 jahr laufen aber der kunde weiss noch nicht, ob er das auf linux, freebsd, windows oder solaris einsetzen will. was würdet ihr nehmen? .NET? java? oder gar c++ mit'm haufen portabler libraries?

    Aus Java-Sicht ist die einzige Plattform, die da Probleme bereiten könnte FreeBSD. Es gibt natürlich auch dafür entsprechende JVMs: http://www.freebsd.org/java/
    Allerdings ist (zumindest mir) der Status dieser JVMs nicht wirklich klar. Im Text steht etwas von Java 1.3.1, wobei da auch entsprechende Links für 1.4 und 5.0 vorhanden sind. Ich weiß nicht, inwiefern die zu gebrauchen sind oder ob diese nicht komplett kompatibel sind. ...müßte man wohl vorher testen.

    Ansonsten ist in der Beschreibung aus meiner Sicht zumindest nichts zu finden, was einer Realisierung des Projekts in Java ein großes Problem bereiten könnte. Falls das Programm am Schluss nicht auf Anhieb auf allen Plattformen so funktioniert, wie es funktionieren soll, wird sich die benötigte Änderung auf ein paar minimale "kosmetische Korrekturen" beschränken.

    Soviel zu Java. Zu den anderen Sprachen (oder Plattformen) muss jemand anderes etwas sagen.



  • jbjkhvghx schrieb:

    Ansonsten ist in der Beschreibung aus meiner Sicht zumindest nichts zu finden, was einer Realisierung des Projekts in Java ein großes Problem bereiten könnte.

    ok, thx, 1:0 für java...



  • DotGNU Portable.NET
    Linux -> Mono

    Keine Ahnung ob es gut ist, habe es nur im Netz gefunden.



  • Noodles schrieb:

    DotGNU Portable.NET

    scheint noch etwas unfertig zu sein guckst du: http://www.dotgnu.org/pnetlib-status/

    Noodles schrieb:

    Linux -> Mono

    läuft das auch unter solaris und bsd?



  • net schrieb:

    Noodles schrieb:

    DotGNU Portable.NET

    scheint noch etwas unfertig zu sein guckst du: http://www.dotgnu.org/pnetlib-status/

    Sollte man aber sicherlich mal im Auge behalten. Vielleicht ist es irgendwann ja mal eine akzeptable Alternative.





  • bhkjbjk schrieb:

    net schrieb:

    Noodles schrieb:

    DotGNU Portable.NET

    scheint noch etwas unfertig zu sein guckst du: http://www.dotgnu.org/pnetlib-status/

    Sollte man aber sicherlich mal im Auge behalten. Vielleicht ist es irgendwann ja mal eine akzeptable Alternative.

    Kann ich mir schwer vorstellen, wenn ich sehe was alles mit .NET 2.0 kommt und da noch einiges von 1.1 fehlt.
    Aber man soll ja niemals nie sagen. 😉


Anmelden zum Antworten