IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Code machine et JVM


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2
    Par défaut Code machine et JVM
    Bonjour,

    J'ai une petite incompréhension quant à la "théorie" de la JVM.

    On dit dans Pourquoi Java que le code machine est spécifique au processeur, d'où l'avantage d'avoir une JVM par système qui fait la traduction bytecode -> code machine.

    Le truc qui me chiffonne est qu'un même ordi peut avoir Windows, mac et linux et donc au final un même processeur pour 3 OS différents, donc un même langage machine. Donc en théorie un programme 'C' pourrait fonctionner que ce soit sur Windows, Linux ou Mac (pour autant que ce soit le même processeur) non ?



    Merci

  2. #2
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par Vulcan Voir le message
    Bonjour,

    J'ai une petite incompréhension quant à la "théorie" de la JVM.

    On dit dans Pourquoi Java que le code machine est spécifique au processeur, d'où l'avantage d'avoir une JVM par système qui fait la traduction bytecode -> code machine.

    Le truc qui me chiffonne est qu'un même ordi peut avoir Windows, mac et linux et donc au final un même processeur pour 3 OS différents, donc un même langage machine. Donc en théorie un programme 'C' pourrait fonctionner que ce soit sur Windows, Linux ou Mac (pour autant que ce soit le même processeur) non ?



    Merci
    salut.
    l'auteur de l'article a voulu dire que le code binaire (suite de 0 et 1) ne sera pas le même sur différent OS et différentes architectures matérielles pour un méme code source (suite de lettres, accolades, parenthèses, chiffres...)
    donc même si le processeur est le même , le fichier binaire(exécutable) généré à la base sur un XP ne fonctionne pas sur un LInux

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2
    Par défaut
    Oui, j'avais bien compris... mais ce qui me perturbe c'est justement de comprendre pourquoi ?

    En simplifié, mon processeur il va comprendre, par exemple pour émettre un beep : 0110 (que ce soit sur Windows, Linux ou n'importe, il s'en fout)

    Mon code source sera beep()

    Si je compile le fichier source sous Windows et que je l'éxécute sous Windows, ça donnera 0110 donc un beep... Si je compile le fichier source sous Linux et que je l'exécute sous Linux, ça donnera 0110 aussi.

    Pourtant en prenant le fichier compilé sous Windows, exécuté sur Linux ne fonctionnera pas (sauf erreur...). C'est ça qui n'est pas "logique" pour moi

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Non tout simplement car les programmes sont bâtis en utilisant des librairies fournies par les systèmes d'exploitation, le moindre #include <machin.h> lie le programme à l'OS. En effet on n'embarque pas las librairies natives de l'OS utilisées dans un exécutable, et rarement les autre librairies (d'où le système de .so ou de dll)

    De plus les formats même des binaires exécutables sont différent d'un OS à l'autre, sachant que c'est l'OS qui a pour responsabilité de lancer tout programme, il ne sait lancer que le format binaire qui lui convient (ELF sous unix like , EXE & cie).

Discussions similaires

  1. Comment le processeur comprend-il le code machine ?
    Par Invité1 dans le forum Assembleur
    Réponses: 18
    Dernier message: 09/07/2010, 00h36
  2. Pb Debuggage Sources/Code Machine
    Par cjacquel dans le forum Visual C++
    Réponses: 1
    Dernier message: 05/09/2007, 15h50
  3. Réponses: 1
    Dernier message: 19/04/2007, 21h52
  4. Code machine
    Par Willand dans le forum Assembleur
    Réponses: 2
    Dernier message: 20/01/2003, 18h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo