Есть ли что-то вроде интерактивного режима REPL в Python, но для Java? Так что я могу, например, ввести InetAddress.getAllByName( localHostName )
в окно и сразу же получить результаты, без всей этой публичной статической пустоты nightmare ()?
Есть ли что-то вроде интерактивного режима REPL в Python, но для Java? Так что я могу, например, ввести InetAddress.getAllByName( localHostName )
в окно и сразу же получить результаты, без всей этой публичной статической пустоты nightmare ()?
Ответы:
edit Начиная с Java 9 есть JShell
Оригинальный ответ следует
Вы также можете использовать Groovy Console . Это интерактивная консоль, где вы можете делать то, что хотите. Поскольку Groovy также включает классы из базовой платформы Java, вы также сможете использовать эти классы.
Выглядит это так:
System.exit()
), но для большинства целей этого должно быть достаточно.
class test{public static void test(){System.out.println('test')}}
В Eclipse есть функция для этого, хотя это не цикл. Это называется «Страница альбома для вырезок». Я предполагаю, что аналогия должна заключаться в том, что у вас есть альбом для вырезок, в котором вы собираете небольшие фрагменты кода.
В любом случае, чтобы он заработал, откройте проект в Eclipse (ваша страница Scrapbook будет связана с проектом - Eclipse нравится, когда проекты принадлежат объектам).
Затем:
Теперь у вас есть страница альбома для вырезок. Введите код, например, такой:
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 Scrapbook.
В Eclipse создайте страницу альбома для вырезок. В вашем проекте, New-> Other-> Scrapbook page.
В файле введите текст, выберите его и нажмите ctrl-U, и готово.
Чтобы управлять импортом, щелкните страницу правой кнопкой мыши и выберите «Установить импорт», где вы можете выбрать импорт пакета или отдельного класса. Это постоянно и сохраняется вместе со страницей.
Старый вопрос, но теперь есть лучший ответ (май 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), который также включен по умолчанию, и, как и в других языках, вы можете получить доступ ко всем пакетам / объектам, доступным в пути к классам.
REPL под названием JShell (разработанный Oracle) был выпущен как часть JDK 9.
Просто скачайте JDK 9 и запустите bin/jshell
.
В качестве альтернативы 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])
Java-REPL Альберта Латача работает хорошо.
Вы можете попробовать это прямо в браузере здесь: http://www.javarepl.com/term.html
Исходный код доступен здесь, и у него есть достойный плагин Intelli-J.
Clojure предоставляет REPL, который вы можете использовать.
Консоль заводной позволяет сделать это. На самом деле он был предназначен для того, чтобы попробовать и протестировать отличный код, но, поскольку 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-Enter, чтобы оценить, и вы получите
{<<JavaObject[java.net.Inet4Address>>}
Затем вы можете использовать функцию Map в системе Mathematica для вызова toString
возвращаемых объектов:
#@toString[]& /@ %
чтобы получить результат (или использовать менее неясный синтаксис Map[Function[obj, obj@toString[]], %]
):
{"localhost/127.0.0.1"}
Если вы начнете серьезно относиться к этому, вы захотите прочитать учебник Тодда Гейли по адресу http://reference.wolfram.com/mathematica/JLink/tutorial/Overview.html .
Если вы уже знаете Groovy (что, я полагаю, вы знаете, поскольку вы упомянули Groovy Console), просто используйте groovysh или groovyConsole, которые включены в дистрибутив Groovy. Если у вас есть собственные jar-файлы, которые вы хотите импортировать, вы можете написать пакетный файл, который запускает 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 тоже может подойти, но я еще не использовал его.
Есть онлайн-REPL: http://www.javarepl.com/console.html
Печатать больше, чтобы достичь максимального количества символов ...
Для java 8 есть nudge4j. см. https://github.com/lorenzoongithub/nudge4j
... и прелесть в том, что вы можете пилотировать свое приложение из браузера
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>
Он также умеет сбрасывать коллекции, списки, карты и т. Д. И позволяет отображать их в виде таблицы или диаграммы:
Java 9 предоставляет JShell.
jshell> println( "Print me!")
jshell> Print me!