Есть ли что-то вроде интерактивного режима REPL для python, но для Java?
Чтобы я мог, например, набрать InetAddress.getAllByName( localHostName )
в окне и сразу же получить результаты, без всякой этой публичной статической вещи, ночной кошмар()?
Есть ли что-то вроде интерактивного режима REPL в режиме python, но для Java?
Ответ 1
Вы также можете использовать Groovy Консоль. Это интерактивная консоль, где вы можете делать то, что хотите. Поскольку Groovy также включает классы из базовой платформы Java, вы также сможете использовать эти классы.
ИЗМЕНИТЬ
Он выглядит следующим образом:
Ответ 2
Eclipse имеет функцию для этого, хотя это не цикл. Он назывался "страницей" Scrapbook ". Я предполагаю, что аналогия должна состоять в том, что у вас есть записная книжка, где вы собираете небольшие фрагменты кода.
Во всяком случае, чтобы заставить его работать, откройте проект в Eclipse (ваша страница Scrapbook будет связана с проектом - Eclipse нравится, когда проекты имеют собственные вещи).
Тогда:
- В окне навигатора проекта выберите папку, которая существует где-то в вашем проекте.
- Выберите меню Файл → Создать → Другое или нажмите Control-N.
- Выберите Java → Java Run/Debug → Scrapbook Page.
- Нажмите "Далее", затем дайте ему имя файла, затем нажмите "Готово".
Теперь у вас есть страница с записками. Введите код, например, возможно:
System.out.println(System.getProperties());
Затем выберите текст с помощью мыши и либо нажмите Control-U, либо выберите "Execute" из контекстного меню. Код будет запущен, и вывод появится на консоли.
Вы также можете ввести выражение, выбрать его и выбрать "Экран" в контекстном меню. Он будет оценивать выражение и печатать его тип. Например, при запуске Display на 1 + 2
будет напечатан (int) 3
.
Ответ 3
BeanShell - это небольшой, бесплатный, внедряемый интерпретатор источника Java с функциями языка сценариев языка, написанный на Java. BeanShell динамически выполняет стандартный синтаксис Java и расширяет его с помощью обычных возможностей сценариев, таких как свободные типы, команды и закрытия методов, такие как Perl и JavaScript. Вы можете использовать BeanShell в интерактивном режиме для экспериментов и отладки Java, а также для расширения ваших приложений по-новому. Scripting Java предоставляет множество разнообразных приложений, включая быстрое прототипирование, расширение пользовательских сценариев, разработку правил, конфигурацию, тестирование, динамическое развертывание, встроенные системы и даже обучение Java.
http://www.beanshell.org/manual/syntax.html#Standard_Java_Syntax
Ответ 4
Вы можете использовать страницы Scrapbook Eclipse.
В Eclipse создайте страницу Scrapbook. В своем проекте, страница New- > Other- > Scrapbook.
В файле введите текст, выберите его и нажмите ctrl-U, и там вы идете.
Чтобы управлять импортом, щелкните правой кнопкой мыши на странице и выберите "Установить импорт", где вы можете выбрать импорт пакета или одного класса. Это постоянно и сохраняется на странице.
Ответ 5
Старый вопрос, но теперь есть лучший ответ (май 2013 г.) - java-REPL! Он доступен на github, а также доступен в прямом эфире на веб-сайте java-repl для быстрого однократного тестирования.
Если вы возьмете код концентратора git и запустите ant
, чтобы сгенерировать артефакты, вы можете упростить его использование с помощью небольшого script, например:
#!/bin/sh
java -jar /home/rdahlgren/scripts/javarepl-dev.build.jar
С момента поиска этого проекта я, вероятно, использую его 5 раз в день. Наслаждайтесь!
Ответ 6
Похоже, никто не упомянул, что Java (6, 7) отправляет консоль REPL под названием jrunscript
. Это язык агностик (поэтому его можно использовать с Jython, JRuby и т.д.). По умолчанию используется JavaScript (Rhino), который также поставляется по умолчанию, и, как и другие языки, вы можете получить доступ ко всем пакетам/объектам, доступным в пути к классам.
Ответ 7
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])
Ответ 8
В качестве альтернативы Groovy попробуйте Beanshell: http://www.beanshell.org/
Это больше похоже на Java и позволяет напрямую использовать Java-синтаксис.
Ответ 9
Clojure предоставляет REPL, который вы можете использовать.
Ответ 10
Java-REPL by Альберт Латац работает хорошо.
Вы можете попробовать прямо из своего браузера: http://www.javarepl.com/console.html
Исходный код доступен здесь, и у него есть достойный плагин Intelli-J.
Ответ 11
Консоль groovy позволяет это сделать. Фактически это предназначалось для тестирования и тестирования groovy кода, но поскольку groovy является надмножеством Java, он также позволяет использовать простой Java-материал.
Я только что ввел это в консоль:
InetAddress.getAllByName('localhost')
и нажмите CTRL-R, затем он вернется:
groovy> InetAddress.getAllByName('localhost')
Result: [localhost/127.0.0.1]
Ответ 12
Scala также предлагает интерактивную консоль. Я смог использовать его, чтобы получить результат для выражения в вашем вопросе, полностью квалифицируя InetAddress, как в:
java.net.InetAddress.getAllByName("localhost")
Ответ 13
Это часть OpenJDK 9!
REPL, называемый JShell (разработанный Oracle), был выпущен как часть JDK 9.
Просто скачайте JDK 9 и запустите bin/jshell
.
Ресурсы
- blogs.oracle.com: Внутри JShell
- DZone: Java 9 (часть 2): шаг за шагом JShell
- Проект OpenJDK Kulla
- Предложение Java Enhancement, JEP 222: jshell: оболочка Java (цикл Read-Eval-Print Loop)
Ответ 14
Пока JRuby, BeanShell, Julian Fleischer REPL есть Albert Latacz 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);
Ответ 15
Для пользователей, имеющих доступ к Mathematica, JLink позволяет вам получить доступ к Java и script с помощью кода Mathematica:
Needs["JLink`"]
LoadJavaClass["java.net.InetAddress"]
InetAddress`getAllByName["localhost"]
Нажмите Shift-Enter, чтобы оценить, и вы получите
{<<JavaObject[java.net.Inet4Address>>}
Затем вы можете использовать функцию Mathematica Map для вызова toString
для возвращаемых объектов:
#@toString[]& /@ %
чтобы получить результат (или использовать менее непонятный синтаксис, Map[Function[obj, [email protected][]], %]
):
{"localhost/127.0.0.1"}
Если вы начнете серьезно относиться к этому, вы захотите прочитать учебник Тодда Гейли в http://reference.wolfram.com/mathematica/JLink/tutorial/Overview.html.
Ответ 16
Если вы уже знаете Groovy (что, как я полагаю, вы это сделали, поскольку вы упомянули консоль Groovy), просто используйте groovysh или groovyConsole, которые включены в дистрибутив Groovy. Если у вас есть пользовательские банки, которые вы хотите импортировать, вы можете либо написать пакетный файл, который запускает groovysh/groovyConsole с добавленными в classpath. Вы также можете сделать это
this.class.classLoader.rootLoader.addURL(new URL("file:///path to file"))
изнутри оболочки для загрузки других банок.
Я использовал несколько лет назад Jython, чтобы делать то, что вы просите. В рамках моей сборки script я создал пользовательские файлы jython.bat и .py, которые включали полный путь к классам для проекта, над которым я работал. Таким образом, когда я запустил Jython, у него будет весь доступный код, и это приведет к появлению Spring, чтобы я мог обмануть вещи в живой системе. Вы можете сделать то же самое с Groovy, JRuby, BeanShell и т.д.
Ответ 17
вы можете script java с помощью jruby http://kenai.com/projects/jruby/pages/CallingJavaFromJRuby
Ответ 18
Да, есть: http://www.scravy.de/blog/2012-02-27/a-read-eval-print-loop-for-java.htm
Ответ 19
В большинстве IDE есть окно с названием "немедленный режим", который позволит вам быстро оценить код Java.
Ответ 20
Вы можете взглянуть на BlueJ, который является интерактивной средой разработки Java, предназначенной для обучения ООП, а не как полная IDE, например Eclipse или NetBeans. Это как-то весело играть в любом случае.
Вы можете увидеть его в действии на YouTube в серии обучающих программ Java.
Ответ 21
DrJava - это образовательная среда разработки, включающая область REPL.
Также есть плагин Eclipse, но он не работал у меня. Я думаю, что это просто не обновлялось. Итак, что я обычно делаю, это открыть окно DrJava для вопросов "что будет, если я сделаю это".
EclipseShell тоже может быть хорошим, но я еще не использовал его.
Ответ 22
Ответ 23
Существует простая IDE, называемая DrJava, у которой есть консоль взаимодействия. Он работает точно так, как я ожидал. Просто загрузите файл и начните взаимодействие с объектами в нем.
Ответ 24
Здесь онлайн REPL: http://www.javarepl.com/console.html
Набрав больше, чтобы достичь предела символа...
Ответ 25
Для java 8 существует nudge4j. см. https://github.com/lorenzoongithub/nudge4j
... и красота заключается в том, что вы можете пилотировать ваше приложение из браузера
Ответ 26
JPad - это java-блокнот со встроенным REPL:
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>
Кроме того, он умеет собирать коллекции, списки, карты и т.д. и позволяет отображать их как таблицу или диаграмму:
Ответ 27
Java 9 предоставляет JShell.
jshell> println( "Print me!")
jshell> Print me!
Ответ 28
Jython, JIRB для JRuby, Groovy (groovyconsole и др.) и Beanshell - все жизнеспособные варианты.
Я использовал InteractiveConsole
для Jython, он действительно хорошо работал в приложении.