Русская Википедия:JShell

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

JShell - это Java-утилита типа REPL, впервые представленная в JDK 9. Одной из причин по которой была предложена JShell являлась то, что много приложений использовало свои собственные реализации по интерактивному выполнению выражений а, по факту, проект BeanShell который должен был выполнять такую роль был заброшен с 2003 года и вносил произвольные изменения в язык.

Предложение по этой утилите хранится в JEP 222.

Файл:Jshell-featured-image-1280x720.png

Возможности

  • Набор Java кода, с некоторыми особенностями, и его выполнение в интерактивном режиме
  • Сохранение кода в файлы и его выполнение из файлов без запуска IDE
  • Сохранение истории набора в файл
  • Настройка контекста выполнения кода
  • Различные режимы работы и загрузки утилиты
  • Код выполняется сверху вниз и поэтому необходимо сначала объявлять, а потом использовать
  • Возможность импорта сторонних библиотек(jar-ков) в контекст выполнения скрипта
  • Просмотр всех переменных, методов, импортируемых пакетов и типов
  • Возможность написания функции без тела класса
  • Встроенный минимальный редактор кода

Интеграция с IDE

  1. JShell возможно запустить в Intellij Idea через Tools->JShell Console...
  2. В Eclipse можно запустить через плагин QuickShell или через настройку Run->External Tools->External Tools Configurations...
  3. В Netbeans IDE через Tools->Open Java Platform Shell

Настройка

Запустить JShell можно из терминала (командной строки) при установленной JDK, где он и находится, набрав:

jshell
Файл:Jshell-custom-import.png

При запуске можно указать режим обратной связи (feedback mode) который определяет информативность описания выполненных команд.

Всего их 4: silent, concise, normal и verbose. При запуске нужно указать флаг --feedback:

jshell --feedback silent

Также есть 3 режима загрузки:

  1. DEFAULT: Режим по-умолчанию, загружает стандартные пакеты
  2. PRINTING: Позволяет использовать методы print(), printf() и println() без обращение к System.out
  3. 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 (на англ.)


Шаблон:Изолированная статья