Graal : le compilateur dynamique Java pourrait être utilisé dans les JVM
Pour de meilleures performances

Les rubriques (actu, forums, tutos) de Développez
Tags
Réseaux sociaux


 Discussion forum

Le , par Hinault Romaric, Responsable Actualités
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 avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Flaburgan Flaburgan
http://www.developpez.com
Modérateur
le 15/02/2012 8:53
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 ?
Avatar de Niark13 Niark13
http://www.developpez.com
Membre chevronné
le 15/02/2012 9:01
En gros, on peut dire que Graal est à Java ce que Pypy est à Python, c'est ça ?
Avatar de JoeChip JoeChip
http://www.developpez.com
Membre chevronné
le 15/02/2012 9:11
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 ?
Avatar de Népomucène Népomucène
http://www.developpez.com
Expert Confirmé
le 15/02/2012 9:48
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 ?
Avatar de spyserver spyserver
http://www.developpez.com
Membre confirmé
le 15/02/2012 9:56
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 ...
Avatar de professeur shadoko professeur shadoko
http://www.developpez.com
Membre Expert
le 15/02/2012 9:58
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?
Avatar de Robin56 Robin56
http://www.developpez.com
Modérateur
le 15/02/2012 10:12
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.
Avatar de Népomucène Népomucène
http://www.developpez.com
Expert Confirmé
le 15/02/2012 10:15
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 ?
Avatar de spyserver spyserver
http://www.developpez.com
Membre confirmé
le 15/02/2012 10:25
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.
Avatar de jayishappy jayishappy
http://www.developpez.com
Candidat au titre de Membre du Club
le 15/02/2012 10:42
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."
Offres d'emploi IT
Ingénieur Système Open Unix (H/F)
CDI
BNP PARIBAS PARTNERS FOR INNOVATION - Ile de France - Paris
Parue le 25/09/2014
Architecte Technique JAVA/J2E H/F
CDI
Sogeti - IDF - Central - Ile de France - Issy les Moulineaux (92136)
Parue le 21/10/2014
Chef de projet e-commerce
CDI
Damart - Nord Pas-de-Calais - Roubaix (59100)
Parue le 14/10/2014

Voir plus d'offres Voir la carte des offres IT
 
 
 
 
Partenaires

PlanetHoster
Ikoula