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 :

Graal : le compilateur dynamique Java pourrait être utilisé dans les JVM


Sujet :

Java

  1. #1
    Responsable .NET

    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Points : 252 372
    Points
    252 372
    Billets dans le blog
    121
    Par défaut Graal : le compilateur dynamique Java pourrait être utilisé dans les JVM
    Graal : le compilateur dynamique Java pourrait être utilisé dans les JVM
    pour de meilleures performances


    La communauté du projet Graal et les développeurs d’Oracle souhaiteraient que le compilateur soit utilisé dans des machines virtuelles Java (JVM).

    Le projet Graal est une mise en œuvre d’un compilateur dynamique en Java, qui permet de produire du code de bonne qualité sans compromettre le temps de compilation et l’utilisation de la mémoire dans la machine virtuelle Java.

    Pour améliorer les performances des JVM, des représentants d’Oracle et les participants au groupe de discussion OpenJDK ont commencé à explorer dans des échanges par messagerie électronique, la mise en œuvre d’un compilateur dynamique qui pourrait être utilisé dans une machine virtuelle Java native comme HotSpot ou méta-circulaire comme Maxine.

    La machine virtuelle Maxine est une plateforme de prochaine génération, écrite en Java, disposant d’une architecture modulaire et compatible avec les environnements de développement et le SDK Java modernes, selon Oracle. Le compilateur Graal basé sur le code de Maxine, servirait de point de départ au projet de compilateur dynamique.

    « Ce qui est clair ici, c’est que Graal permet d’obtenir de meilleures performances de compilation à partir de Java » a déclaré l’analyste Al Hilwa d’IDC. « Il y a un mouvement de retour à l’origine [vers le code natif], à bien des égards stimulé par les outils d’Apple pour le développement iOS, qui tourne autour d’un modèle natif compilé pour Objective-C. Pendant longtemps, la balance penchait en faveur des langages des machines virtuelles comme Java. Mais le succès d’iOS a changé la tendance. Dans ce contexte, Java doit améliorer ses performances pour être comparable avec ce qui est possible avec les compilateurs natifs et aussi évoluer en terme d’intégration de code natif ».


    L’idée d’utiliser Graal dans les machines virtuelles Java est très appréciée par plusieurs utilisateurs du langage. « Pensez à coder en Java, le compiler en utilisant un compilateur écrit en Java, et en l’exécutant dans la JVM, qui est également écrite en Java. Java est présent sur toute la chaine et ouvre le chemin à une intégration transparente entre l’application et la VM » a déclaré Hari Gottipati, architecte principal chez Apollo Group, de l’université de Phœnix. « Je suis sûr que toute la communauté Java va être excitée à ce sujet ».

    Graal à fait l’objet d’une présentation en juillet dernier par Oracle lors de l’événement JVM Language Summit. Les travaux sur Graal devraient être complétés par la publication du JDK 8 en 2013.



    Source : Wiki de la JVM Maxine


    Et vous ?

    Que pensez-vous de l'utilisation d'un compilateur dynamique dans les JVM ?
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  2. #2
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Points : 3 579
    Points
    3 579
    Par défaut
    Quelque chose que je ne comprends pas : pour s'exécuter, le bytecode java à besoin d'une machine virtuelle. Si la machine est elle même écrite en java, comment faut-elle pour s'exécuter ?
    "Historiquement, techniquement, économiquement et moralement, Internet ne peut pas être contrôlé. Autant s’y faire." Laurent Chemla

    Je soutiens Diaspora*, le réseau social libre.

    Veillez à porter une attention toute particulière à l'orthographe...

    Blog collaboratif avec des amis : http://geexxx.fr

    Mon avatar a été fait par chiqitos, merci à lui !

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 264
    Points : 725
    Points
    725
    Par défaut
    En gros, on peut dire que Graal est à Java ce que Pypy est à Python, c'est ça ?
    "By and large I'm trying to minimize mentions of D in C++ contexts because it's as unfair as bringing a machine gun to a knife fight." - Andrei Alexandrescu

  4. #4
    Membre éclairé Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Points : 803
    Points
    803
    Par défaut
    Pensez à coder en Java, le compiler en utilisant un compilateur écrit en Java, et en l’exécutant dans la JVM, qui est également écrite en Java
    Euh, traduction approximative ?
    Sans danger si utilisé conformément au mode d'emploi.

    (anciennement BenWillard, enfin moins anciennement que ... enfin bon c'est une longue histoire... Un genre de voyage dans le temps...)

  5. #5
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    Je n'ai toujours pas compris en quoi consiste le projet Graal :
    "compilateur dynamique dans la JVM"
    est-ce que cela veut dire qu'on peut exécuter des classes java directement sans passer par la compilation ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 268
    Points : 556
    Points
    556
    Par défaut
    En gros actuellement on a :

    Objective-C -> [compilateur] -> Code natif (assembleur) <- Performant

    Java -> [compilateur JIT codé en C ou autre] -> byteCode -> JVM <- Moins performant

    Désormais ils veulent faire ça :

    Java -> [Graal codé en Java] -> byteCode de meilleure qualité -> JVM

    Enfin c'est ce que j'ai compris ...

  7. #7
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    j'ai rien compris je crois ne pas comprendre le terme "compilation dynamique". Pour moi et à la louche: hotspot fait de la compilation dynamique et réévalue à chaud les stratégies d'optimisation, (certains codes sont du coup plus performants que des codes compilés "statiquement": c.a.d a priori en dehors du contexte d'exécution) , il y a surement des gisements de performances dans cette optique mais du coup je ne comprends pas bien la philosophie de Graal : qu'est ce que la "compilation dynamique" alors?

    edit: grilled par plusieurs
    Ah, ils veulent dire la compilation VERS le bytecode?
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  8. #8
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Je pense que spyserver a compris la bonne chose. Je viens de lire un autre article qui a l'air d'aller en ce sens :
    Oracle soutient donc le projet « Graal », un compilateur Java dynamique écrit en... Java. Grâce à cette consanguinité, ce compilateur Just-In-Time (JIT) produit un code intermédiaire (bytecode) d'une très grande qualité, sans pour autant nécessiter un temps de compilation plus long que les compilateurs JIT existants ou consommer plus de mémoire vive.
    source

    Bon par contre la notion de "compilateur dynamique" n'est pas des plus parlante pour moi.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  9. #9
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    Citation Envoyé par spyserver Voir le message
    Désormais ils veulent faire ça :

    Java -> [Graal codé en Java] -> byteCode de meilleure qualité -> JVM
    dans le schéma que tu proposes, cela ressemble à un simple remplacement du compilateur par un "super" compilateur
    en quoi serait-il mieux que le JIT ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 268
    Points : 556
    Points
    556
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    dans le schéma que tu proposes, cela ressemble à un simple remplacement du compilateur par un "super" compilateur
    en quoi serait-il mieux que le JIT ?
    D'après les arguments qu'avance Oracle, ce serait par le fait que le compilateur soit développé en Java justement que le gain à la compilation se ferait.

  11. #11
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 22
    Points
    22
    Par défaut Pour faire avancer le chmilblick
    Si jamais ça vous parle plus
    moi j'en déduis que tu as un meilleur feedback sur ton dev éventuellement, mais bon c'est pas super clair...


    source : wiki Oracle à propos de Maxine :
    https://wikis.oracle.com/display/MaxineVM/Home


    Project Overview
    In this era of modern, managed languages we demand ever more from our virtual machines: better performance, more scalability, and support for the latest new languages. Research and experimentation is essential but no longer practical in the context of mature, complex, production VMs written in multiple languages.

    The Maxine VM is a next generation platform that establishes a new standard of productivity in this area of research. It is written entirely in Java, completely compatible with modern Java IDEs and the standard JDK, features a modular architecture that permits alternate implementations of subsystems such as GC and compilation to be plugged in, and is accompanied by a dedicated development tool (the Maxine Inspector) for debugging and visualizing nearly every aspect of the VM's runtime state.

    We actively encourage collaborations, and many of our collaborators have contributed to the Maxine VM while working as interns with the core team at Oracle Labs.

    The Maxine sources, including VM, Inspector, and other supporting tools, are Open Source and are licensed under GPL version 2.0.

    Features
    Some of the features of Maxine that make it a compelling platform for (J)VM research include:

    • Nearly all of the code base is written in Java and exploits advanced language features appearing in JDK 5 and beyond: for example annotations, static imports, and generics.
    • The VM integrates with Oracle's standard JDK. There's no need to download (and build) other implementations of the standard Java classes. In addition, Oracle's JDK is the most compliant and mature implementation of the standard Java classes available.
    • The source code supports development in Eclipse, Netbeans or IntelliJ all of which provide excellent support for cross-referencing and browsing the code. It also means that refactoring can be confidently employed to continuously improve the structure of the code.
    • The Maxine Inspector produces visualizations of nearly every aspect of the VM runtime state, and provides advanced, VM-specific debugging.
    • The workspace includes mx, a powerful command line tool for building the VM as well as launching other programs in the code base, such as the Inspector.
    • The VM and Inspector run on modern platforms.
    • The workspace is hosted in a Mercurial repository making downloading and collaboration easier.




    EDIT : quelques explications supplémentaires sur le concept de la JVM meta-circulaire.

    En gros avoir une JVM codée en java te permet de faire bénéficier à ta JVM des progrès du langage en lui-même, mais derrière se pose le pb de l'exécution...

    Source : http://chaosevolution.blogspot.com/2...cular-jvm.html

    "Metacircular VMs provide a very interesting model for reusability as well as performance. By implementing the VM in the language hosted inside of the VM, there is a co-evolution of features in the VM and in applications, and the VM itself can benefit from the features it is intended to provide. It's a bit hard to wrap your head around--a bit of a proverbial chicken-and-egg at times, but the bootstrapping process works out these kinks.

    This bootstrapping process is probably one of the only disadvantages of such an architecture. Whereas a VM built in natively compiled language would "just run", there is a complex process of image generation and layout that has to be worked through.

    As for the threading model, it would certainly be advantageous to gain advantage of the maximal threading performance available, likely through the thinnest abstraction from the kernel as possible, but as is mentioned, there are some circumstances where the JVM knows more about whats going on (such as the mentioned "uncontended locking), and therefore can achieve greater efficiencies. Therefore, I believe that a pluggable threading model is advantageous, such that the JVM can be tailored to the situation when necessary."

  12. #12
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 657
    Points
    2 657
    Par défaut
    Mais ce n'est pas le fait qu'il soit en JAVA qui le rend plus performant je suppose?
    C'est ce que fait le compilo et j'imagine que s'il est en JAVA c'est la cerise sur le gateau non?

  13. #13
    Membre averti

    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 68
    Points : 395
    Points
    395
    Par défaut
    Je pense que l'aspect dynamique signifie qu'il y a un démon (déjà démon, donc moins de temps de chargement) qui tourne pendant qu'on développe dans notre IDE et qui met à jour uniquement la partie de bytecode nécessaire par rapport à ce qu'on vient de modifier entre deux CTRL-S.

    Exemple : on a modifié uniquement le contenu d'une méthode, et on sauve dans notre IDE : uniquement la méthode est envoyée au démon (compilateur dynamique) qui remplace à chaud le bytecode dans le contexte d’exécution.

    Enfin, c'est une hypothèse.

  14. #14
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    Citation Envoyé par Flaburgan Voir le message
    Quelque chose que je ne comprends pas : pour s'exécuter, le bytecode java à besoin d'une machine virtuelle. Si la machine est elle même écrite en java, comment faut-elle pour s'exécuter ?
    En gros si j'ai bien compris, Maxine est exécutée par la HotSpot VM la première fois et ensuite c'est recursif : Maxine exécute Maxine ou un truc du genre. Pour plus d'infos : presentation de Maxine => page 29

    Citation Envoyé par Népomucène Voir le message
    Je n'ai toujours pas compris en quoi consiste le projet Graal :
    "compilateur dynamique dans la JVM"
    est-ce que cela veut dire qu'on peut exécuter des classes java directement sans passer par la compilation ?
    Citation Envoyé par deathness Voir le message
    Mais ce n'est pas le fait qu'il soit en JAVA qui le rend plus performant je suppose?
    C'est ce que fait le compilo et j'imagine que s'il est en JAVA c'est la cerise sur le gateau non?
    Graal n'est pas là, à priori pour remplacer Javac mais le compilateur JIT.
    De ce que j'ai compris, le dynamique vient du faire que qu'on peut rajouter dynamiquement des étapes à la compilation. De plus GRAAL peut-être modifié à la compilation (quand il compile) en fonction de la présence de certain lib native. Par exemple si une lib vectorielle est présente sur le système, on peut modifier à chaud l'implémentation d'un partie de la génération du code.
    Une précision, Graal n'est pas basé (basé impliquerai que Maxine soit un compilateur alors qu'elle ne fait que utiliser un compilateur via CRI) sur Maxine, mais sur C1X qui est (était ?) une partie du projet Maxine.

    @manu007 oui mais c'est déjà le cas actuellement avec le JIT

  15. #15
    Membre habitué
    Profil pro
    Consultant
    Inscrit en
    Janvier 2011
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 82
    Points : 132
    Points
    132
    Par défaut
    Si j'ai bien compris, ce serait le suivant :

    Java -> VM(Graal) -> code machine o assembleur -> Execution directe.

    Bon, c'est une façon de voir les choses. En fait, c'est un constat, java est d'une lenteur etoufante.

  16. #16
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    On ne comprend rien mais ça s'appelle Graal, ça doit donc surement être bien

    Citation Envoyé par HS
    - Que voulez-vous ?
    - Nous voulons ... un Jardinet ! (Ni Ni Ni ...)
    Excusez moi pour ce moment d'égarement..
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  17. #17
    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 manu007 Voir le message
    Si j'ai bien compris, ce serait le suivant :

    Java -> VM(Graal) -> code machine o assembleur -> Execution directe.
    Ca c'est ce qui est fait actuellement par le compilateur hotspot (plus ou moins poussé selon qu'on utilise le mode client ou serveur)...



    Citation Envoyé par manu007 Voir le message
    Bon, c'est une façon de voir les choses. En fait, c'est un constat, java est d'une lenteur etoufante.
    Rassures moi c'est une blague ? Ou alors ma 207 est une DeLorean maquillé qui m'a fait retourné en 1998 !??






    Sinon pour revenir au sujet, de ce que je peux comprendre Maxine est simplement une nouvelle JVM codé en Java dont l'intérêt est surtout d'offrir un architecture plus modulaire pour faciliter la recherche et l’expérimentation...



    a++

  18. #18
    En attente de confirmation mail
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2010
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 501
    Points : 1 060
    Points
    1 060
    Par défaut
    Ce que j'en comprend: l'objectif est de produire du code natif qui puisse s'appuyer sur la JVM pour la gestion des objets mémoire.

    Dans un premier temps, on pourrait imaginer que le compilateur (javac) produise directement du bytecode. Sauf que si tel est le cas, l'objet compilé n'a plus l'avantage d'être portable entre différents matériels ou OS.

    Pour conserver la portabilité des livrables, la conversion du bytecode en code natif est faite au runtime => c'est à ça que semble servir GRAAL et il est donc embarqué dans le JRE.


    Les applis iOS sont plus performantes car natives c'est un fait mais elles ne sont pas portables, ce dont apple se fiche car elles n'ont pas vocation à tourner ailleurs que sur leurs propres matériel.

  19. #19
    Membre averti
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Points : 366
    Points
    366
    Par défaut
    Bonne idée. Je suis impatient de tester tout ça.
    Battant

  20. #20
    Membre éclairé Avatar de rt15
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 262
    Points : 665
    Points
    665
    Par défaut
    Nouvelle tentative d'explication. Je crois qu'il y a quelques erreurs dans certains des postes ci-dessus.

    1/ Rappel de l'utilisation classique de java.

    Il y a deux phases pour passer du sources à l'exécutions :

    Ce que fait le développeur sur son poste ou autre serveur de compile :
    Code java (.java) -> [ javac.exe (JDK) ] -> Byte code java (.class).
    Ce qui se passe sur la machine utilisateur :
    Byte code java (.class) -> [ java.exe (JVM/JRE) ] -> Code machine.

    Java.exe est une une jvm. Elle inclut un compilo JIT (Qui compile au fil de l'eau) depuis le byte code vers le code machine processeur. Puis le code machine processeur est exécuté.

    2/ Maxine

    Maxine est simplement une JVM, mais écrite en java.
    Elle peut remplacer la JVM hotspot... Mais elle a besoin d'une autre jvm pour tourner !



    3/ C1X

    C'est le nom du compilo JIT de Maxine. Il s'agit globalement du compilo JIT de hotspot (C1), mais réécrit en java.

    4/ Graal

    Graal s'appelait auparavant le projet C1X4HotSpot.

    Comme ce nom l'indiquait mieux, le but de Graal est de transformer C1X pour le porter sur hotspot. Pour ça il on fait tout un tas d'interfaces pour que C1X puisse s'intégrer dans un peu tout et n'importe quoi.
    Donc historiquement:
    C1 (Dans Hotspot) -> C1X (Dans Maxine) -> Graal (Dans Hotspot, et d'autres).

    A terme, il est prévu que Graal remplace aussi C1X dans Maxine. Mais la priorité des devs est actuellement le port dans la hotspot.

    5/ Troll

    Cela dit, perso, je ne vois pas en quoi on peut espérer des vrais gains de perf à réécrire le compilo JIT en java.
    Par contre, il semblerait que Graal soit plus instrumentalisable (Des outils style débogueur pourrait se connecter dessus pour avoir plus d'information que ce qui est dispo à l'heure actuelle).
    Mais ces fonctionnalités additionnelles auraient certainement pu être ajoutées au projet original.

    « Pensez à coder en Java, le compiler en utilisant un compilateur écrit en Java, et en l’exécutant dans la JVM, qui est également écrite en Java. Java est présent sur toute la chaine et ouvre le chemin à une intégration transparente entre l’application et la VM »
    Alors lui il est sous acide et je ne sais pas de quoi il parle.
    Si c'est de Maxine, alors il oublie que sous sa belle jvm java, il y a une autre jvm.
    Si c'est de graal dans hotspot, alors il oublie que le compilo JIT n'est pas tout à fait le seul composant d'une jvm.

    Il reste tout ce qui se trouve entre les classes standards et l'OS.
    Exemple classes d'accès au fichiers -> CreateFile sous windows et open (Ou fopen) sous unix.

    Il reste aussi toute l'initialisation. Car il faut bien partir d'un fichier exécutable nativement (C'est pas pour faire jolie que java.exe, c'est un .exe, pas un .jar...). Et cette initialisation doit être suffisante pour démarrer une VM en java... Cela implique que cette initialisation soit elle même capable de compiler du byte code et en exécuter le résultat, au moins pour démarrer le compilo JIT lui même en byte code.


    Bref, un portage du compilo JIT en java, ça va pas changer la face du monde à mon avis.

Discussions similaires

  1. Réponses: 68
    Dernier message: 25/08/2015, 23h45
  2. [Java] Quel OS est utilisé dans les entreprises ?
    Par vinou33 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 12/02/2015, 10h56
  3. Réponses: 3
    Dernier message: 15/10/2010, 06h02
  4. question idiote sur terme utilisé dans les offres
    Par coyott dans le forum Emploi
    Réponses: 4
    Dernier message: 24/08/2005, 18h16

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