Applikation läuft nicht



  • Sorry, aber Microsoft spezifiziert doch selber, der Code wäre plattformunabhängig, wenn man ein paar Regeln beachtet. Und wofür sollte die gesamte .NET/C#/Mono-Umgebung denn sonst gut sein wenn nicht dafür, die gleiche Applikation auf allen Systemen laufen zu lassen? Also wäre es schön, wenn ich auch eine qualifizierte Antwort erhalten könnte.

    Tommy



  • .Net an sich mag ja theoretisch Platformunabhängig sein, obs dann aber auch läuft, liegt von der Runtime/JIT/Whatever-Implementierung auf dem jeweiligen Zielssystem ab. Dafür kann btw. Microsoft auch recht wenig.



  • D.h. wo bekomme ich entsprechende Runtimes für andere Plattformen her?

    tommy



  • Tommy08 schrieb:

    D.h. wo bekomme ich entsprechende Runtimes für andere Plattformen her?

    Für Linux hast Du die Antwort schon gegeben: Mono.

    Aber im Ernst. Sollen wir sagen "ja, ganz klar, Du musst ja noch XYZ"...?! Du bekommst doch sicherlich Fehlermeldungen, wenn Du die Anwendungen "zur Mitarbeit bewegen" willst, oder?



  • Also fassen wir den Thread noch mal zusammen: es geht, ich kann _prinzipiell_ .NET-Anwendungen ganz problemlos auch unter anderen Betriebssystemen laufen lassen, der unter Windows erzeugt CLR-Code ist vollständig plattformunabhängig.

    Zu Mono: leider habe ich nicht mehr Informationen, die Applikation macht schlichtweg gar nix, es gibt keine Fehlermeldung, kein Output - nix!

    Tommy



  • Ja, CLR ist Plattformunabhängig (http://www.ecma-international.org/publications/standards/Ecma-335.htm) jedoch muß dafür auf jeder Zielplattform eine entsprechende Laufzeitumgebung existieren.

    Mono mag mit die beste Implementierung ausserhalb von MS sein, ist aber gerade mal (ca) auf dem Stand von .NET 2.0.

    Aber ohne nähere Info was genau Dein Programm macht kann man an dieser Stelle nur eines sicher Sagen: Du machst etwas das unter Mono nicht geht...



  • So, ich fürchte ich habe es herausgefunden: Die Plattformunabhängigkeit von Mono ist ein Witz, ein Marketinggag - oder schlicht eine dreiste Verarsche.

    .NET ist so lange plattformunabhängig, wie die Plattform "Windows" heißt. Außerhalb von Windows gibt es nur Mono. Nur leider ist bei Mono nicht nur das Problem, dass es auf einem älteren .NET-Stand basiert, sondern dass es für mehr als Konsolenapplikationen schlichtweg nicht zu gebrauchen ist.

    Das Mono-Projekt hat auf seiner Seite Guides, die beschreiben, wie man die Applikation selber verändern muss (!!!) damit sie unter Mono funktioniert. Und genau daran scheint es auch bei meiner Applikation zu scheitern - sie ist einfach noch nicht für andere Plattformen umgeschrieben worden.

    Was Microsoft sich dabei gedacht hat, weiß ich nicht, aber insgesamt wird man hier also eher für dumm verkauft.

    Tommy



  • Mono ist nicht von Microsoft.
    Ob MS NET auf Linux möchte sei zu bezweifeln auch wenn es Unterstützung für Mono gibt.
    Wenn dich an Mono etwas stört dann ändere es ab. Es ist OS.





  • Um das vielleicht mal klarzustellen: eine Applikation/Sprache, die man portieren muss, um sie auf einer anderen Plattform lauffähig zu bekommen, hat eben absolut nichts mit "plattformunabhängig" zu tun.

    Das ist eigentlich nichts weiter als ein typisches MS-Schlagwort zur Verdummung der Entwickler - und um so zu tun, als könnte man irgendwie mit tatsächlich plattformunabhängigen Sprachen mithalten. C# an sich ist technologisch eine Sackgasse, die nur dazu dient, die Entwickler an diesen proprietären, nirgend wo sonst nutzbaren Krempel zu binden.

    Vernünftige Gründe, auf diese Sprache umzustellen fallen mir nicht ein - besonders im Vergleich zu Java nicht, was konsequenter designt und _tatsächlich_ plattformunabhängig in dem Sinne ist, das Applikationen praktisch ohne jegliche Modifikation auf 'zig unterschiedlichen Betriebssystemen sofort lauffähig sind.



  • Ich habs eben mal unter ubuntu getestet, lief mit "mono TestApp.exe" (wobei TestApp.exe unter Windows mit der VS-Express-Edition erzeugt wurde und auch nur aus nem leeren Fenster besteht)



  • In Java kann man, wie in C#, Plattformspezifische dinge einbauen. Lässt man die Finger von den Plattformspezifischen dingen, muss da garnix "portiert" werden.

    Portiert wird IMHO die Laufzeitumgebung. Und hier muss ich für Java auch die Umgebung wählen, die für meine Plattform geeignet ist. Die "Plattformunabhängigkeit" der Javaapplikation hängt somit auch stark von der Implementierung der Laufzeitumgebung für ein System ab.



  • Knuddlbaer schrieb:

    Und hier muss ich für Java auch die Umgebung wählen, die für meine Plattform geeignet ist. Die "Plattformunabhängigkeit" der Javaapplikation hängt somit auch stark von der Implementierung der Laufzeitumgebung für ein System ab.

    Was ist denn das für ein Unfug, was musst du da wählen? Du installierst eine JRE, und es ist komplett egal, ob die aus den aktuellen OpenJDKs kommt oder direkt von Sun, es gibt immer nur zwei Schritte:

    - JRE installieren (so nicht schon vorhanden)
    - Applikation starten

    Das Betriebssystem ist hierbei komplett egal, es läuft überall genau so.



  • Dann erkläre mal, warum man beim Downloaden der JRE genau darauf achten muss, was man installiert und warum man dann nicht einfach einen einzigen download hat.

    http://www.java.com/de/download/manual.jsp
    http://www.java.com/de/download/faq/index_mobile.xml



  • Knuddlbaer schrieb:

    Dann erkläre mal, warum man beim Downloaden der JRE genau darauf achten muss, was man installiert und warum man dann nicht einfach einen einzigen download hat.

    http://www.java.com/de/download/manual.jsp
    http://www.java.com/de/download/faq/index_mobile.xml

    Wo ist da jetzt das Problem? Dass du das Betriebssystem auswählen musst, für dass du die JRE herunterladen willst, ist jetzt ja wohl kaum ein Problem, oder?

    OK, bei C# ist das nicht notwendig, das gibts effektiv nur für Windows.



  • Wo ist das Problem Mono als Framework zu installieren und dann die C# Anwendung laufen zu lassen ?

    C# ist nicht Plattformunabhängig weil ich Mono in Betrieb nehmen muss, Java ist Plattformunabhängig obwohl ich eine Plattformabhängige RE in betrieb nehmen muss.

    Wie stand es denn vor 8 Jahren mit der Portabilität von Java ?



  • geeky schrieb:

    Ich habs eben mal unter ubuntu getestet, lief mit "mono TestApp.exe" (wobei TestApp.exe unter Windows mit der VS-Express-Edition erzeugt wurde und auch nur aus nem leeren Fenster besteht)

    Mußt Du das mono vorher wirklich angeben? Ich bilde mir ein dass ich vor zwei Jahren auf einem Debian die Exen starten konnte, ohne mono aufzurufen? Vielleicht war der JIT-Aufruf in der Shell integriert oder gar im Kernel.



  • Knuddlbaer schrieb:

    Wo ist das Problem Mono als Framework zu installieren und dann die C# Anwendung laufen zu lassen ?

    Das Problem findest du beim Originalposting (ich habe dir die relevanten Stellen mal markiert):

    ich habe hier eine C#-Applikation, die komplett managed Code verwendet, nicht auf irgend welche system-spezifischen Ressourcen zugreift und auch keine all zu komplexe Oberfläche hat.

    Unter Windows läuft diese Applikation ganz problemlos, nur unter Linux/Mono kann ich sie beim besten Willen nicht zur Mitarbeit bewegen. Gibt es irgend welche bekannten Tricks/Hacks/Stolperstellen, die ich beachten muss?

    Und wenn du im Thread noch ein wenig weiter gehst, wirst du festellen, dass Mono halt nicht sauber funktioniert.



  • Wenn wir uns die Argumente so zurecht legen wie wir wollen:

    Ich habs eben mal unter ubuntu getestet, lief mit "mono TestApp.exe"

    OK, bei C# ist das nicht notwendig, das gibts effektiv nur für Windows.

    Was ist denn das für ein Unfug, was musst du da wählen? Du installierst eine JRE, und es ist komplett egal, ob die aus den aktuellen OpenJDKs kommt oder direkt von Sun, es gibt immer nur zwei Schritte:

    - JRE installieren (so nicht schon vorhanden)
    - Applikation starten

    Das Betriebssystem ist hierbei komplett egal, es läuft überall genau so.

    Hierbei lässt Du einfach unter den Tisch fallen, das die JRE Plattformabhängig ist und die Javaapplikation wiederum von der implementierung der JRE abhängt.

    Man findet genug Beiträge in denen es um Probleme mit Inkompatibilitäten geht. Vor allem wenn man mal die Zeit ein wenig zurück dreht. So Problemlos wie Du es zu verkaufen versuchst ist auch Java nicht.



  • Knuddlbaer schrieb:

    Man findet genug Beiträge in denen es um Probleme mit Inkompatibilitäten geht. Vor allem wenn man mal die Zeit ein wenig zurück dreht. So Problemlos wie Du es zu verkaufen versuchst ist auch Java nicht.

    Ich verkaufe Java nicht als problemlos. Nur um _den_ Ball mal zurückzuspielen: so plattformunabhängig, wie du C# zu verkaufen versuchst, ist es noch nicht annähernd.

    Und ob MS Projekten wie Mono - wenn sie nur mal weit genug gediehen sind - nicht den Hals auf rechtlichem Wege umdreht, ist noch lange nicht ausgemacht.

    Und bevor du mir jetzt damit kommst: nein, bei Java ist das nicht möglich, es ist Open Source. Also auch wenn Sun es sich anders überlegt/pleite geht/die Technologie sterben lassen möchte, die Sprache wird nicht verschwinden. Bei MS wäre ich mir ja nicht so sicher, da wird generell alle 3 Jahre eine neue technologische Sau durchs Dorf getrieben, die einem dann jeweils als Ultima Ratio untergejubelt wird - und ein paar Jahre später sollte man den Quatsch dann am liebsten fallen lassen um der nächsten, natürlich komplett inkompatiblen Technologie zu folgen.


Anmelden zum Antworten