macos, windows, linux



  • java.exe schrieb:

    gibt es eine Anwendungsdatei(wie .exe) die mit allen wichtigen Betriebssystemen
    kompatibel ist (oder nur mit macos und windows(und wenn kann man die auch mit C/C++ erstellen)).

    Hier riecht es nach Trollen.



  • java.exe schrieb:

    gibt es eine Anwendungsdatei(wie .exe) die mit allen wichtigen Betriebssystemen
    kompatibel ist (oder nur mit macos und windows(und wenn kann man die auch mit C/C++ erstellen)).

    Du musst immer neu kompilieren. Egal ob es Java oder C++ ist.



  • kingruedi schrieb:

    java.exe schrieb:

    gibt es eine Anwendungsdatei(wie .exe) die mit allen wichtigen Betriebssystemen
    kompatibel ist (oder nur mit macos und windows(und wenn kann man die auch mit C/C++ erstellen)).

    Du musst immer neu kompilieren. Egal ob es Java oder C++ ist.

    Ähm, wie meinst das jetzt? Wenn ich ein HelloWorld in Java kompiliere, kann ich's auf jeder beliebigen Plattform ausführen, ohne es neu kompilieren zu müssen. Das ist ja eigentlich der Gag an der Sache.
    Dass die VM nativ ist, ist 'n anderes Thema.

    MfG

    GPC



  • Also falls ihr es nicht verstanden habt. Noch einmal genau.

    Beispiel:

    1. Ich schreibe ein C++ Programm auf Windows.
    2. Dann kompiliere ich es und der Linker erstellt eine .exe Datei.
    3. Diese .exe Datei ist nicht mit MacOS kompatibel.
    4. Kann man eine Datei erstellen die auf MacOS und Windows läuft.

    P.S: Wie heißen die Endungen der Anwendungsdateien aus MacOS



  • java.exe schrieb:

    1. Ich schreibe ein C++ Programm auf Windows.
    2. Dann kompiliere ich es und der Linker erstellt eine .exe Datei.
    3. Diese .exe Datei ist nicht mit MacOS kompatibel.
    4. Kann man eine Datei erstellen die auf MacOS und Windows läuft.

    Nicht mit einer kompilierten Sprache, also für C bzw. C++: NEIN. Die Datei wird nicht nativ laufen, da es unterschiedliche Plattformen sind. Du kannst sie höchstens emulieren, unter entsprechenden Leistungseinbußen natürlich.

    P.S: Wie heißen die Endungen der Anwendungsdateien aus MacOS

    Die binaries haben keine Endung.

    MfG

    GPC



  • java.exe schrieb:

    gibt es eine Anwendungsdatei(wie .exe) die mit allen wichtigen Betriebssystemen
    kompatibel ist (oder nur mit macos und windows(und wenn kann man die auch mit C/C++ erstellen)).

    Ja klar, PE32 kann praktisch überall ausgeführt werden. Da es aber unter Linux und MacOS X nicht das native Dateiformat für binäre Dateien ist, braucht man dort Kompatibilitätsschichten wie WINE (aber zum Glück keinen Emulator!). Du kannst deine Anwendungen dahingehend entwickeln, dass du darauf achtest, dass z.B. WINE sie mag. Ob das ist, was du machen willst, ist eine andere Frage.
    Ansonsten gibt es nicht viel was dich vorm Neu-Kompilieren pro Plattform rettet.

    GPC schrieb:

    kingruedi schrieb:

    Du musst immer neu kompilieren. Egal ob es Java oder C++ ist.

    Ähm, wie meinst das jetzt? Wenn ich ein HelloWorld in Java kompiliere, kann ich's auf jeder beliebigen Plattform ausführen, ohne es neu kompilieren zu müssen. Das ist ja eigentlich der Gag an der Sache.
    Dass die VM nativ ist, ist 'n anderes Thema.

    Überleg dir mal, ob die handelsübliche Desktop-CPU in der Lage ist Bytecode auszuführen. Stichwort JIT-Compiler. Eigentlich wird C++ in der Praxis sogar seltener als Java kompiliert. Bei C++ kompiliert man pro Plattform. Java wird dagegen pro Anwender kompiliert 😉
    (Allerdings ist es eigentlich ziemlich unfair C++-Kompilierung und Java-JIT-Kompilierung eins zu eins zu vergleichen, aber das interessiert jetzt einfach mal nicht :D)



  • minhen schrieb:

    GPC schrieb:

    kingruedi schrieb:

    Du musst immer neu kompilieren. Egal ob es Java oder C++ ist.

    Ähm, wie meinst das jetzt? Wenn ich ein HelloWorld in Java kompiliere, kann ich's auf jeder beliebigen Plattform ausführen, ohne es neu kompilieren zu müssen. Das ist ja eigentlich der Gag an der Sache.
    Dass die VM nativ ist, ist 'n anderes Thema.

    Überleg dir mal, ob die handelsübliche Desktop-CPU in der Lage ist Bytecode auszuführen. Stichwort JIT-Compiler. Eigentlich wird C++ in der Praxis sogar seltener als Java kompiliert. Bei C++ kompiliert man pro Plattform. Java wird dagegen pro Anwender kompiliert 😉
    (Allerdings ist es eigentlich ziemlich unfair C++-Kompilierung und Java-JIT-Kompilierung eins zu eins zu vergleichen, aber das interessiert jetzt einfach mal nicht :D)

    Ich weiß dass der JIT-Compiler drüber rödelt (glaub seit Java 1.3), aber ICH kompiliere nichts. Schließlich sagte kingruedi:"Du musst immer neu kompilieren. Egal ob es Java oder C++ ist." Und hey, ICH muss nichts kompilieren. Auch egal...

    MfG

    GPC



  • Wenn du schon so haarspalterisch bist, muss man aber auch feststellen, dass du mit an Sicherheit grenzender Wahrscheinlichkeit nicht er bist und deine Feststellung damit trivial ist 😉



  • minhen schrieb:

    Wenn du schon so haarspalterisch bist, muss man aber auch feststellen, dass du mit an Sicherheit grenzender Wahrscheinlichkeit nicht er bist und deine Feststellung damit trivial ist 😉

    hehe, da ist auch wieder was dran... 😃 😉



  • GPC == minhen 😮



  • C-x C-c schrieb:

    GPC == minhen 😮

    naaa, der Ausdruck ist false.



  • GPC schrieb:

    Ich weiß dass der JIT-Compiler drüber rödelt (glaub seit Java 1.3), aber ICH kompiliere nichts. Schließlich sagte kingruedi:"Du musst immer neu kompilieren. Egal ob es Java oder C++ ist." Und hey, ICH muss nichts kompilieren. Auch egal...

    Du kompilierst das, wenn du das Programm ausführst oder ist java -jar foo.jar der normale Weg um ein Programm auszuführen?

    C++:
    "Hey Compiler, kompiliere mir das für meine Platform"

    Java:
    "Hey Compiler 1, kompiliere mir das bitte für diese Zwischenplatform"
    "Hey Zwischenplatform, kompiliere mir das bitte für meine Platform"

    🙄

    @java.exe
    Du musst für jedes System neu kompilieren. Es gibt keinen wirklichen Weg ein Binary für Linux, Mac OSX und Windows zu erzeugen.



  • java.exe schrieb:

    Also falls ihr es nicht verstanden habt. Noch einmal genau.

    Beispiel:

    1. Ich schreibe ein C++ Programm auf Windows.
    2. Dann kompiliere ich es und der Linker erstellt eine .exe Datei.
    3. Diese .exe Datei ist nicht mit MacOS kompatibel.
    4. Kann man eine Datei erstellen die auf MacOS und Windows läuft.

    P.S: Wie heißen die Endungen der Anwendungsdateien aus MacOS

    http://en.wikipedia.org/wiki/Cross-compiling
    http://de.wikipedia.org/wiki/Cross-Compiler

    oder einfach aufn mac noch mal kompilieren



  • kingruedi schrieb:

    GPC schrieb:

    Ich weiß dass der JIT-Compiler drüber rödelt (glaub seit Java 1.3), aber ICH kompiliere nichts. Schließlich sagte kingruedi:"Du musst immer neu kompilieren. Egal ob es Java oder C++ ist." Und hey, ICH muss nichts kompilieren. Auch egal...

    Du kompilierst das, wenn du das Programm ausführst oder ist java -jar foo.jar der normale Weg um ein Programm auszuführen?

    Wenn ich 'n jar kriege, wird das so ausgeführt, egal ob der Konqueror den Aufruf so abbildet, oder ob ich's so eintippe. Mir ist kein anderer Weg bekannt, jar's auszuführen.

    C++:
    "Hey Compiler, kompiliere mir das für meine Platform"

    Java:
    "Hey Compiler 1, kompiliere mir das bitte für diese Zwischenplatform"
    "Hey Zwischenplatform, kompiliere mir das bitte für meine Platform"

    🙄

    Schon gut, dieses Missverständniss wurde ja bereits geklärt, ich hatte wohl zu ungenau gelesen.

    MfG

    GPC


Anmelden zum Antworten