IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Téléchargé 3 fois
Vote des utilisateurs
0 
0 
Détails
Éditeur : GNU
Licence : GPL
Mise en ligne le 4 décembre 2017
Plate-formes : Linux, Mac, Windows
Langue : Anglais
Référencé dans
Navigation

GCJ

GCJ (GNU Compiler for Java) est le compilateur Java du projet GNU. C'est un logiciel libre qui fait partie intégrante de GNU Compiler Collection.
Contrairement au compilateur du SDK Java de Sun Microsystems, il est capable de produire du code natif pour l'architecture matérielle. GCJ est également capable de fonctionner comme un compilateur Java classique (code source Java vers du bytecode Java) ou de transformer du bytecode vers du code natif. La plupart des bibliothèques Java utilisées par GCJ viennent du projet GNU Classpath.
Avatar de Mobius
Membre confirmé https://www.developpez.com
Le 14/01/2011 à 14:14
Je commence à m'intéresser à ce compilateur.
Je cherche le moyen de transformer un fichier .class contenant du bytecode en un autre fichier .class contenant du code natif.
Sais tu si c'est possible ?
Avatar de adiGuba
Expert éminent sénior https://www.developpez.com
Le 16/01/2011 à 10:03
Salut,

Citation Envoyé par Mobius Voir le message
en un autre fichier .class contenant du code natif.
Ce n'est pas possible... Enfin en tout cas le résultat ne pourra pas être un fichier .class mais un fichier natif dépendant du système d'exploitation et de l'architecture matérielle.

Pourquoi cherches-tu à faire cela ?

a++
Avatar de Mobius
Membre confirmé https://www.developpez.com
Le 16/01/2011 à 10:18
Citation Envoyé par adiGuba Voir le message
Ce n'est pas possible... Enfin en tout cas le résultat ne pourra pas être un fichier .class mais un fichier natif dépendant du système d'exploitation et de l'architecture matérielle.

Pourquoi cherches-tu à faire cela ?
C'est pour faire de l'Ahead of time (AOT) compilation. C'est à dire de précompiler les class java (un peu comme pour le faire la compilation "Just In Time" (JIT) ).
J'ai besoin d'effectuer cela dans un contexte de Java temps réel.

En approfondissant mes recherche j'ai vu un utilitaire aot-compile fournis avec GCJ qui permetterai de faire ce que je cherche. Par contre je n'arrive pas a le faire fonctionner pour le moment.
Avatar de adiGuba
Expert éminent sénior https://www.developpez.com
Le 16/01/2011 à 10:31
Ben l'AOT consiste à générer un fichier binaire natif, donc plus de fichier .class mais un fichier dépendant du système. Donc il suffirait de compiler avec GCJ...

Maintenant pour du temps-réel il y a d'autres contraintes qui pourrait poser problème comme le GarbageCollector, mais je ne maitrise pas trop tout cela.

a++
Avatar de Mobius
Membre confirmé https://www.developpez.com
Le 16/01/2011 à 23:26
GCJ permet en effet de compiler l'application dans son ensemble pour générer une application. Le problème c'est que sur le projet sur lequel je travail, certaines contraintes m'empêche de compiler l'application dans son ensemble.
Certaine portion de code que je sais critique doivent être compilé afin de limiter les latences induite par l'interprétation du bytecode par la JVM.

Pour y arrivé j'ai pensé à l'AOT qui pour moi consistait à remplacer des classes contenant du bytecode par des classes contenant du code natif (et bien sur dépedant du système). Par ailleur, j'ai lu plusieurs article qui indiquait que cela était faisable. Je ne sais cependant toujours pas comment.
J'ai lu récement un article qui indique que l'utilitaire "javat" rend ce service pour des système IRIX.
javat takes a Java .class file (the file that contains the byte code that implements the methods of a class), reads and converts the byte codes into native MIPS instructions and stores the translated code back into the .class file along with the byte code.
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.