JShell (JShell)
JShell - это Java-утилита типа REPL, впервые представленная в JDK 9. Одной из причин по которой была предложена JShell являлась то, что много приложений использовало свои собственные реализации по интерактивному выполнению выражений а, по факту, проект BeanShell который должен был выполнять такую роль был заброшен с 2003 года и вносил произвольные изменения в язык.
Предложение по этой утилите хранится в JEP 222.
Возможности
[править | править код]- Набор Java кода, с некоторыми особенностями, и его выполнение в интерактивном режиме
- Сохранение кода в файлы и его выполнение из файлов без запуска IDE
- Сохранение истории набора в файл
- Настройка контекста выполнения кода
- Различные режимы работы и загрузки утилиты
- Код выполняется сверху вниз и поэтому необходимо сначала объявлять, а потом использовать
- Возможность импорта сторонних библиотек(jar-ков) в контекст выполнения скрипта
- Просмотр всех переменных, методов, импортируемых пакетов и типов
- Возможность написания функции без тела класса
- Встроенный минимальный редактор кода
Интеграция с IDE
[править | править код]- JShell возможно запустить в Intellij Idea через Tools->JShell Console...
- В Eclipse можно запустить через плагин QuickShell или через настройку Run->External Tools->External Tools Configurations...
- В Netbeans IDE через Tools->Open Java Platform Shell
Настройка
[править | править код]Запустить JShell можно из терминала (командной строки) при установленной JDK, где он и находится, набрав:
jshell
![](http://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Jshell-custom-import.png/220px-Jshell-custom-import.png)
При запуске можно указать режим обратной связи (feedback mode) который определяет информативность описания выполненных команд.
Всего их 4: silent, concise, normal и verbose. При запуске нужно указать флаг --feedback:
jshell --feedback silent
Также есть 3 режима загрузки:
- DEFAULT: Режим по-умолчанию, загружает стандартные пакеты
- PRINTING: Позволяет использовать методы print(), printf() и println() без обращение к System.out
- JAVASE: Загружает все пакеты из Java SE
При запуске нужно указать флаг --startup:
jshell --startup PRINTING
Для выхода из JShell нужно набрать:
jshell> /exit
Работа в интерактивном режиме
[править | править код]Посмотреть помощь по командам:
jshell> /help
Запуск минимального встроенного редактора кода с указанием ID введенного ранее выражения или объявления (откроет редактор со строкой :System.out.println("Hello, World!")):
jshell> System.out.println("Hello, World!");
jshell> /edit 1
Работа при исполнении скриптов
[править | править код]Сохранить набранный код в файл:
jshell> /save my_file.jsh
Открыть файл с кодом (например: my_file.jsh или my_file.java):
jshell my_file.jsh
или
jshell> /open my_file.jsh
Примеры
[править | править код]$ jshell | Welcome to JShell -- Version 9 | For an introduction type: /help intro jshell> int a[] = {0,1,3,5,8} a ==> int[5] { 0, 1, 3, 5, 8 } jshell> int fact(int n){ ...> return n<2?1:n*fact(n-1); ...> } | created method fact(int) jshell> /exit | Goodbye $
Импорт библиотеки которая находится в той же директории что и запускается JShell:
jshell --class-path guava-19.0.jar
Импорт модуля:
jshell --add-modules java.sql
Ссылки
[править | править код]Метод ненаучного тыка: введение в JShell Статья с описанием возможностей
User's Guide Официальное руководство (на англ.)
Java 9 JShell (Project REPL) Часть 1 - Обучающая статья по JShell
Статья о JShell Что она должна делать? (на англ.)
Введение в работу JShell (на англ.)
Начало работы Примеры работы с JShell (на англ.)
![]() | На эту статью не ссылаются другие статьи Википедии. |