Java pourrait être doté d’un interpréteur boucle : lecture - évaluation – impression (REPL)
le projet Kulla nait sur OpenJDK

Mise à jour du 02/10/2014 : le projet Kulla approuvé

Le JDK sera doté dans une version future de fonctionnalités REPL (Read Evaluate Print Loop). Après un vote qui a eu lieu le 15 septembre dernier, le projet Kulla a été adopté par 14 voix pour, contre 0 vote négatif et aucun veto.

La JEP (JDK Enhancement Proposal) du projet est déjà disponible en ligne. Elle servira de feuille de route pour son développement. Elle décrit notamment les objectifs du projet, les motivations, les alternatives, les risques, etc.

Dans ce document, on apprend que la rétroaction immédiate qu’apportera ce projet est importante lors de l’apprentissage d’un langage de programmation. En raison de cette omission, de nombreuses écoles se sont éloignées de Java pour adopter des langages comme Python, qui disposent d’un REPL.

Selon la JEP du projet, ces fonctionnalités feront partie du JDK 9.

Consulter la JEP du projet

Maj de Hinault Romaric

La plateforme Java pourrait dans le futur être dotée de fonctionnalités REPL (Read Evaluate Print Loop) comme pour le langage de programmation LISP.

Les développeurs d’OpenJDK, la déclinaison open source de Java, étudient la possibilité d’ajouter officiellement l’outil au langage de programmation.

La discussion est effectuée dans le cadre du projet Kulla, qui a vu le jour le 27 août dernier. La mise en œuvre d’un tel programme permettra une programmation interactive, de telle sorte que tout ce qui entre au clavier est systématiquement évalué.

Avec ce mode de fonctionnement basé sur une boucle : lecture - évaluation – impression (REPL), l'interpréteur :

  • R : lit une expression ;
  • E : évalue (calcule le résultat de) cette expression ;
  • P : imprime sur la sortie standard le résultat de l'évaluation ;
  • L : recommence en R.



« Du point de vue du développeur, il est agréable d’être en mesure d’interagir avec le code pendant son exécution en temps réel, sans avoir à recompiler/redéployer », soutient Michael Facemire, analyste chez Forrester.

REPL est déjà implémenté dans la plupart des langages dynamiques et fonctionnels, y compris Scala et Clojure. Une implémentation pour Java existe même déjà en ligne sur GitHub. Cependant, Martin Odersky, fondateur de Scala, voit des limites à l’utilisation de REPL dans Java.

« Le problème avec Java est que c’est un langage fondamentalement orienté déclaration. Vous écrivez une déclaration, et c’est lorsqu’elle s’exécute qu’elle a un effet. REPL en revanche est orienté expression. Vous écrivez une expression et REPL montre le résultat, un peu comme une calculatrice », explique Martin Odersky, qui estime que REPL ne sera pas aussi utile avec Java que pour un langage orienté expression.

Le vote pour le projet va débuter le 10 septembre prochain. S’il est approuvé, le code cloné à partir de JDK9 sera utilisé pour créer l’outil.


Source : OpenJDK


Et vous ?

Que pensez-vous de ce projet ? REPL est-il utile pour le langage Java ?