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

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

Ответы [ 28 ]

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

редактировать Начиная с Java 9 JShell

Исходный ответ следует

Вы также можете использовать Groovy Console . Это интерактивная консоль, где вы можете делать то, что вы хотите. Поскольку Groovy также включает классы из базовой платформы Java, вы также сможете использовать эти классы.

Это выглядит так:

Screenshot of Groovy

52 голосов
/ 14 августа 2009

Eclipse имеет функцию для этого, хотя это не цикл. Это называется «Страница записок». Я предполагаю, что аналогия должна быть в том, что у вас есть записки, где вы собираете небольшие фрагменты кода.

В любом случае, чтобы заставить его работать, откройте проект в Eclipse (ваша страница Scrapbook будет связана с проектом - Eclipse нравится, когда проекты владеют вещами).

Тогда:

  1. В окне навигатора проекта выберите папку, которая существует где-то в вашем проекте.
  2. Либо выберите меню Файл -> Создать -> Другое, либо нажмите Control-N.
  3. Выберите Java -> Java Run / Debug -> Scrapbook Page.
  4. Нажмите «Далее», затем введите имя файла, затем нажмите «Готово».

Теперь у вас есть страница с записками. Введите код, например, такой:

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

Затем выделите текст мышью и либо нажмите Control-U, либо выберите «Выполнить» в контекстном меню. Код будет запущен, и вывод появится на консоли.

Вы также можете ввести выражение, выбрать его и выбрать «Дисплей» в контекстном меню. Он оценит выражение и напечатает его тип. Например, при запуске Display на 1 + 2 будет напечатано (int) 3.

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

BeanShell - это небольшой бесплатный встраиваемый интерпретатор исходного кода Java с функциями языка объектных сценариев, написанный на Java. BeanShell динамически выполняет стандартный синтаксис Java и дополняет его обычными сценариями, такими как свободные типы, команды и замыкания методов, такие как в Perl и JavaScript. Вы можете использовать BeanShell в интерактивном режиме для экспериментов и отладки Java, а также для расширения ваших приложений новыми способами. Создание сценариев Java предоставляет широкий спектр приложений, включая быстрое создание прототипов, расширение пользовательских сценариев, механизмы правил, конфигурацию, тестирование, динамическое развертывание, встроенные системы и даже обучение Java.

http://www.beanshell.org/

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

19 голосов
/ 17 мая 2013

Старый вопрос, но теперь есть лучший ответ (май 2013) - java-REPL! Он доступен на github , а также доступен в режиме реального времени на веб-сайте java-repl для быстрого одноразового тестирования.

Если вы возьмете код git-концентратора и запустите ant для генерации артефактов, вы можете упростить его использование с помощью небольшого сценария, например:

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

С момента нахождения этого проекта я, вероятно, использую его 5 раз в день. Наслаждайтесь!

19 голосов
/ 06 сентября 2011

Вы можете использовать страницы Eclipse Scrapbook.

В Eclipse создайте страницу Scrapbook. В вашем проекте New-> Other-> Scrapbook page.

В файле введите текст, выделите его и нажмите Ctrl-U, и все.

Для управления импортом щелкните правой кнопкой мыши на странице и выберите «Установить импорт», где вы можете выбрать импорт пакета или отдельного класса. Это постоянно и сохраняется вместе со страницей.

13 голосов
/ 09 октября 2012

Кажется, никто еще не упомянул, что Java (6, 7) поставляет консоль REPL с именем jrunscript. Это не зависит от языка (поэтому может использоваться с Jython, JRuby и т. Д.). По умолчанию используется JavaScript (Rhino), который также связан по умолчанию, и, как и другие языки, вы можете получить доступ ко всем пакетам / объектам, доступным в пути к классам.

11 голосов
/ 06 мая 2015

Это часть OpenJDK 9!

REPL под названием JShell (разработанный Oracle) был выпущен как часть JDK 9.

Просто скачайте JDK 9 и запустите bin/jshell.

Screen shot of JShell

Ресурсы

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

В качестве альтернативы Groovy, попробуйте Beanshell: http://www.beanshell.org/

Он более похож на Java и позволяет напрямую использовать синтаксис Java.

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

Jython - это реализация Python, которая позволяет вам проверять объекты 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])
9 голосов
/ 21 ноября 2013

Java-REPL Альберт Латач работает хорошо.

Вы можете попробовать это прямо из браузера здесь: http://www.javarepl.com/term.html

Исходный код доступен здесь, и у него есть приличный плагин Intelli-J.

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

...