Есть ли что-то вроде интерактивного режима REPL python, но для Java?


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

28 92

28 ответов:

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

EDIT

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

Screenshot of Groovy

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

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

затем:

  1. в окне Навигатора проекта выберите папку, существует где-то в вашем проекте.
  2. либо выберите меню File - > New - > Other, либо нажмите Control-N.
  3. Выберите Java - > Java Run / Debug- > Страница Записки.
  4. нажмите "Далее", затем дайте ему имя файла, а затем нажмите"Готово".

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

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/

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.

Screen shot of JShell

ресурсы

Java-REPL by Альберт Latacz работает хорошо.

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

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

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

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

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-код на лету.

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

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

DrJava - это образовательная среда IDE, которая включает панель REPL.

есть плагин Eclipse, а также, но он не работал для меня. Я думаю, что он просто не был обновлен в то время. Поэтому я обычно держу окно DrJava открытым для вопросов "что произойдет, если я это сделаю".

EclipseShell может быть тоже хорошо, но я еще не использовал его.

есть простой IDE называется DrJava это имеет консоль взаимодействий. Он работает именно так, как я ожидал. Просто загрузите файл и начните взаимодействовать с объектами в нем.

есть онлайн РЕПЛ:http://www.javarepl.com/console.html

введите больше, чтобы достичь предела символов ...

для java 8, есть nudge4j. см.https://github.com/lorenzoongithub/nudge4j

nudge4j java repl

... и красота в том, что вы можете пилотировать свое приложение из браузера

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>

Он тоже умный, про демпинг сборники, перечни, карты и т. д., и позволяет представлять их в виде таблицы или диаграммы:

enter image description here

Java 9 предоставляет JShell.

jshell> println( "Print me!")
jshell> Print me!

Jython,JIRB для JRuby, Groovy (groovyconsole et al) и Beanshell все жизнеспособные варианты.

я использовал InteractiveConsole для Jython это действительно хорошо работало в приложении.