Il y a eu n certain buzz à propos d'un outil appelé sjavac
sur les listes de diffusion OpenJDK. En outre, il existe deux JEP associés: JEP 139: Améliorez javac pour améliorer la vitesse de construction et JEP 199: Smart Java Compilation, Phase Two .
Mes questions sont:
sjavac
exactement?Avertissement: question à réponse automatique. Je voulais juste apporter la connaissance de cet outil à la communauté StackOverflow et créer une référence à la future FAQ sjavac.
Qu'est-ce que l'outil sjavac exactement?
L'outil sjavac
est un (prétendument intelligent) wrapper autour de javac
, développé chez Oracle et destiné à fournir les fonctionnalités suivantes:
Lors de la recompilation d'un ensemble de fichiers source, javac examine les horodatages des fichiers .Java et .class pour déterminer ce qu'il faut conserver et quoi recompiler. C'est incroyablement grossier et peut être dévastateur pour les grandes bases de code. En plus des horodatages, sjavac inspecte l'API publique des dépendances pour déterminer quels fichiers doivent être recompilés.
Sjavac tente également de diviser la compilation en plusieurs invocations de javac. En d'autres termes, cela apporte un haut niveau de parallélisme au processus de construction.
Enfin, l'outil sjavac est divisé en une partie client et une partie serveur qui vous permet de laisser sjavac fonctionner en arrière-plan, JIT'ed et prêt à être utilisé lors d'appels consécutifs.
À qui est-il destiné?
Les personnes qui travaillent sur de grands projets et recompilent fréquemment la base de code pendant le développement sont encouragées à essayer sjavac
. (Sachez cependant que l'outil est en cours de développement et qu'il y a encore des problèmes en suspens.)
Comment l'utiliser?
L'outil n'est pas encore livré avec OpenJDK, vous devrez donc le récupérer à partir du OpenJDK jdk9/dev repository . De plus, il n'y a pas encore de lanceur en place, vous pouvez donc l'invoquer avec Java com.Sun.tools.sjavac.Main
.
Vous pouvez essayer le backport jdk8 de sjavac ici: http://sjavac.s3-website-eu-west-1.amazonaws.com/