Есть ли что-то вроде интерактивного режима REPL в Python, но для Java? - PullRequest
92 голосов
/ 29 декабря 2008

Есть ли что-то вроде интерактивного режима REPL в Python, но для Java? Так что я могу, например, напечатать InetAddress.getAllByName( localHostName ) в окне и сразу же получить результаты, без всего этого публичного статического void nightmare ()?

Ответы [ 28 ]

8 голосов
/ 29 декабря 2008

Clojure предоставляет REPL, который вы можете использовать.

7 голосов
/ 29 декабря 2008

Scala также предлагает интерактивную консоль. Я смог использовать его, чтобы получить результат для выражения в вашем вопросе, полностью квалифицировав InetAddress, как в:

java.net.InetAddress.getAllByName("localhost")
7 голосов
/ 29 декабря 2008

Groovy Console позволяет вам сделать это. На самом деле он предназначался для тестирования и тестирования groovy-кода, но поскольку groovy - это расширенный набор Java, он также допускает простой Java-материал.

Я только что ввел это в консоль:

InetAddress.getAllByName('localhost')

и нажмите CTRL-R, затем он вернется:

groovy> InetAddress.getAllByName('localhost')

Result: [localhost/127.0.0.1]
6 голосов
/ 12 апреля 2013

В то время как JRuby , BeanShell , REPL Джулиана Флейшера есть REPL Альберта Латача кажется самым последним и активным.

Пробовал с простым определением класса, отлично работает.

$ 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);
3 голосов
/ 30 марта 2009

Для людей, имеющих доступ к Mathematica, JLink позволяет получить доступ к Java и сценариям с помощью кода Mathematica:

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

Нажмите Shift-Enter, чтобы оценить, и вы получите

{<<JavaObject[java.net.Inet4Address>>}

Затем вы можете использовать функцию Map в Mathematica для вызова toString возвращаемых объектов:

#@toString[]& /@ %

чтобы получить результат (или использовать менее запутанный синтаксис, Map[Function[obj, obj@toString[]], %]):

{"localhost/127.0.0.1"}

Если вы начнете серьезно относиться к этому, вы можете прочитать учебник Тодда Гейли по адресу http://reference.wolfram.com/mathematica/JLink/tutorial/Overview.html.

2 голосов
/ 14 апреля 2010

Если вы уже знаете Groovy (что, как я полагаю, вам известно, поскольку вы упомянули Groovy Console), просто используйте groovysh или groovyConsole, входящие в дистрибутив Groovy. Если у вас есть пользовательские файлы jar, которые вы хотите импортировать, вы можете написать пакетный файл, который запускает groovysh / groovyConsole с теми, которые добавляются в classpath. Вы также можете сделать это

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

изнутри оболочки для загрузки других банок.

Я использовал Jython несколько лет назад, чтобы делать то, что вы просите. Как часть моего сценария сборки, я сгенерировал пользовательский файл jython.bat и .py, который включал полный путь к классу для проекта, над которым я работал. Таким образом, когда я запустил Jython, у него был бы весь доступный код, и это вызвало бы Spring, чтобы позволить мне вертеть вещи в живой системе. Вы можете сделать то же самое с Groovy, JRuby, BeanShell и т. Д.

2 голосов
/ 09 октября 2012
2 голосов
/ 09 сентября 2010

Вы можете написать скрипт java, используя jruby http://kenai.com/projects/jruby/pages/CallingJavaFromJRuby

1 голос
/ 01 марта 2012
1 голос
/ 23 октября 2009

Вы можете взглянуть на BlueJ , который представляет собой интерактивную среду разработки Java, предназначенную для обучения ООП, а не полную IDE, такую ​​как Eclipse или NetBeans. В любом случае, весело играть с ним.

Вы можете увидеть его в действии на YouTube в серии руководств по Java.

...