2010-06-30 8 views
3

Je suis conscient que j2se 6 a introduit l'API JavaCompiler; Cependant, il est difficile à utiliser et nécessite un JDK pas JRE.Java - Compilation dynamique sans JDK

Est-il possible de faire une compilation dynamique sans JDK? (im très intéressé par tous en mémoire la compilation.)

En outre, je pense la performance d'être proche du code java cru, donc je ne veux pas utiliser un langage de script comme BeanShell ou Groovy.

merci.

+0

Avez-vous référencé l'un des langages de script? Comment savez-vous s'ils ne sont pas assez rapides? – skaffman

+0

BeanShell et Groovy sont assez différents. Groovy compile en fichiers de classe Java réguliers. –

+0

c'est la partie confuse en ce qui concerne le fait qu'il compile en code octet. J'ai vu beaucoup de repères comparant groovy avec java cru, et la différence qui en résulte est substantielle (bien qu'ils ne soient pas destinés à être précis, la lenteur est en effet très évidente). J'utilise actuellement le beanshell, c'est très lent en pratique. Donc je suis à la recherche de meilleures solutions. – Defd

Répondre

3

Vous pourriez être intéressé par Janino, particulièrement SimpleCompiler. Pour la compilation en mémoire, vous pouvez utiliser Reader constructor et StringReader.

+0

+1 c'est vraiment pratique. Je ne sais toujours pas pourquoi Groovy est plus lent. – Defd

+0

Juste une supposition, mais Groovy pourrait être retenu en faisant des vérifications de type à l'exécution (le coût de la frappe dynamique). Compiler en bytecode rendrait plus rapide le passage des lignes de code (qui ne sont plus des "lignes"), mais les vérifications de type doivent encore être faites. –