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

При запуске можно указать режим обратной связи (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 (на англ.)
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.