Y a-t-il quelque chose comme le mode REPL interactif de python, mais pour Java?

Y a-t-il quelque chose comme le mode REPL interactif de python, mais pour Java? Pour que je puisse, par exemple, taper InetAddress.getAllByName( localHostName ) dans une fenêtre et obtenir immédiatement des résultats, sans tout ce truc de cauchemar vide statique public?

Vous pouvez également utiliser Groovy Console . C’est une console interactive où vous pouvez faire ce que vous voulez. Comme Groovy inclut également des classes de la plate-forme Java, vous pourrez également utiliser ces classes.

MODIFIER

Cela ressemble à ceci:

Capture d'écran de Groovy

Eclipse a une fonctionnalité pour faire cela, bien que ce ne soit pas une boucle. C’est ce qu’on appelle une “page Scrapbook”. Je suppose que l’analogie est censée être que vous avez un album où vous collectez des petits bouts de code.

Quoi qu’il en soit, pour que cela fonctionne, ouvrez un projet dans Eclipse (votre page Scrapbook va être associée à un projet – Eclipse l’aime bien quand les projets lui appartiennent).

Alors:

  1. Dans la fenêtre du navigateur de projet, sélectionnez un dossier qui existe quelque part dans votre projet.
  2. Soit sélectionnez le menu Fichier -> Nouveau -> Autre, ou appuyez sur Control-N.
  3. Sélectionnez Java -> Java Run / Debug -> Scrapbook Page.
  4. Appuyez sur “Suivant”, puis donnez-lui un nom de fichier, puis appuyez sur “Terminer”.

Vous avez maintenant une page d’album. Tapez du code, comme peut-être ceci:

System.out.println(System.getProperties());

Sélectionnez ensuite le texte avec la souris et appuyez sur Ctrl-U ou sélectionnez “Exécuter” dans le menu contextuel. Le code s’exécutera et la sortie apparaîtra sur la console.

Vous pouvez également taper une expression, la sélectionner et sélectionner Afficher dans le menu contextuel. Il évaluera l’expression et imprimera son type. Par exemple, l’exécution de Display sur 1 + 2 imprimera (int) 3 .

BeanShell est un petit interpréteur source Java incorporable gratuit avec des fonctionnalités de langage de script d’object, écrit en Java. BeanShell exécute de manière dynamic la syntaxe Java standard et l’étend avec les fonctionnalités courantes de script telles que les types libres, les commandes et les fermetures de méthodes comme celles de Perl et de JavaScript. Vous pouvez utiliser BeanShell de manière interactive pour l’expérimentation et le débogage Java, ainsi que pour étendre vos applications de manière nouvelle. Scripting Java se prête à une grande variété d’applications, notamment le prototypage rapide, l’extension de script utilisateur, les moteurs de règles, la configuration, les tests, le déploiement dynamic, les systèmes intégrés et même la formation Java.

http://www.beanshell.org/

http://www.beanshell.org/manual/syntax.html#Standard_Java_Syntax

Vous pouvez utiliser les pages Eclipse Scrapbook.

Dans Eclipse, créez une page Scrapbook. Dans votre projet, Nouvelle page-> Autre-> Scrapbook.

Dans le fichier, entrez du texte, sélectionnez-le et appuyez sur ctrl-U, et voilà.

Pour gérer vos importations, cliquez avec le bouton droit de la souris sur la page et sélectionnez Définir les importations, où vous pouvez choisir d’importer un package ou une classe unique. Ceci est persistant et est enregistré avec la page.

Ancienne question, mais il y a une meilleure réponse maintenant (mai 2013) – java-REPL! Il est disponible sur github et également disponible en direct sur le site Web java-repl pour des tests ponctuels rapides.

Si vous récupérez le code du concentrateur git et exécutez ant pour générer les artefacts, vous pouvez le rendre facile à utiliser avec un petit script comme:

 #!/bin/sh java -jar /home/rdahlgren/scripts/javarepl-dev.build.jar 

Depuis que j’ai trouvé ce projet, je l’utilise probablement 5 fois par jour. Prendre plaisir!

Il semble que personne n’ait encore mentionné que Java (6, 7) expédie une console REPL appelée jrunscript . C’est un langage indépendant (peut donc être utilisé avec Jython, JRuby, etc.). Par défaut, JavaScript (Rhino) est également fourni par défaut et, comme les autres langages, vous pouvez accéder à tous les paquets / objects disponibles sur le chemin de classe.

Au lieu de Groovy, essayez Beanshell: http://www.beanshell.org/

Il ressemble davantage à Java et vous permet d’utiliser directement la syntaxe Java.

Jython est une implémentation Python qui vous permet d’inspecter et d’interagir avec des objects Java.

 >>> from java.net import * >>> InetAddress.getAllByName("google.com") array(java.net.InetAddress,[google.com/209.85.171.100, google.com/74.125.45.100, google.com/74.125.67.100]) 

Cela fait partie d’OpenJDK 9!

Un REPL appelé JShell (développé par Oracle) a été publié dans le cadre du JDK 9.

Téléchargez simplement JDK 9 et lancez bin/jshell .

Capture d'écran de JShell

Ressources

  • blogs.oracle.com: Inside JShell
  • DZone: Java 9 (Part 2): JShell Step by Step
  • Projet OpenJDK Kulla
  • Proposition d’amélioration Java, JEP 222: jshell: Java Shell (boucle lecture-évaluation-impression)

Java-REPL par Albert Latacz fonctionne bien.

Vous pouvez l’essayer directement depuis votre navigateur ici: http://www.javarepl.com/term.html

Le code source est disponible ici, et il a un plugin Intelli-J décent.

https://github.com/albertlatacz/java-repl

Clojure fournit un REPL que vous pouvez utiliser.

La console groovy vous permet de le faire. Il était en fait destiné à tester et tester le code groovy, mais comme groovy est un sur-ensemble de Java, il permet également d’utiliser des éléments Java simples.

Je viens d’entrer ceci dans la console:

 InetAddress.getAllByName('localhost') 

et appuyez sur CTRL-R, puis il a retourné:

 groovy> InetAddress.getAllByName('localhost') Result: [localhost/127.0.0.1] 

Scala propose également une console interactive. J’ai pu l’utiliser pour obtenir un résultat pour l’expression dans votre question en qualifiant complètement InetAddress, comme dans:

 java.net.InetAddress.getAllByName("localhost") 

Alors que JRuby , BeanShell , le REPL de Julian Fleischer sont là, le REPL d’Albert Latacz semble être le dernier et le plus actif.

Essayé avec une définition de classe simple, fonctionne bien.

 $ java -jar javarepl.jar Welcome to JavaREPL version 56 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_17) Type in expression to evaluate. Type :help for more options. java> public class Test { | public static void execute(Ssortingng [] s) { | System.out.println(54353 + s[0]); | }} java> Test.execute(new Ssortingng [] {"234343"}); 54353234343 java> System.exit(0); 

Pour les personnes ayant access à Mathematica, JLink vous permet d’accéder à Java et au script avec le code Mathematica:

 Needs["JLink`"] LoadJavaClass["java.net.InetAddress"] InetAddress`getAllByName["localhost"] 

Hit Shift-Enter pour évaluer, et vous obtenez

 {< >} 

Ensuite, vous pouvez utiliser la fonction Map de Mathematica pour appeler toSsortingng sur les objects renvoyés:

 #@toSsortingng[]& /@ % 

pour obtenir le résultat (ou pour utiliser la syntaxe moins obscure, Map[Function[obj, obj@toSsortingng[]], %] ):

 {"localhost/127.0.0.1"} 

Si vous commencez à devenir sérieux avec ceci, vous voudrez lire le tutoriel de Todd Gayley à http://reference.wolfram.com/mathematica/JLink/tutorial/Overview.html .

Si vous connaissez déjà Groovy (ce que vous supposez, puisque vous avez mentionné la Groovy Console), utilisez simplement groovysh ou groovyConsole, qui sont inclus dans la dissortingbution Groovy. Si vous souhaitez importer des fichiers jar personnalisés, vous pouvez soit écrire un fichier de commandes qui démarre groovysh / groovyConsole avec ceux ajoutés au classpath. Vous pouvez aussi le faire

 this.class.classLoader.rootLoader.addURL(new URL("file:///path to file")) 

de l’intérieur de la shell pour charger d’autres pots.

J’utilisais Jython il y a plusieurs années pour faire exactement ce que vous demandiez. Dans le cadre de mon script de compilation, j’ai généré un fichier jython.bat et .py personnalisé qui incluait le chemin de classe complet du projet sur lequel je travaillais. De cette façon, lorsque j’ai démarré Jython, tout le code serait disponible, et Spring me laisserait manipuler le système en direct. Vous pouvez faire la même chose avec Groovy, JRuby, BeanShell, etc.

vous pouvez créer un script java en utilisant jruby http://kenai.com/projects/jruby/pages/CallingJavaFromJRuby

La plupart des IDE ont une fenêtre appelée quelque chose comme “mode immédiat” qui vous permettra d’évaluer le code Java à la volée.

Vous pouvez consulter BlueJ, un environnement de développement Java interactif conçu pour enseigner la POO plutôt que comme IDE complet comme Eclipse ou NetBeans. C’est amusant de jouer avec.

Vous pouvez le voir en action sur YouTube dans une série de didacticiels Java.

DrJava est un IDE éducatif comprenant un volet REPL.

Il y a aussi un plugin Eclipse, mais ça n’a pas fonctionné pour moi. Je pense que ça n’a pas été mis à jour depuis longtemps. Donc, ce que je fais généralement, c’est de garder une fenêtre DrJava ouverte pour les questions “Que se passe-t-il si je fais cela”.

EclipseShell est peut-être bien aussi, mais je ne l’ai pas encore utilisé.

Beanshell 2

Il existe un IDE simple appelé DrJava qui possède une console Interactions. Cela fonctionne exactement comme je m’y attendais. Chargez simplement un fichier et commencez à interagir avec les objects qu’il contient.

Il y a une REPL en ligne: http://www.javarepl.com/console.html

Taper plus pour atteindre la limite de caractères …

Pour Java 8, il y a nudge4j. voir https://github.com/lorenzoongithub/nudge4j

nudge4j java repl

… et la beauté est que vous pouvez piloter votre application à partir du navigateur

JPad est un scratchpad java avec un REPL intégré:

 C:\>jpad _ _____ _ | | __ \ | | | | |__) |_ _ __| | _ | | ___/ _` |/ _` | | |__| | | | (_| | (_| | \____/|_| \__,_|\__,_| Anything you type is evaluated as java. The code is continuously appended until you call \clear. Other Available Commands: \exit - exit \clear (n) - clear past java statements \history - display all past java statements \help - display this help j>2+2 4 j>Math.sin(100.1) -0.4177477 j> 

Il est également intelligent pour le dumping des collections, des listes, des cartes, etc. et permet de les rendre sous forme de tableau ou de graphique:

entrer la description de l'image ici

Java 9 fournit le JShell.

 jshell> println( "Print me!") jshell> Print me! 

Jython, JIRB pour JRuby, Groovy (groovyconsole et al) et Beanshell sont tous des options viables.

J’ai utilisé InteractiveConsole pour Jython, cela fonctionnait vraiment bien dans l’application.