Есть ли что-то вроде интерактивного режима REPL python, но для Java?
есть ли что-то вроде интерактивного режима REPL python, но для Java?
Так что я могу, например, ввести InetAddress.getAllByName( localHostName )
в окне и сразу же получить результаты, без всей этой публичной статической пустоты кошмар ()?
28 ответов
вы также можете использовать Консоли В Groovy. Это интерактивная консоль, где вы можете делать что хотите. Поскольку Groovy также включает классы из основной платформы java, вы также сможете использовать эти классы.
редактировать
Это выглядит так:
Eclipse имеет функцию для этого, хотя это не цикл. Это называется "страница альбома". Я предполагаю, что аналогия должна быть в том, что у вас есть альбом, где вы собираете небольшие фрагменты кода.
В любом случае, чтобы заставить его работать, откройте проект в Eclipse (ваша страница альбома будет связана с проектом-Eclipse нравится, когда проекты владеют вещами).
затем:
- в окне Навигатора проекта выберите папку, существует где-то в вашем проекте.
- либо выберите файл меню - > Создать - > другое, либо нажмите Control-N.
- Выберите Java - > Java Run / Debug - > Страница Альбома.
- нажмите "Далее", затем введите имя файла, затем нажмите "Готово".
Теперь у вас есть скрап. Введите какой-нибудь код, например:
System.out.println(System.getProperties());
затем выберите текст с помощью мыши, и нажмите Control-U или выберите "Выполнить" в контекстном меню. Код будет запущен, а выходные данные появятся на консоли.
вы также можете ввести выражение, выделите его и выберите из контекстного меню. Он будет оценивать выражение и печатать его тип. Например, запуск Display on 1 + 2
печати (int) 3
.
BeanShell-это небольшой, бесплатный, встраиваемый интерпретатор источников Java с функциями языка сценариев объектов, написанный на Java. BeanShell динамически выполняет стандартный синтаксис Java и расширяет его с помощью общих удобств сценариев, таких как свободные типы, команды и закрытие методов, такие как Perl и JavaScript. Вы можете использовать BeanShell в интерактивном режиме для экспериментов и отладки Java, а также для расширения приложений новыми способами. Скриптинг Java поддается широкому разнообразие приложений, включая быстрое прототипирование, расширение пользовательских сценариев, движки правил, конфигурацию, тестирование, динамическое развертывание, встроенные системы и даже обучение Java.
http://www.beanshell.org/manual/syntax.html#Standard_Java_Syntax
вы можете использовать страницы альбома Eclipse.
в Eclipse создайте страницу альбома. В вашем проекте страница New - >Other - >Scrapbook.
в файле введите текст, выделите его и нажмите ctrl-U, и вот вы идете.
чтобы управлять импортом, щелкните правой кнопкой мыши на странице и выберите Set Imports, где вы можете импортировать пакет или один класс. Это является постоянным и сохраняется вместе со страницей.
старый вопрос, но теперь есть лучший ответ (май 2013) - java-REPL! Он доступен на github и жить в сайт java-repl для быстрого одноразового тестирования.
Если вы схватите код концентратора git и запустите ant
чтобы создать артефакты, вы можете сделать его простым в использовании с небольшим скриптом, таким как:
#!/bin/sh
java -jar /home/rdahlgren/scripts/javarepl-dev.build.jar
С момента нахождения этого проекта Я, вероятно, использую его 5 раз в день. Наслаждайтесь!
Кажется, никто еще не упоминал, что Java (6, 7) отправляет консоль REPL под названием jrunscript
. Это язык агностик (так можно использовать с Jython, JRuby и т. д.). Он по умолчанию JavaScript (Rhino), который также поставляется по умолчанию, и, как и другие языки, вы можете получить доступ ко всем пакетам/объектам, доступным на пути к классам.
в качестве альтернативы Groovy, попробуйте Beanshell:http://www.beanshell.org/
Он больше похож на Java и позволяет использовать Java-синтаксис напрямую.
языка 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])
это часть OpenJDK 9!
команду REPL под названием JShell (разработано Oracle) было выпущено как часть JDK 9.
просто скачайте JDK 9 и запустите bin/jshell
.
ресурсы
- blogs.oracle.com: внутри JShell
- DZone: Java 9 (Часть 2): JShell шаг за шагом
- проект OpenJDK Кулла
- Предложение По Улучшению Java,JEP 222: jshell: Java Shell (цикл Read-Eval-Print)
Java-REPL by Альберт Latacz работает хорошо.
вы можете попробовать его прямо из браузера здесь: http://www.javarepl.com/term.html
исходный код доступен здесь, и он имеет приличный плагин Intelli-J.
на консоли в Groovy позволяет сделать это. На самом деле он должен был попробовать и протестировать groovy-код, но поскольку groovy-это суперсет Java, он также позволяет простой Java-материал.
Я только что ввел это в консоль:
InetAddress.getAllByName('localhost')
и нажмите CTRL-R, затем он вернулся:
groovy> InetAddress.getAllByName('localhost')
Result: [localhost/127.0.0.1]
Scala также предлагает интерактивную консоль. Я смог использовать его, чтобы получить результат для выражения в вашем вопросе, полностью квалифицировав InetAddress, как в:
java.net.InetAddress.getAllByName("localhost")
While JRuby, состоит, Джулиан Фляйшер-х расх есть Альберт Latacz по расх кажется, последний и активный.
пробовал его с простым определением класса, отлично работает.
$ 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);
для людей с доступом к Mathematica, JLink позволяет получить доступ к Java и скрипту с кодом Mathematica:
Needs["JLink`"]
LoadJavaClass["java.net.InetAddress"]
InetAddress`getAllByName["localhost"]
нажмите Shift-Enter, чтобы оценить, и вы получите
{<<JavaObject[java.net.Inet4Address>>}
затем вы можете использовать функцию карты Mathematica для вызова toString
на возвращаемые объекты:
#@toString[]& /@ %
чтобы получить результат (или использовать менее неясный синтаксис, Map[Function[obj, obj@toString[]], %]
):
{"localhost/127.0.0.1"}
если вы начнете серьезно относиться к этому, вы захотите прочитать учебник Тодда Гейли на http://reference.wolfram.com/mathematica/JLink/tutorial/Overview.html.
Если вы уже знаете Groovy (что я предполагаю, что вы делаете, так как вы упомянули консоль Groovy), то просто используйте groovysh или groovyConsole, которые включены в дистрибутив Groovy. Если у вас есть пользовательские банки, которые вы хотите импортировать, вы можете написать пакетный файл, который запускает groovysh/groovyConsole с добавленными в путь к классам. Вы также можете сделать это
this.class.classLoader.rootLoader.addURL(new URL("file:///path to file"))
изнутри оболочки для загрузки других банок.
я использовал Jython несколько лет назад, чтобы сделать просто то, о чем ты просишь. В рамках моего сценария сборки я создал пользовательский jython.BAT и .файл py, которая включала полный classpath для проекта, Я работаю. Таким образом, когда я начинал Jython, у него был весь доступный код, и он вызывал Spring, чтобы позволить мне крутить вещи в живой системе. Вы можете сделать то же самое с Groovy, JRuby, BeanShell и т. д.
вы можете написать java с помощью jruby http://kenai.com/projects/jruby/pages/CallingJavaFromJRuby
У большинства IDE есть окно, называемое чем-то вроде "немедленного режима", которое позволит вам оценивать java-код на лету.
DrJava - это образовательная среда IDE, включающая панель REPL.
есть плагин к Eclipse, но это не сработало для меня. Я думаю, что он просто не обновлялся некоторое время. Поэтому я обычно держу окно DrJava открытым для вопросов "что произойдет, если я это сделаю".
EclipseShell может быть тоже хорошо,но я еще не использовал его.
существует простая IDE под названием DrJava имеет консоль взаимодействия. Работает именно так, как я и ожидал. Просто загрузите файл и начните взаимодействовать с объектами в нем.
есть онлайн-РЕПЛ:http://www.javarepl.com/console.html
набрав больше, чтобы достичь предела символов ...
для java 8 есть nudge4j. см.https://github.com/lorenzoongithub/nudge4j
... и красота в том, что вы можете пилотировать свое приложение из browsert
JPad является java scratchpad со встроенным 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>
Он также умный о сбросах коллекций, списков, карт и т. д. и позволяет отображать их в виде таблицы или диаграммы:
языка Jython, JIRB для JRuby, Groovy (groovyconsole et al) и Beanshell-все жизнеспособные варианты.
я использовал InteractiveConsole
для Jython он действительно хорошо работал в приложении.