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

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

28 ответов


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

редактировать

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

Screenshot of Groovy


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

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

затем:

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

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

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/

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.

Screen shot of JShell

ресурсы


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

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

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

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


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


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


вы могли бы взглянуть на 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

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

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

enter image description here


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

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

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

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