Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

ИЗМЕНИТЬ

Он выглядит следующим образом:

Screenshot of Groovy

Ответ 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/

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, который вы можете использовать.

Ответ 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")

Ответ 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 и т.д.

Ответ 19

В большинстве IDE есть окно с названием "немедленный режим", который позволит вам быстро оценить код Java.

Ответ 20

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

Вы можете увидеть его в действии на YouTube в серии обучающих программ Java.

Ответ 21

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

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

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

Ответ 23

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

Ответ 25

Для java 8 существует nudge4j. см. https://github.com/lorenzoongithub/nudge4j

nudge4j java repl

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

Ответ 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, он действительно хорошо работал в приложении.