Je sais que Java donne un avantage puissant: le code Java est compilé en bytecode et ce bytecode est exécuté par JVM, donc Java est sur la portabilité. Cependant, il existe des fonctions telles que leur implémentation dépend du système d'exploitation.Comment est-ce possible que chaque pot fonctionne sur Linux et Windows?
https://speakerdeck.com/raboof/jvm-hacking (4e diapositive)
Comme vous pouvez le voir, il existe un code C dépendant du système. Comment ça marche ? Je veux dire que le même jar
utilisant la méthode bind peut être exécuté sur Windows et Linux. Après tout, bind méthode sur Linux et Windows peut être assez différent (nombre de paramètres, nom et plus).
Pouvez-vous m'expliquer?
Je n'ai pas vu l'implémentation JVM ou JDK sous-jacente, mais [peut-être] (https://stackoverflow.com/questions/5919996/how -to-detect-fiable-mac-os-x-ios-linux-windows-en-c-préprocesseur) fera la lumière sur une façon possible de le faire. –
Donc, simplement le code C natif exécuté à partir de JVM (runtime) a quelque chose comme si WIN_32, ouais? –
Je n'ai pas dit ça. J'ai dit que c'est une façon possible de le faire. Souvenez-vous également que chaque environnement a son propre JRE, donc si le fichier JAR exécutable est le même, le JRE ne l'est pas. –