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

Java Discussion :

Quelle language a été utilisé pour implanter la Java Virtual Machine


Sujet :

Java

  1. #1
    Membre actif Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 225
    Points
    225
    Par défaut Quelle language a été utilisé pour implanter la Java Virtual Machine
    Bonsoir,

    l' intitulé dit déjà tout.
    Je me pose la question en quel language la Java Virtual Machine a été écrite.
    Cela m' étonnerait que ce soit en Assembleur, car je vois mal récrire le code en Assembleur pour toute les plateformes. (temps et complexité)

    Donc j'en déduit que c' est fait en C ou un autre language.

    J'ai recherché sur le net, mais je n' ai rien trouvé à ce sujet.


    Merci à vous

  2. #2
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par je®ome
    Bonsoir,

    l' intitulé dit déjà tout.
    Je me pose la question en quel language la Java Virtual Machine a été écrite.
    Cela m' étonnerait que ce soit en Assembleur, car je vois mal récrire le code en Assembleur pour toute les plateformes. (temps et complexité)

    Donc j'en déduit que c' est fait en C ou un autre language.

    J'ai recherché sur le net, mais je n' ai rien trouvé à ce sujet.


    Merci à vous
    En Java?

    (le chat qui se mort la queue)

    En C je pense...

  3. #3
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Il me semble avoir lù quelque part que c'était en C++ mais j'en pas sùr et certain.

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par ®om
    En C je pense...
    Citation Envoyé par afrikha
    Il me semble avoir lù quelque part que c'était en C++ mais j'en pas sùr et certain.
    Vous avez tout les deux raisons

    L'info n'est pas dur à trouver (n'oubliez pas que Java est en GPL ) : https://openjdk.dev.java.net/hotspot/
    There are nearly 1500 C/C++ header and source files


    Citation Envoyé par ®om
    En Java?

    (le chat qui se mort la queue)
    Je ne sais pas si tu es sérieux ou pas... mais cela existe déjà : Jikes RVM

    a++

  5. #5
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par adiGuba
    cela existe déjà : Jikes RVM
    Étonnant...

    A distinguishing characteristic of Jikes RVM is that it is implemented in the Java™ programming language and is self-hosted i.e., its Java code runs on itself without requiring a second virtual machine. Most other virtual machines for the Java platform are written in native code (typically, C or C++). A Java implementation provides ease of portability, and a seamless integration of virtual machine and application resources such as objects, threads, and operating-system interfaces.
    Comment peut-elle faire son propre portage sur les différent OS? (car ce qui permet la portabilité sur une JVM classique, c'est bien que la JVM est du code spécifique à la machine sur laquelle elle est exécutée)

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ®om
    Comment peut-elle faire son propre portage sur les différent OS? (car ce qui permet la portabilité sur une JVM classique, c'est bien que la JVM est du code spécifique à la machine sur laquelle elle est exécutée)
    Tu confonds JVM et JRE

    Le JRE regroupe la JVM, l'API standard et les outils de déploiement (JWS, exécutable java, plugins pour les navigateurs, etc.). On voit très bien cela sur le schéma de la doc officiel :




    Ainsi le code spécifique au système cible est contenu dans l'API et non pas dans la JVM.

    La JVM se "contente" d'exécuter le bytecode. Elle n'a pas forcément d'avoir du code spécifique à la machine cible : il se trouve dans les APIs.

    Jikes RVM ne fournit donc que la JVM et pas l'API standard : il utilise le projet GNU-Classpath pour cela (c'est pour cela que cette JVM ne fonctionne que sous Linux).



    Maintenant je suis d'accord avec toi sur le fait que cela ne doit pas être tout simple

    a++

  7. #7
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Mais cette JVM de Jikes, elle est écrite en quel langage?

  8. #8
    Membre actif Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 225
    Points
    225
    Par défaut
    Citation:

    A distinguishing characteristic of Jikes RVM is that it is implemented in the Java™ programming language and is self-hosted i.e., its Java code runs on itself without requiring a second virtual machine. Most other virtual machines for the Java platform are written in native code (typically, C or C++). A Java implementation provides ease of portability, and a seamless integration of virtual machine and application resources such as objects, threads, and operating-system interfaces.


    Si on croit ce qu'il est écrit dans ta citation précédente, c'est écrit en Java.

  9. #9
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par je®ome
    Citation:

    A distinguishing characteristic of Jikes RVM is that it is implemented in the Java™ programming language and is self-hosted i.e., its Java code runs on itself without requiring a second virtual machine. Most other virtual machines for the Java platform are written in native code (typically, C or C++). A Java implementation provides ease of portability, and a seamless integration of virtual machine and application resources such as objects, threads, and operating-system interfaces.


    Si on croit ce qu'il est écrit dans ta citation précédente, c'est écrit en Java.
    Ouais mais d'après ce que dit adiGuba, je ne vois pas comment ça peut être écrit en Java...

  10. #10
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ®om
    Ouais mais d'après ce que dit adiGuba, je ne vois pas comment ça peut être écrit en Java...
    Le programme en Java génère une application natif d'initialisation de la JVM. Cette application est chargé de lancer la Jikes RVM.

    Donc :
    1. Il faut une autre JVM pour générer cette application "boot-image".
    2. Cette dernière permet ensuite de rendre autonome la JVM de Jikes RVM.


    C'est la même chose que pour les compilateur... La plupart des compilateurs C/C++ sont écrits en C/C++... mais pour les compiler il faut un compilateur C (on tourne en rond)...

    Le tout premier compilateur C ne pouvait donc pas être codé en C car sinon il n'aurait pas pu être compilé... mais par la suite c'est devenu possible...


    a++

  11. #11
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par adiGuba
    C'est la même chose que pour les compilateur... La plupart des compilateurs C/C++ sont écrits en C/C++... mais pour les compiler il faut un compilateur C (on tourne en rond)...

    Le tout premier compilateur C ne pouvait donc pas être codé en C car sinon il n'aurait pas pu être compilé... mais par la suite c'est devenu possible...
    La différence avec le C, c'est qu'une fois compilé, le C est exécutable... Alors que le Java il faut une JVM...

    Mais bon je pense avoir compris, Jikes JVM est écrit en java et compilé en natif (et non en bytecode), c'est ça?

  12. #12
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ®om
    Mais bon je pense avoir compris, Jikes JVM est écrit en java et compilé en natif (et non en bytecode), c'est ça?
    Oui : les JVM compilent le bytecode en natif lors de son exécution. Donc l'image de démarrage de JikesRVM est compilée en natif

    a++

  13. #13
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par adiGuba
    Oui : les JVM compilent le bytecode en natif lors de son exécution. Donc l'image de démarrage de JikesRVM est compilée en natif

    a++
    Ca n'est pas ce que je voulais dire...
    Citation Envoyé par adiGuba
    Il faut une autre JVM pour générer cette application "boot-image".
    Ce n'est pas ce que j'ai compris sur le site...
    Citation Envoyé par Jikes JVM
    its Java code runs on itself without requiring a second virtual machine

  14. #14
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ®om
    Ce n'est pas ce que j'ai compris sur le site...
    Tu as besoin d'une autre JVM pour générer JikesRVM la première fois... ensuite JikesRVM se suffit à lui même.


    C'est comme lorsque tu as les sources d'un compilateur C. Au début il te faut un autre compilateur pour le compiler. Mais une fois que c'est fait tu peux t'en passer et utiliser celui que tu viens de compiler...


    a++

  15. #15
    Membre actif Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 225
    Points
    225
    Par défaut
    Je vous remercie de l'intérêt que vous avez porté à ce post.
    Je vous souhaite un bon we.

    Je®ome

  16. #16
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 860
    Points : 22 900
    Points
    22 900
    Billets dans le blog
    51
    Par défaut
    Citation Envoyé par adiGuba
    Citation Envoyé par ®om
    Ouais mais d'après ce que dit adiGuba, je ne vois pas comment ça peut être écrit en Java...
    C'est la même chose que pour les compilateur... La plupart des compilateurs C/C++ sont écrits en C/C++... mais pour les compiler il faut un compilateur C (on tourne en rond)...
    Pour appuyer ce qu'a dit adiGuba => vieux souvenirs de fac d'il y a longtemps sur « la méthode générale pour obtenir/porter un nouveau compilateur C qui soit performant et optimisé sur une nouvelle plateforme » :
    - écrire/porter le code d'un compilateur C1 qui optimise bien le code machine produit.
    - compiler ce code avec un compilateur C0, basique et pas performant écrit en C ou en assembleur (si besoin - pas de compilateur pre-existant - écrire C0 en assembleur sur la plateforme donnée), on obtient C1a. C1a est performant (dans ce qu’il produit) mais pas optimisé (dans son exécution).
    - compiler à nouveau ce code avec le compilateur C1a précédemment obtenu, on obtient C1b.
    - C1b est un compilateur performant et optimisé.

    Ensuite c'est un peu la faute aux commerciaux de Sun si on confond le language Java, l'API Java et la JVM. A priori quelque chose code en Java (et qui ne se repose pas trop sur l'API) peut etre compile vers autre chose que du bytecode... Rappellez-vous que J++, J# ... peuvent compiler du code java 1.1.7~8 vers MFC et .NET... ok c'est peut-etre pas un bon exemple.

  17. #17
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 396
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 396
    Points : 20 507
    Points
    20 507
    Par défaut
    Je compatis avev adiGuba et Bouye
    Simplement comme l'affirme Bouye chez Sun ils développent les sources en C avec leur compilo maison pour optimiser ( voire gcc )
    Une fois qu'ils ont obtenu un noyau ils compilent pour des cibles différentes chaque JVM.
    Ainsi pour Windows ils compilent leur JVM avec Visual C++ en prennant leurs sources rendu le plus portable possible
    Pour Mac ils ils compilent leur JVM avec Think C ou autre
    Pour Unix ils ils compilent leur JVM avec le compilateur livré avec l'OS ou gcc...
    Et ainsi de suite

    Donc Jerome si tu veux faire ton propre OS il te faut ton propre compilo pour compiler les codes sources de Sun pour en faire ta propre JVM...
    En fait dans le système Java ce qui est portable c'est l'appel aux API de la JVM et le compilateur JIT, la JVM n'étant pas portable vu qu'elle cible un OS particulier

  18. #18
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bouye
    A priori quelque chose code en Java (et qui ne se repose pas trop sur l'API) peut etre compile vers autre chose que du bytecode... Rappellez-vous que J++, J# ... peuvent compiler du code java 1.1.7~8 vers MFC et .NET... ok c'est peut-etre pas un bon exemple.
    On peut également citer GCJ qui propose également un portage de l'API (toujours incomplet pour le moment) et permet de compiler du code java en code natif...

    A noter également que l'inverse est également possible : il est possible de compiler d'autres langages que Java en bytecode... même si ce n'est pas énormément utilisée...

    a++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/05/2013, 21h32
  2. Quelle Licence utilisé pour ma solution ?
    Par Cvbdev dans le forum E-Commerce
    Réponses: 0
    Dernier message: 07/07/2012, 08h47
  3. Réponses: 0
    Dernier message: 29/07/2011, 15h15
  4. Quelle language/framework pour une appli web
    Par Teufboy dans le forum Général Conception Web
    Réponses: 6
    Dernier message: 20/06/2008, 21h03
  5. Quelles sont les protocoles réseau en général utilisé pour les MMORPG/MMORTS?
    Par @v@lon dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 09/03/2007, 20h47

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