Есть ли что-то вроде интерактивного режима REPL python, но для Java?
есть ли что-то вроде интерактивного режима REPL python, но для Java?
Так что я могу, например, типа InetAddress.getAllByName( localHostName )
в окне, и сразу же получить результаты, без всей этой публичной статической пустоты кошмар () вещь?
28 ответов:
вы также можете использовать Консоли В Groovy. Это интерактивная консоль, где вы можете делать что хотите. Поскольку Groovy также включает классы из основной платформы java, вы также сможете использовать эти классы.
EDIT
Это выглядит так:
Eclipse имеет функцию, чтобы сделать это, хотя это не цикл. Это называется "страница Записки". Я предполагаю, что аналогия должна заключаться в том, что у вас есть альбом для вырезок, где вы собираете маленькие фрагменты кода.
В любом случае, чтобы заставить его работать, откройте проект в Eclipse (ваша страница Записки будет связана с проектом-Eclipse любит, когда проекты владеют вещами).
затем:
- в окне Навигатора проекта выберите папку, существует где-то в вашем проекте.
- либо выберите меню File - > New - > Other, либо нажмите Control-N.
- Выберите Java - > Java Run / Debug- > Страница Записки.
- нажмите "Далее", затем дайте ему имя файла, а затем нажмите"Готово".
Теперь у вас есть скрап. Введите какой-нибудь код, например:
System.out.println(System.getProperties());
затем выделите текст с помощью мыши, и либо нажмите Control-U или выберите "Выполнить" из контекстного меню. Код будет запущен, и вывод появится на консоли.
вы также можете ввести выражение, выделите его и выберите из контекстного меню. Он будет оценивать выражение и печатать его тип. Например, запуск отображения на
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 создайте страницу Записки. В вашем проекте Новая->другая - >страница Записки.
в файле введите текст, выделите его и нажмите ctrl-U, и там вы идете.
чтобы управлять импортом, щелкните правой кнопкой мыши на странице и выберите Установить импорт, где вы можете выбрать импорт пакета или одного класса. Это является постоянным и сохраняется вместе со страницей.
старый вопрос, но теперь есть лучший ответ (май 2013)-java-REPL! Он доступен на github а также доступны в прямом эфире на java-repl website для быстрого одноразового тестирования.
Если вы возьмете код Git hub и запустите
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!
РЕПЛ называется 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 Loop)
Java-REPL by Альберт Latacz работает хорошо.
вы можете попробовать его прямо из браузера здесь: http://www.javarepl.com/term.html
исходный код доступен здесь, и он имеет приличный плагин Intelli-J.
The консоли в 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")
во время JRuby,BeanShell,реплик Джулиана Флейшера есть Альберт 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-введите для оценки, и вы получите
{<<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 файл, который включал полный путь к классам для проекта, над которым я работал. Таким образом, когда я запустил 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
... и красота в том, что вы можете пилотировать свое приложение из браузера
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 это действительно хорошо работало в приложении.