Y a-t-il quelque chose comme le 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 cela chose cauchemar () vide public statique?
modifier Depuis Java 9 il y a JShell
La réponse originale suit
Vous pouvez également utiliser Groovy Console . Il s'agit d'une console interactive où vous pouvez faire ce que vous voulez. Étant donné que Groovy inclut également des classes de la plate-forme principale Java, vous pourrez également utiliser ces classes.
Cela ressemble à ceci:
Eclipse a une fonctionnalité pour le faire, bien que ce ne soit pas une boucle. Cela s'appelle une "page d'album". Je suppose que l'analogie est censée être que vous avez un album où vous collectez de petits extraits de code.
Quoi qu'il en soit, pour le faire fonctionner, ouvrez un projet dans Eclipse (votre page Scrapbook va être associée à un projet - Eclipse aime quand les projets possèdent des choses).
Alors:
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 Contrôle-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 saisir une expression, la sélectionner et sélectionner Afficher dans le menu contextuel. Il évaluera l'expression et imprimera son type. Par exemple, exécuter Display sur 1 + 2
imprimera (int) 3
.
BeanShell est un petit interpréteur de source gratuit, intégrable Java avec des fonctionnalités de langage de script d'objet, écrit en Java. BeanShell exécute dynamiquement la syntaxe standard Java et l'étend avec des des fonctionnalités de script telles que des types, des commandes et des fermetures de méthodes lâches comme celles de Perl et JavaScript. Vous pouvez utiliser BeanShell de manière interactive pour Java expérimentation et débogage, ainsi que pour étendre vos applications de nouvelles façons. Scripting Java se prête à une grande variété d'applications, y compris le prototypage rapide, l'extension de script utilisateur, les moteurs de règles, la configuration, les tests, le déploiement dynamique, les systèmes embarqués et même Java = éducation.
http://www.beanshell.org/manual/syntax.html#Standard_Java_Syntax
Vous pouvez utiliser les pages d'album Eclipse.
Dans Eclipse, créez une page Scrapbook. Dans votre projet, page Nouveau-> Autre-> Scrapbook.
Dans le fichier, entrez du texte, sélectionnez-le et appuyez sur ctrl-U, et c'est parti.
Pour gérer vos importations, faites un clic droit sur la page et sélectionnez Définir les importations, où vous pouvez choisir d'importer un package ou une seule classe. Ceci est persistant et est enregistré avec la page.
Vieille 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 git hub 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
. Elle est indépendante du langage (elle peut donc être utilisée avec Jython, JRuby, etc.). Il utilise par défaut JavaScript (Rhino) qui est également fourni par défaut, et comme les autres langages, vous pouvez accéder à tous les packages/objets disponibles sur le chemin de classe.
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
.
Comme alternative à 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 Java objets).
>>> 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])
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.
Clojure fournit un REPL que vous pouvez utiliser.
Scala propose également une console interactive. J'ai pu l'utiliser pour obtenir un résultat pour l'expression dans votre question en qualifiant pleinement InetAddress, comme dans:
Java.net.InetAddress.getAllByName("localhost")
La console groovy vous permet de le faire. En fait, il était destiné à essayer de tester du code groovy, mais comme groovy est un sur-ensemble de Java, il permet également des choses simples Java).
Je viens de saisir ceci dans la console:
InetAddress.getAllByName('localhost')
et appuyez sur CTRL-R, puis il est revenu:
groovy> InetAddress.getAllByName('localhost')
Result: [localhost/127.0.0.1]
Alors que JRuby , BeanShell , REPL de Julian Fleischer sont là REPL d'Albert Latacz semble être le dernier et actif.
Je l'ai essayé avec une définition de classe simple, ça marche 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(String [] s) {
| System.out.println(54353 + s[0]);
| }}
Java> Test.execute(new String [] {"234343"});
54353234343
Java> System.exit(0);
Pour les personnes ayant accès à Mathematica, JLink vous permet d'accéder à Java et script avec le code Mathematica:
Needs["JLink`"]
LoadJavaClass["Java.net.InetAddress"]
InetAddress`getAllByName["localhost"]
Appuyez sur Maj + Entrée pour évaluer, et vous obtenez
{<<JavaObject[Java.net.Inet4Address>>}
Ensuite, vous pouvez utiliser la fonction Map de Mathematica pour appeler toString
sur les objets retournés:
#@toString[]& /@ %
pour obtenir le résultat (ou pour utiliser la syntaxe moins obscure, Map[Function[obj, obj@toString[]], %]
):
{"localhost/127.0.0.1"}
Si vous commencez à être sérieux avec cela, vous voudrez lire le tutoriel de Todd Gayley sur http://reference.wolfram.com/mathematica/JLink/tutorial/Overview.html .
vous pouvez script Java using jruby http://kenai.com/projects/jruby/pages/CallingJavaFromJRuby
Si vous connaissez déjà Groovy (ce que je suppose que vous connaissez, puisque vous avez mentionné la console Groovy), utilisez simplement groovysh ou groovyConsole, qui sont inclus dans la distribution Groovy. Si vous souhaitez importer des fichiers JAR personnalisés, vous pouvez soit écrire un fichier batch qui démarre groovysh/groovyConsole avec ceux ajoutés au chemin de classe. Vous pouvez aussi faire ça
this.class.classLoader.rootLoader.addURL(new URL("file:///path to file"))
depuis l'intérieur du Shell pour charger d'autres pots.
J'ai utilisé Jython il y a plusieurs années pour faire exactement ce que vous demandez. Dans le cadre de mon script de génération, j'ai généré un fichier jython.bat et .py personnalisé qui comprenait le chemin de classe complet pour le projet sur lequel je travaillais. De cette façon, quand j'ai commencé Jython, il aurait tout le code disponible, et cela ferait ressortir Spring pour me permettre de tordre les choses dans le système en direct. Vous pouvez faire la même chose avec Groovy, JRuby, BeanShell, etc.
Java 9 fournit le JShell.
jshell> println( "Print me!")
jshell> Print me!
JPad est un bloc-notes 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 vider des collections, des listes, des cartes, etc. et permet de les rendre sous forme de tableau ou de graphique:
Pour Java 8, il y a Nudge4j. Voir https://github.com/lorenzoongithub/Nudge4j
... et la beauté est que vous pouvez piloter votre application depuis le navigateur
Il y a un simple IDE appelé DrJava qui a une console Interactions. Il fonctionne exactement comme je m'y attendais. Il suffit de charger un fichier et de commencer à interagir avec les objets qu'il contient.
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).
DrJava est un didacticiel IDE qui comprend un volet REPL.
Il existe également un plugin Eclipse, mais cela n'a pas fonctionné pour moi. Je pense qu'il n'a tout simplement pas été mis à jour depuis un certain temps. 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 pourrait aussi être bon, mais je ne l'ai pas encore utilisé.
Il y a un REPL en ligne: http://www.javarepl.com/console.html
Taper plus pour atteindre la limite de caractères ...
Jython, JIRB pour JRuby, Groovy (groovyconsole et al) et Beanshell sont toutes des options viables.
J'ai utilisé le InteractiveConsole
pour Jython, cela a vraiment bien fonctionné dans l'application.