Anwendung braucht auf anderen OS eine Runtime

Filone

Erfahrenes Mitglied
Salut les filles et les gars,

am WE habe ich mir Studio.net aufgespielt und meine erste Anwendung erstellt. Diese wird aber soweit ich informiert bin erstmal in einen zwischenlesbaren Code geschrieben und dieser wiederum mit IL (Intermediate Language) in maschinenlesbaren Code interpretiert und dann erst ausgeführt.

Für mich hat das bedeutet, daß unter einem anderen OS, auf dem kein .net installiert war, meine Anwendung nicht lief sondern nach der "mscoree.dll" verlangte.

Habe ich eine Möglichkeit, eine Anwendung zu erstellen die in maschinenlesbarem Code ist ?

Danke und liebe Grüße,

Pascal
 
Hallo.

Die Idee von .NET impliziert, ähnlich wie bei Java, das Vorhandensein eines Frameworks, bzw. einer Runtime (bei Java die Java Virtual Machine).
Dies wiederum bedeutet, dass ohne entsprechende Runtime eine .NET-Anwendung auf einem Betriebssystem nicht laufen wird (Versuch mal auf einem Rechner ohne JVM eine Java-Anwendung laufen zu lassen).
Für Linux gibt es allerdings das Mono-Projekt, welches aber noch gewisse Kompatibilitätsschwierigkeiten mit .NET-Anwendungen hat.
Für nähere Informationen zu Mono einfach mal die Suchfunktion des Forums bemühen; dieses OpenSource-Projekt war hier schon mehrfach Inhalt von Diskussionen.
Zu deiner letzten Frage: Soweit ich weiss, nein.

Gruß, Niko
 
Es soll glaub ich möglich sein ein "Native Image" einer Assembly herzustellen. Die resultierende Datei ist dann zwar in Maschienencode geschrieben, kann jedoch ohne das Framework nicht ausgeführt werden.

Soweit ich weiss, ist das z.B. bei mscorlib.dll und co. der Fall, damit die nicht immer neu kompiliert werden müssen.
(Beziehe mich hier auf einen Statustext während der Installation des Frameworks: "Generating native images").

Das geht über irgend ein Kommandozeilentool aus der SDK, kanns aber im Moment nicht finden (vielleicht weil ich nur .NET 2.0 installiert habe).
 
Also ehrlich, ich war begeistert von der Tatsache daß Visual Basic damit mehr Möglichkeiten erhält aber die Tatsache daß ich meinen Anwendungen jetzt immer eine Runtime mitgeben muss, schmälert meine Freude erheblich.

Findet ihr den Spaß hier denn sinnvoll ?
 
Filone hat gesagt.:
Also ehrlich, ich war begeistert von der Tatsache daß Visual Basic damit mehr Möglichkeiten erhält aber die Tatsache daß ich meinen Anwendungen jetzt immer eine Runtime mitgeben muss, schmälert meine Freude erheblich.

Findet ihr den Spaß hier denn sinnvoll ?

Das ist kein Spass sondern das ist normal für Sprachen mit einer Virtuellen Maschiene.

ca 90 % der Rechner haben eine Java Virtuelle Maschiene installiert, und das obwohl Sun Microsystems nicht der Entwickler von Windows ist.
Das heisst du kannst davon ausgehen das das .net Framework sich in 2 - 3 Jahren ebenfalls auf 90 % der Rechner (Windows vorrausgesetzt) laufen wird.

Auf Windows Rechner only wird .net bald auf so ziemlich jeden Rechner vorfindbar sein.
 
Naja, lustig fand ichs ja auch nicht. ;)

Was ich meine ist folgendes : aus welchem rationalen Grund ist es denn so ? Ist es nicht besser einen Compiler dabei zu haben, der eine vollständige .exe daraus macht und ich nicht noch Runtimes mitliefern muss ?

Oder geht das aus technischen Gründen einfach nicht ?
 
Verwalteter Code hat viele Vorteile:
  • Sicherer Code - Code hat kann nur beschränkte Zugriffsrechte erhalten
  • Debugging - Es ist einfacher Managed Code zu debuggen
  • Reflection&CodeDOM - Du kannst während der Laufzeit neue Typen laden, benutzen und sogar erstellen
Wie schon gesagt, ist es glaub ich möglich, Maschinencode zu schreiben. Du wirst aber trotzdem das .NET Framework benötigen, weil es nun mal den grössten Teil der Programmiersprache (Die Klassenbibliotheken. Selbst sog. "VB-Funktionen" wie Chr() befinden sich dort) ausmacht.
 
Sunray hat gesagt.:
  • Sicherer Code - Code hat kann nur beschränkte Zugriffsrechte erhalten
Das kann ich nur unterstreichen. Es ist für einen Benutzer ein sehr beruhigendes Gefühl, wenn nicht jede x-beliebige Anwendung in seiner Windows-Registry rumfuhrwerkt.
Das macht bei .NET im Idealfall nur das Framework selber, und das auch nur bei der Installation oder Updates (vom Framework selber).

Wie oft schon musste ich meine Registry entrümpeln, nachdem ich testweise eine Demo von einem Programm installiert habe und die Deinstallationsroutine zwar die Dateien (teilweise) gelöscht hat, mir aber die nun unnötigen Schlüssel übrig ließ. Die beste Methode, eine Deinstallation einer Anwendung zu machen, ist meiner Meinung nach dafür zu sorgen, dass sie nichts in die Registry schreibt; das ist mit .NET möglich.

Wie sich das mit den Zugriffsrechten unter der Virtual Machine von Java verhält, würde ich an dieser Stelle mal gerne Christian fragen, da ich da nicht ganz so "kundig" bin wie er. :-)
Schreibt ein Java-Programm in die Windows-Registry? Ich für meinen Teil glaube nicht.

Gruß, Niko
 
Zurück