Чи є щось на зразок інтерактивного режиму REPL від python, але для Java? Так що я можу, наприклад, ввести InetAddress.getAllByName( localHostName )
вікно і негайно отримати результати, без усієї цієї публічної статичної порожнечі кошмару ()?
Чи є щось на зразок інтерактивного режиму REPL від python, але для Java? Так що я можу, наприклад, ввести InetAddress.getAllByName( localHostName )
вікно і негайно отримати результати, без усієї цієї публічної статичної порожнечі кошмару ()?
Відповіді:
редагувати З Java 9 існує JShell
Оригінальна відповідь далі
Ви також можете використовувати Groovy Console . Це інтерактивна консоль, де ви можете робити те, що хочете. Оскільки Groovy також включає класи з базової платформи Java, ви також зможете використовувати ці класи.
Це виглядає так:
System.exit()
), але для більшості цілей це повинно бути достатнім.
class test{public static void test(){System.out.println('test')}}
Eclipse має особливість робити це, хоча це не петля. Це називається "Сторінка записів". Я припускаю, що аналогія повинна полягати в тому, що у вас є записки, де ви збираєте маленькі фрагменти коду.
У будь-якому разі, щоб змусити це працювати, відкрийте проект у Eclipse (ваша Сторінка записів буде пов’язана з проектом - Eclipse любить, коли проекти володіють речами).
Тоді:
Тепер у вас є сторінка записів. Введіть якийсь код, наприклад, можливо такий:
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 Scrapbook.
У Eclipse створіть сторінку записів. У вашому проекті Нове-> Інше-> Сторінка записів.
У файл введіть текст, виділіть його та натисніть ctrl-U, і ось.
Щоб керувати імпортом, клацніть правою кнопкою миші на сторінці та виберіть Набір імпорту, де ви зможете імпортувати пакет або один клас. Це постійно і зберігається разом із сторінкою.
Старе питання, але зараз є краща відповідь (травень 2013 р.) - java-REPL! Він доступний на github, а також доступний у прямому ефірі на веб-сайті java-repl для швидкого одноразового тестування.
Якщо ви взяли код hit hub і запустили 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 код, але оскільки 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 , REPL Джуліана Флейшера - там 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);
Для людей, які мають доступ до 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. Якщо у вас є спеціальні банки, які ви хочете імпортувати, ви можете написати командний файл, який запускає 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!