Java 9: JShell

В Java 9 наряду с другими нововведениями появился интерпретатор команд Java. Ищите файл “jshell” в каталоге “bin” дистрибутива Java. Имейте в виду, что правильно писать JShell, а не JsHell, то есть это Java Shell, а не Javascript Hell.  После запуска вы увидите следующее:

С помощью этого интерпретатора вы можете выполнять небольшие куски Java-кода. Например:

Можно даже так (в этом случае интерпретатор неявно создаст переменную $2):

Кроме команд Java у  JShell есть свои собственные команды, которые начинаются с «/». Вы можете посмотреть весь их список с помощью команды /help:

Команда /list позволяет увидеть список фрагментов кода, которые мы вводили:

Затем вы можете отредактировать любой из этих кусков во внешнем редакторе по id:

Откроется редактор, где вы можете поменять этот кусок кода:

JShell Edit Pad
JShell Edit Pad

Если вы отредактируете и кликните по кнопке “Accept”, то JShell выполнит введённый вами в JShell Edit Pad код. Можно задать свой редактор, например следующая команда укажет, что нужно использовать Scratch:

После нескольких правок командой

у меня получилось так:

Команда /drop удаляет кусок кода из списка:

При работе JShell перед каждым своим стартом выполняет определённый код, который можно посмотреть командой /list -start:

Сейчас там только import-ы, но мы можем добавить туда другие команды с помощью /set start  с последующим вызовом /reset. Подробнее про это вы можете узнать набрав команду

В качестве примера можем использовать вот такой файл “myjshellstart.txt”:

Используем его в качестве стартового:

Заданный таким образом стартовый код будет работать только в этом сеансе JShell, чтобы сохранить его для следующих запусков выполните команду:

Список подключаемых пакетов к вашим фрагментам кода показывает команда /imports:

Новые import-ы можно добавить просто подключив нужный пакет или класс:

Команда /vars показывает список объявленных переменных:

Команды /save <имя_файла> и /open позволяют сохранять выполненные команды и выполнять команды из файла, так что вы можете сохранять наработанные куски кода для будущего использования.

Пример:

В файле “mycommands.txt” окажутся все ваши команды:

Выполним команды из файла:

JShell может выполнять довольно таки большие и осмысленные куски кода. Вы можете объявлять новые классы, интерфейсы и перечисления. Команда /types выводит список объявленных вами типов:

JShell позволяет объявлять методы без привязки к какому-либо классу. Вполне возможно, что внутри себя он всё же куда-дто их привязывает, но мне так и не удалось найти в интернете информацию по этому вопросу. Команда /methods  отображает список созданных методов:

Команда /! повторяет предыдущий выполненный кусок кода:

При вводе своих фрагментов кода вы всегда можете использовать клавишу табуляции для автодополнения. Если вариантов автодополнения несколько, то все они выведутся на экран.

Также есть очень полезная возможность автоматически импортировать необходимые классы при наборе кусков кода. Например, вы можете набрать System.out.println(Paths, затем нажать комбинацию клавиш «Shift + Tab», затем клавишу «. Появится список выборка. Нажмите клавишу с цифрой «1» на клавиатуре, чтобы импортировать класс (1: import: java.nio.file.Paths):

Есть способ облегчения объявления переменных. Введите 234+56 и нажмите комбинацию «Shift + Tab», а затем клавишу «v». Компилятор заботливо допишет объявление переменной и подставит курсор в место ввода её наименования:

И напоследок осталось самое главное, выход из консоли JShell осуществляется командой /exit :

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *