Une interrogation sur les langages interprétés et java

Une interrogation sur les langages interprétés et java - Divers - Programmation

Marsh Posté le 11-10-2004 à 12:12:34    

Bonjour,
 
depuis quelques jours j'ai une interrogation qui me trotte dans la tête et je n'arrive pas à y trouver de réponse.
 
Si j'ai bien compris :
Avec un langage interprété, l'interpréteur transcrit à la volée le source en langage machine qui est éxécuté.  
Avec Java, le source est d'abord compilé en langage de la machine virtuelle puis celle ci traduit son langage perso vers celui de la machine physique.
 
J'ai bon jusque là ?
 
si oui, ma question est la suivante : En excluant le langage en lui même, quel est l'intérêt du schéma adopté par java (compilation puis traduction) face à celui d'un langage interprété (transcription) ?
 
Sinon, autre question, est il possible et y aurait il un intérêt à compiler un langage interprété pour obtenir un éxécutable ? Si c'est possible ou non, est ce que c'est lié au langage en lui même ou est ce le fait qu'il soit interprété ?
 
Merci de vos éclaircissements.
A+


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 11-10-2004 à 12:12:34   

Reply

Marsh Posté le 11-10-2004 à 12:20:11    

Alors, le langage utilisé par Java est déjà compilé. La vérification de la syntaxe et des objets utilisés est déjà faite. De plus, le produit du compilateur Java est plus ou moins optimisé pour être facile à manipuler.
 
Ta remarque sur les langages interprétés est tout à fait valide. C'est la raison pour laquelle il existe un compilateur à Visual Basic (qui est pourant interprété à la base), ainsi qu'un projet appellé gcj, le Gnu Compiler pour Java, qui génère directement du code exécutable (sans JVM je crois).
 
Mais de nos jours, les JVMs sont très efficaces et sont capables de compiler le code à la volée, en utilisant plein de paramètres qui ne sont connus qu'à l'exécution (telle partie de code n'est jamais utilisée, alors que telle partie mérite d'être ultra-optimisée). Ca donne du code très performant.
 
L'intérêt de Java, c'est que tu as donc du code dont on a vérifié qu'il fonctionne, et qu'on a déjà compilé, mais qui reste indépendant des plate-formes. Et ça, ça vaut de l'or que d'avoir des fichiers exécutables portables (qui fonctionnent de la même façon sous Windows, Linux, Solaris, ou ton PalmPilot).


Message édité par Lam's le 11-10-2004 à 12:26:25
Reply

Marsh Posté le 11-10-2004 à 12:32:21    

Lam's a écrit :

Alors, le langage utilisé par Java est déjà compilé. La vérification de la syntaxe et des objets utilisés est déjà faite. De plus, le produit du compilateur Java est plus ou moins optimisé pour être facile à manipuler.
 
Ta remarque sur les langages interprétés est tout à fait valide. C'est la raison pour laquelle il existe un compilateur à Visual Basic (qui est pourant interprété à la base), ainsi qu'un projet appellé gcj, le Gnu Compiler pour Java, qui génère directement du code exécutable (sans JVM je crois).
 
Mais de nos jours, les JVMs sont très efficaces et sont capables de compiler le code à la volée, en utilisant plein de paramètres qui ne sont connus qu'à l'exécution (telle partie de code n'est jamais utilisée, alors que telle partie mérite d'être ultra-optimisée). Ca donne du code très performant.

L'intérêt de Java, c'est que tu as donc du code dont on a vérifié qu'il fonctionne, et qu'on a déjà compilé, mais qui reste indépendant des plate-formes. Et ça, ça vaut de l'or que d'avoir des fichiers exécutables portables (qui fonctionnent de la même façon sous Windows, Linux, Solaris, ou ton PalmPilot).



Merci pour tes réponses. :jap:
 
Une dernière chose, si je comprends bien la partie en gras, le soft réagit toujours de la même façon quelquesoit la plateforme où il est lancé (c'est la machine virtuelle qui s'occupe des différences) alors qu'avec de l'interprété pur, il peut y avoir une différence. J'ai bon ?
 
Merci


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 11-10-2004 à 12:44:11    

Euh oui et non :-) Ca fait bien ça, mais l'interprété le fait aussi a priori. C'est le code compilé qui ne le fait pas, puisqu'il te faudra le compiler pour chaque plate-forme cible. C'est donc ça l'un des avantages de Java par rapport à du compilé en mode natif.
 
L'autre intérêt en fait, comme tu l'as mentionné, c'est que Java définit le langage mais également l'environnement. Tu as donc une façon standard et portable de manipuler les fichiers, le réseau, la communication entre process, etc.
 
Et l'avantage par rapport à de l'interprété pur, c'est sa vitesse, et le fait que le code ait été vérifié et compilé.
 

Reply

Marsh Posté le 11-10-2004 à 12:48:03    

Ok, là c'est plus clair :jap:
 
merci pour ces explications


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed