JSHELL(1) JDK Commands JSHELL(1)

jshell - ارزیابی تعاملی اعلان‌ها، دستورات و عبارات زبان برنامه‌نویسی Java در یک حلقهٔ خواندن-ارزیابی-چاپ (REPL)

jshell [options] [load-files]

گزینه‌های خط فرمان، جدا شده با فاصله. بخش Options for jshell را ببینید.
یک یا چند اسکریپت برای اجرا در هنگام راه‌اندازی ابزار. اسکریپت‌ها می‌توانند شامل هر قطعه‌کد معتبر یا دستورات JShell باشند.

اسکریپت می‌تواند یک فایل محلی یا یکی از اسکریپت‌های از پیش تعریف‌شدهٔ زیر باشد:

DEFAULT
مدخل‌های پیش‌فرض را که معمولاً به عنوان import استفاده می‌شوند، بارگذاری می‌کند.
JAVASE
تمام بسته‌های Java SE را وارد (import) می‌کند.
PRINTING
متدهای print، println و printf را به عنوان متدهای jshell برای استفاده در این ابزار تعریف می‌کند.
TOOLING
متدهای javac، jar و سایر متدها را برای اجرای ابزارهای JDK از طریق رابط خط فرمان آن‌ها در ابزار jshell تعریف می‌کند.

برای بیش از یک اسکریپت، از فاصله برای جداسازی نام‌ها استفاده کنید. اسکریپت‌ها به ترتیبی که در خط فرمان وارد شده‌اند اجرا می‌شوند. اسکریپت‌های خط فرمان پس از اسکریپت‌های راه‌اندازی اجرا می‌شوند. برای اجرای یک اسکریپت پس از شروع JShell، از دستور /open استفاده کنید.

برای پذیرش ورودی از ورودی استاندارد و غیرفعال‌سازی ورودی/خروجی تعاملی، یک خط تیره (-) برای load-files وارد کنید. این گزینه امکان استفاده از ابزار jshell را در زنجیره‌های لوله (pipe chains) فراهم می‌کند.

ابزار JShell روشی برای ارزیابی تعاملی اعلان‌ها، دستورها و عبارت‌های زبان برنامه‌نویسی Java فراهم می‌کند و یادگیری زبان، بررسی کدها و APIهای ناآشنا، و نمونه‌سازی اولیهٔ کدهای پیچیده را آسان‌تر می‌سازد. دستورهای Java، تعریف متغیرها، تعریف متدها، تعریف کلاس‌ها، دستورهای import و عبارت‌ها پذیرفته می‌شوند. به بخش‌های کد واردشده، قطعه‌کد (snippet) می‌گویند.

با وارد کردن قطعه‌کدها، آن‌ها ارزیابی شده و بازخورد ارائه می‌شود. بسته به قطعه‌کد واردشده و حالت بازخورد انتخاب‌شده، بازخورد ممکن است از نمایش نتایج و توضیحات عملیات تا هیچ چیز متغیر باشد. خطاها صرف‌نظر از حالت بازخورد انتخاب‌شده تشریح می‌شوند. برای دریافت بیشترین بازخورد هنگام یادگیری کار با ابزار، با حالت verbose شروع کنید.

گزینه‌های خط فرمان برای پیکربندی محیط اولیه در زمان راه‌اندازی JShell در دسترس هستند. درون JShell نیز دستورهایی برای اصلاح محیط بر حسب نیاز وجود دارند.

می‌توان قطعه‌کدهای موجود را برای مقداردهی اولیهٔ نشست JShell یا در هر زمانی در طول نشست، از یک فایل بارگذاری کرد. قطعه‌کدها را می‌توان درون نشست تغییر داد تا حالت‌های گوناگون آزمایش شده و اصلاحات لازم صورت گیرد. برای نگه‌داشتن قطعه‌کدها جهت استفاده‌های بعدی، آن‌ها را در یک فایل ذخیره کنید.

--add-exports module/package
بسته‌ای را مشخص می‌کند که باید به‌عنوان صادرشده (exported) از ماژول تعریف‌کننده‌اش در نظر گرفته شود.
--add-modules module[,module...]
ماژول‌های ریشه‌ای را مشخص می‌کند که باید علاوه بر ماژول اولیه تفکیک (resolve) شوند.
-Cflag
پرچمی را برای ارسال به کامپایلر مشخص می‌کند. برای ارسال بیش از یک پرچم، به ازای هر پرچم یا آرگومان پرچم مورد نیاز، نمونه‌ای از این گزینه را تکرار کنید.
--class-path path
دایرکتوری‌ها و آرشیوهایی را مشخص می‌کند که برای یافتن فایل‌های کلاس جستجو می‌شوند. این گزینه مسیر مشخص‌شده در متغیر محیطی CLASSPATH را بازنویسی می‌کند. اگر متغیر محیطی تنظیم نشده باشد و از این گزینه نیز استفاده نشود، دایرکتوری جاری جستجو خواهد شد. برای Linux و macOS، از دونقطه (:) برای جدا کردن موارد در مسیر استفاده کنید. برای Windows، از نقطه-ویرگول (;) برای جدا کردن موارد استفاده کنید.
--enable-preview
به کد اجازه می‌دهد به ویژگی‌های پیش‌نمایش (preview features) این نسخه وابسته باشد.
--execution specification
یک موتور اجرای جایگزین را مشخص می‌کند که در آن specification یک مشخصهٔ ExecutionControl است. برای نحو مشخصه، به مستندات بسته jdk.jshell.spi مراجعه کنید.
--feedback mode
سطح اولیهٔ بازخورد ارائه‌شده در پاسخ به ورودی‌ها را تنظیم می‌کند. این سطح اولیه را می‌توان در طول نشست با استفاده از دستور /set feedback mode بازنویسی کرد. حالت پیش‌فرض normal است.

مقدارهای زیر برای mode معتبر هستند:

verbose
بازخوردی با جزئیات کامل برای ورودی‌ها ارائه می‌دهد. اطلاعات بیشتر دربارهٔ عملیات انجام‌شده، پس از نتیجهٔ عملیات نمایش داده می‌شود. اعلان (prompt) بعدی با یک خط خالی از بازخورد جدا می‌شود.
normal
میزان متوسطی از بازخورد را ارائه می‌دهد. اعلان بعدی با یک خط خالی از بازخورد جدا می‌شود.
concise
حداقل بازخورد را ارائه می‌دهد. اعلان بعدی بلافاصله پس از قطعه‌کد یا بازخورد قرار می‌گیرد.
silent
هیچ بازخوردی ارائه نمی‌دهد. اعلان بعدی بلافاصله پس از قطعه‌کد قرار می‌گیرد.
بر اساس نحوهٔ تعریف این حالت، بازخورد سفارشی ارائه می‌دهد. حالت‌های بازخورد سفارشی درون JShell با استفاده از دستور /set mode ساخته می‌شوند.
--help یا -h یا -?
خلاصه‌ای از گزینه‌های استاندارد را چاپ کرده و از ابزار خارج می‌شود.
--help-extra یا -X
خلاصه‌ای از گزینه‌های غیراستاندارد را چاپ کرده و از ابزار خارج می‌شود. گزینه‌های غیراستاندارد ممکن است بدون اطلاع قبلی تغییر کنند.
-Jflag
پرچمی را برای ارسال به سیستم زمان اجرا (runtime) مشخص می‌کند. برای ارسال بیش از یک پرچم، به ازای هر پرچم یا آرگومان پرچم مورد نیاز، نمونه‌ای از این گزینه را تکرار کنید.
--module-path modulepath
محل یافتن ماژول‌های برنامه را مشخص می‌کند. برای Linux و macOS، از دونقطه (:) برای جدا کردن موارد در مسیر استفاده کنید. برای Windows، از نقطه-ویرگول (;) برای جدا کردن موارد استفاده کنید.
--no-startup
از اجرای اسکریپت‌های راه‌اندازی هنگام شروع JShell جلوگیری می‌کند. از این گزینه برای اجرای تنها اسکریپت‌های واردشده در خط فرمان هنگام راه‌اندازی JShell، یا شروع JShell بدون هیچ‌گونه اطلاعات از‌پیش‌بارگذاری‌شده (در صورت وارد نشدن اسکریپت) استفاده کنید. اگر از گزینهٔ --startup استفاده شده باشد، نمی‌توان از این گزینه استفاده کرد.
-q
حالت بازخورد را روی concise تنظیم می‌کند، که معادل وارد کردن --feedback concise است.
-Rflag
پرچمی را برای ارسال به سیستم زمان اجرای راه دور مشخص می‌کند. برای ارسال بیش از یک پرچم، به ازای هر پرچم یا آرگومان پرچم ارسالی، نمونه‌ای از این گزینه را مشخص کنید.
-s
حالت بازخورد را روی silent تنظیم می‌کند، که معادل وارد کردن --feedback silent است.
--show-version
اطلاعات نسخه را چاپ کرده و وارد ابزار می‌شود.
--startup file
اسکریپت راه‌اندازی پیش‌فرض را برای این نشست جایگزین می‌کند. این اسکریپت می‌تواند شامل هرگونه قطعه‌کد یا دستور معتبر باشد.

اسکریپت می‌تواند یک فایل محلی یا یکی از اسکریپت‌های از‌پیش‌تعریف‌شدهٔ زیر باشد:

DEFAULT
ورودی‌های پیش‌فرضی را که معمولاً به‌عنوان import استفاده می‌شوند، بارگذاری می‌کند.
JAVASE
تمام بسته‌های Java SE را import می‌کند.
PRINTING
متدهای print، println و printf را به‌عنوان متدهای jshell برای استفاده در داخل ابزار تعریف می‌کند.
TOOLING
متدهای javac، jar و متدهای دیگر را برای اجرای ابزارهای JDK از طریق رابط خط فرمان آن‌ها درون ابزار jshell تعریف می‌کند.

برای استفاده از بیش از یک اسکریپت، به ازای هر اسکریپت نمونهٔ جداگانه‌ای از این گزینه را مشخص کنید. اسکریپت‌های راه‌اندازی هنگام شروع اولیهٔ JShell و زمانی که نشست با دستورهای /reset، /reload یا /env راه‌اندازی مجدد می‌شود، اجرا می‌گردند. اسکریپت‌های راه‌اندازی به ترتیبی که در خط فرمان وارد شده‌اند اجرا می‌شوند.

اگر از گزینهٔ --no-startup استفاده شده باشد، نمی‌توان از این گزینه استفاده کرد.

-v
حالت بازخورد را روی verbose تنظیم می‌کند، که معادل وارد کردن --feedback verbose است.
--version
اطلاعات نسخه را چاپ کرده و از ابزار خارج می‌شود..SH "دستورهای JSHELL (JSHELL COMMANDS)"

درون ابزار jshell، از دستورها برای تغییر محیط و مدیریت قطعه‌کدها استفاده می‌شود.

/drop {name|id|startID-endID} [{name|id|startID-endID}...]
قطعه‌کدهای مشخص‌شده بر اساس نام، شناسه (ID) یا بازه‌ای از شناسه‌ها را حذف کرده و آن‌ها را غیرفعال می‌سازد. برای بازه‌ای از شناسه‌ها، شناسه آغازین و شناسه پایانی را با یک خط پیوند جدا کنید. برای ارائه یک فهرست، موارد موجود در آن را با فاصله جدا کنید. برای دیدن شناسه قطعه‌کدها، از دستور /list استفاده کنید.
/edit [option]
یک ویرایشگر را باز می‌کند. اگر هیچ گزینه‌ای وارد نشود، ویرایشگر با قطعه‌کدهای فعال باز می‌شود.

گزینه‌های زیر معتبر هستند:

{name|id|startID-endID} [{name|id|startID-endID}...]
ویرایشگر را با قطعه‌کدهای مشخص‌شده بر اساس نام، شناسه یا بازه‌ای از شناسه‌ها باز می‌کند. برای بازه‌ای از شناسه‌ها، شناسه آغازین و پایانی را با یک خط پیوند جدا کنید. برای ارائه یک فهرست، موارد موجود در آن را با فاصله جدا کنید. برای مشاهده شناسه‌های قطعه‌کدها، از دستور /list استفاده کنید.
-all
ویرایشگر را با تمام قطعه‌کدها باز می‌کند، شامل قطعه‌کدهای راه‌اندازی و مواردی که با خطا مواجه شدند، بازنویسی شدند یا حذف شدند.
-start
ویرایشگر را با قطعه‌کدهای راه‌اندازی که هنگام آغاز به کار JShell ارزیابی شدند، باز می‌کند.

برای خروج از حالت ویرایش، پنجره ویرایشگر را ببندید، یا در صورتی که گزینه -wait هنگام تعیین ویرایشگر به کار رفته باشد، به اعلان (prompt) ارائه‌شده پاسخ دهید.

از دستور /set editor برای مشخص کردن ویرایشگر مورد استفاده بهره بگیرید. اگر ویرایشگری تنظیم نشده باشد، متغیرهای محیطی زیر به ترتیب بررسی می‌شوند: JSHELLEDITOR، VISUAL و EDITOR. اگر در JShell هیچ ویرایشگری تنظیم نشده باشد و هیچ‌یک از این متغیرهای محیطی نیز مقداردهی نشده باشند، از یک ویرایشگر پیش‌فرض ساده استفاده می‌شود.

/env [options]
تنظیمات محیط را نمایش می‌دهد، یا تنظیمات محیط را به‌روزرسانی کرده و نشست (session) را مجدداً راه‌اندازی می‌کند. اگر هیچ گزینه‌ای وارد نشود، تنظیمات فعلی محیط نمایش داده می‌شوند. اگر یک یا چند گزینه وارد شوند، نشست به شرح زیر از نو آغاز می‌گردد:
•
تنظیمات محیط را با گزینه‌های ارائه‌شده به‌روزرسانی می‌کند.
•
وضعیت اجرا را بازنشانی می‌کند.
•
اسکریپت‌های راه‌اندازی را اجرا می‌کند.
•
تاریخچه را بی‌صدا (بدون نمایش خروجی اضافه) به ترتیب ورود مجدداً اجرا می‌کند. این تاریخچه شامل تمام قطعه‌کدهای معتبر یا دستورهای /drop واردشده در اعلان jshell، در اسکریپت‌های خط فرمان یا در اسکریپت‌های واردشده با دستور /open است.

تنظیمات محیط واردشده در خط فرمان یا تعیین‌شده با دستور پیشین /reset، /env یا /reload حفظ می‌شوند مگر آنکه یک option وارد شود که آن تنظیم را بازنویسی کند.

گزینه‌های زیر معتبر هستند:

--add-modules module[,module...]
ماژول‌های ریشه را مشخص می‌کند تا علاوه بر ماژول اولیه تفکیک (resolve) شوند.
--add-exports source-module/package=target-module[,target-module]*
یک برون‌ریزی (export) از package از مبدأ source-module به مقصد target-module اضافه می‌کند.
--class-path path
دایرکتوری‌ها و آرشیوهایی را مشخص می‌کند که برای یافتن فایل‌های کلاس جستجو می‌شوند. این گزینه مسیر موجود در متغیر محیطی CLASSPATH را باطل و بازنویسی می‌کند. اگر متغیر محیطی تنظیم نشده باشد و این گزینه نیز به کار نرود، دایرکتوری فعلی جستجو می‌شود. برای Linux و macOS، از دونقطه (:) برای جداسازی موارد در مسیر استفاده کنید. برای Windows، از نقطه‌ویرگول (;) برای جداسازی موارد استفاده کنید.
--module-path modulepath
محل قرارگیری ماژول‌های برنامه را مشخص می‌کند. برای Linux و macOS، از دونقطه (:) برای جداسازی موارد در مسیر استفاده کنید. برای Windows، از نقطه‌ویرگول (;) برای جداسازی موارد استفاده کنید.
/exit [integer-expression-snippet]
از ابزار خارج می‌شود. اگر هیچ قطعه‌کدی وارد نشود، وضعیت خروج صفر خواهد بود. اگر یک قطعه‌کد وارد شود و حاصل آن یک عدد صحیح باشد، آن مقدار به‌عنوان وضعیت خروج به کار می‌رود. اگر خطایی رخ دهد، یا نتیجه قطعه‌کد یک عدد صحیح نباشد، خطایی نمایش داده می‌شود و ابزار همچنان فعال می‌ماند.
/history
آنچه را که در این نشست وارد شده است نمایش می‌دهد.
/help [command|subject]
اطلاعات مربوط به دستورها و موضوعات را نمایش می‌دهد. اگر هیچ گزینه‌ای وارد نشود، خلاصه‌ای از اطلاعات همه دستورها و فهرستی از موضوعات دردسترس نمایش داده می‌شود. اگر دستور معتبری وارد شود، اطلاعات تفصیلی برای آن دستور نمایش داده می‌شود. اگر موضوع معتبری وارد شود، اطلاعات مربوط به آن موضوع نمایش داده می‌شود.

مقدارهای زیر برای subject معتبر هستند:

context
گزینه‌هایی را که برای پیکربندی محیط در دسترس هستند شرح می‌دهد.
intro
مقدمه‌ای بر این ابزار ارائه می‌دهد.
shortcuts
کلیدهای میانبر برای تکمیل دستورها و قطعه‌کدها را شرح می‌دهد. بخش Input Shortcuts را ببینید.
/imports
واردسازی‌های (imports) فعال فعلی را نمایش می‌دهد، شامل مواردی از اسکریپت‌های راه‌اندازی و اسکریپت‌هایی که هنگام اجرای JShell در خط فرمان وارد شده‌اند.
/list [option]
فهرستی از قطعه‌کدها و شناسه آن‌ها را نمایش می‌دهد. اگر هیچ گزینه‌ای وارد نشود، تمام قطعه‌کدهای فعال نمایش داده می‌شوند، اما قطعه‌کدهای راه‌اندازی نمایش داده نخواهند شد.

گزینه‌های زیر معتبر هستند:

{name|id|startID-endID} [{name|id|startID-endID}...]
قطعه‌کدهای مشخص‌شده بر اساس نام، شناسه یا بازه‌ای از شناسه‌ها را نمایش می‌دهد. برای بازه‌ای از شناسه‌ها، شناسه آغازین و پایانی را با یک خط پیوند جدا کنید. برای ارائه یک فهرست، موارد موجود در آن را با فاصله جدا کنید.
-all
تمام قطعه‌کدها را نمایش می‌دهد، شامل قطعه‌کدهای راه‌اندازی و قطعه‌کدهایی که با شکست مواجه شدند، بازنویسی شدند یا حذف شدند. شناسه‌هایی که با s آغاز می‌شوند، قطعه‌کدهای راه‌اندازی هستند. شناسه‌هایی که با e آغاز می‌شوند، قطعه‌کدهایی هستند که با خطا مواجه شده‌اند.
-start
قطعه‌کدهای راه‌اندازی را که هنگام آغاز به کار JShell ارزیابی شدند نمایش می‌دهد.
/methods [option]
اطلاعات مربوط به متدهای واردشده را نمایش می‌دهد. اگر هیچ گزینه‌ای وارد نشود، نام، انواع پارامتر و نوع بازگشتی تمام متدهای فعال نمایش داده می‌شود.

گزینه‌های زیر معتبر هستند:

{name|id|startID-endID} [{name|id|startID-endID}...]
اطلاعات مربوط به متدهای مشخص‌شده بر اساس نام، شناسه یا بازه‌ای از شناسه‌ها را نمایش می‌دهد. برای بازه‌ای از شناسه‌ها، شناسه آغازین و پایانی را با یک خط پیوند جدا کنید. برای ارائه یک فهرست، موارد موجود در آن را با فاصله جدا کنید. برای مشاهده شناسه‌های قطعه‌کدها، از دستور /list استفاده کنید.
-all
اطلاعات تمام متدها را نمایش می‌دهد، شامل مواردی که هنگام آغاز به کار JShell افزوده شدند و متدهایی که با شکست مواجه شدند، بازنویسی شدند یا حذف شدند..TP -start اطلاعات متدهای راه‌اندازی را که هنگام شروع JShell افزوده شده‌اند نمایش می‌دهد.
/open file
اسکریپت مشخص‌شده را باز کرده و قطعه‌کدها را در ابزار می‌خواند. اسکریپت می‌تواند یک فایل محلی یا یکی از اسکریپت‌های از پیش تعریف‌شدهٔ زیر باشد:
DEFAULT
مدخل‌های پیش‌فرض را که معمولاً به عنوان واردسازی‌ها (imports) به کار می‌روند، بارگذاری می‌کند.
JAVASE
تمام بسته‌های Java SE را وارد می‌کند.
PRINTING
توابع print، println و printf را به عنوان متدهای jshell برای استفاده در این ابزار تعریف می‌کند.
TOOLING
دستورهای javac، jar و سایر متدها را برای اجرای ابزارهای JDK از طریق رابط خط فرمان آن‌ها درون ابزار jshell تعریف می‌کند.
/reload [options]
نشست را به شرح زیر راه‌اندازی مجدد می‌کند:
•
تنظیمات محیط را با گزینه‌های ارائه‌شده (در صورت وجود) به‌روزرسانی می‌کند.
•
وضعیت اجرا را بازنشانی می‌کند.
•
اسکریپت‌های راه‌اندازی را اجرا می‌کند.
•
تاریخچه را به ترتیبی که وارد شده‌اند، بازپخش می‌کند. تاریخچه شامل تمام قطعه‌کدهای معتبر یا دستورهای /drop واردشده در اعلان jshell، اسکریپت‌های ارائه‌شده در خط فرمان، یا اسکریپت‌های واردشده با دستور /open است.

تنظیمات محیطی واردشده در خط فرمان یا ارائه‌شده با دستور قبلی /reset، /env یا /reload حفظ می‌شوند، مگر اینکه یک option وارد شود که تنظیم را بازنویسی کند.

گزینه‌های زیر معتبر هستند:

--add-modules module[,module...]
ماژول‌های ریشه را برای حل وابستگی علاوه بر ماژول اولیه مشخص می‌کند.
--add-exports source-module/package=target-module[,target-module]*
یک برون‌بری (export) از package را از source-module به target-module اضافه می‌کند.
--class-path path
دایرکتوری‌ها و آرشیوهایی را که برای یافتن فایل‌های کلاس جستجو می‌شوند مشخص می‌کند. این گزینه مسیر موجود در متغیر محیطی CLASSPATH را بازنویسی می‌کند. اگر متغیر محیطی تنظیم نشده باشد و از این گزینه نیز استفاده نشود، دایرکتوری جاری جستجو می‌شود. برای Linux و macOS، برای جداسازی موارد در مسیر از دونقطه (:) استفاده کنید. برای Windows، برای جداسازی موارد از نقطه‌ویرگول (;) استفاده کنید.
--module-path modulepath
محل یافتن ماژول‌های برنامه را مشخص می‌کند. برای Linux و macOS، برای جداسازی موارد در مسیر از دونقطه (:) استفاده کنید. برای Windows، برای جداسازی موارد از نقطه‌ویرگول (;) استفاده کنید.
-quiet
تاریخچه معتبر را بدون نمایش آن بازپخش می‌کند. خطاها نمایش داده می‌شوند.
-restore
محیط را به وضعیتی که در ابتدای اجرای قبلی ابزار بود، یا به آخرین باری که یک دستور /reset، /reload یا /env در اجرای قبلی اجرا شده بود، بازنشانی می‌کند. تاریخچه معتبر از آن نقطه به بعد بازپخش می‌شود. از این گزینه برای بازیابی نشست قبلی JShell استفاده کنید.
/reset [options]
تمام قطعه‌کدهای واردشده را دور می‌ریزد و نشست را به شرح زیر راه‌اندازی مجدد می‌کند:
•
تنظیمات محیط را با گزینه‌های ارائه‌شده (در صورت وجود) به‌روزرسانی می‌کند.
•
وضعیت اجرا را بازنشانی می‌کند.
•
اسکریپت‌های راه‌اندازی را اجرا می‌کند.

تاریخچه بازپخش نمی‌شود. همهٔ کدهایی که وارد شده بودند از بین می‌روند.

تنظیمات محیطی واردشده در خط فرمان یا ارائه‌شده با دستور قبلی /reset، /env یا /reload حفظ می‌شوند مگر اینکه یک option وارد شود که تنظیم را بازنویسی کند.

گزینه‌های زیر معتبر هستند:

--add-modules module[,module...]
ماژول‌های ریشه را برای حل وابستگی علاوه بر ماژول اولیه مشخص می‌کند.
--add-exports source-module/package=target-module[,target-module]*
یک برون‌بری (export) از package را از source-module به target-module اضافه می‌کند.
--class-path path
دایرکتوری‌ها و آرشیوهایی را که برای یافتن فایل‌های کلاس جستجو می‌شوند مشخص می‌کند. این گزینه مسیر موجود در متغیر محیطی CLASSPATH را بازنویسی می‌کند. اگر این متغیر محیطی تنظیم نشده باشد و از این گزینه نیز استفاده نشود، دایرکتوری جاری جستجو می‌شود. برای Linux و macOS، برای جداسازی موارد در مسیر از دونقطه (:) استفاده کنید. برای Windows، برای جداسازی موارد از نقطه‌ویرگول (;) استفاده کنید.
--module-path modulepath
محل یافتن ماژول‌های برنامه را مشخص می‌کند. برای Linux و macOS، برای جداسازی موارد در مسیر از دونقطه (:) استفاده کنید. برای Windows، برای جداسازی موارد از نقطه‌ویرگول (;) استفاده کنید.
/save [options] file
قطعه‌کدها و دستورها را در فایل مشخص‌شده ذخیره می‌کند. اگر هیچ گزینه‌ای وارد نشود، قطعه‌کدهای فعال ذخیره می‌شوند.

گزینه‌های زیر معتبر هستند:

{name|id|startID-endID} [{name|id|startID-endID}...]
قطعه‌کدها و دستورهای شناسایی‌شده با نام، شناسه (ID)، یا بازه‌ای از شناسه‌ها را ذخیره می‌کند. برای بازه‌ای از شناسه‌ها، شناسه آغازین و شناسه پایانی را که با خط پیوند جدا شده‌اند ارائه دهید. برای ارائه یک فهرست، موارد درون فهرست را با فاصله جدا کنید. از دستور /list برای دیدن شناسه‌های قطعه‌کدها استفاده کنید.
-all
همهٔ قطعه‌کدها، از جمله قطعه‌کدهای راه‌اندازی و قطعه‌کدهایی که بازنویسی شده یا ناموفق بوده‌اند را ذخیره می‌کند.
-history
تاریخچهٔ ترتیبی تمام دستورها و قطعه‌کدهای واردشده در نشست فعلی را ذخیره می‌کند.
-start
تنظیمات راه‌اندازی فعلی را ذخیره می‌کند. اگر هیچ اسکریپت راه‌اندازی ارائه نشده باشد، یک فایل خالی ذخیره می‌شود.
/set [setting]
اطلاعات پیکربندی، شامل ویرایشگر خارجی، تنظیمات راه‌اندازی و حالت بازخورد (feedback mode) را تنظیم می‌کند. این دستور همچنین برای ایجاد یک حالت بازخورد سفارشی با اعلان (prompt)، قالب‌بندی و مقادیر کوتاه‌سازی (truncation) سفارشی‌شده استفاده می‌شود. اگر هیچ تنظیمی وارد نشود، تنظیمات فعلی برای ویرایشگر، تنظیمات راه‌اندازی و حالت بازخورد نمایش داده می‌شوند.

مقادیر زیر برای setting معتبر هستند:

editor [options] [command]
دستور مورد استفاده برای راه‌اندازی یک ویرایشگر خارجی را هنگام وارد کردن دستور /edit تعیین می‌کند. این دستور می‌تواند شامل آرگومان‌های دستور باشد که با فاصله جدا شده‌اند. اگر هیچ دستور یا گزینه‌ای وارد نشود، تنظیمات فعلی نمایش داده می‌شوند.

گزینه‌های زیر معتبر هستند:

-default
ویرایشگر را روی ویرایشگر پیش‌فرضی که همراه JShell ارائه شده است تنظیم می‌کند. اگر دستوری برای راه‌اندازی یک ویرایشگر وارد شده باشد، نمی‌توان از این گزینه استفاده کرد..TP -delete ویرایشگر را به ویرایشگری که هنگام شروع نشست فعال بود، بازمی‌گرداند. اگر همراه با گزینهٔ -retain استفاده شود، تنظیم ذخیره‌شدهٔ ویرایشگر حذف شده و ویرایشگر روی اولین مورد یافت‌شده از میان متغیرهای محیطی زیر تنظیم می‌شود: JSHELLEDITOR، VISUAL، یا EDITOR. اگر هیچ‌یک از متغیرهای محیطی ویرایشگر مقداردهی نشده باشند، این گزینه ویرایشگر را روی ویرایشگر پیش‌فرض تنظیم می‌کند.

اگر دستوری برای راه‌اندازی یک ویرایشگر وارد شده باشد، نمی‌توان از این گزینه استفاده کرد.

-retain
تنظیمات ویرایشگر را در طول نشست‌ها ذخیره می‌کند. اگر هیچ گزینه یا دستور دیگری وارد نشود، تنظیمات فعلی ذخیره می‌شود.
-wait
از کاربر می‌خواهد تا اتمام ویرایش را مشخص کند. در غیر این صورت با خروج ویرایشگر، کنترل به JShell بازمی‌گردد. اگر ویرایشگر مورد استفاده بلافاصله خارج می‌شود، برای نمونه زمانی که یک پنجرهٔ ویرایش از قبل وجود دارد، از این گزینه استفاده کنید. این گزینه تنها زمانی معتبر است که دستوری برای راه‌اندازی ویرایشگر وارد شده باشد.
feedback [mode]
حالت بازخورد مورد استفاده برای پاسخ به ورودی را تنظیم می‌کند. اگر هیچ حالتی وارد نشود، حالت فعلی نمایش داده می‌شود.

حالت‌های زیر معتبر هستند: concise، normal، silent، verbose، و هر حالت سفارشی ساخته‌شده با دستور /set mode.

format mode field "format-string" selector
قالب بازخورد ارائه‌شده در پاسخ به ورودی را تنظیم می‌کند. اگر هیچ حالتی وارد نشود، قالب‌های فعلی تمام فیلدها برای همهٔ حالت‌های بازخورد نمایش داده می‌شوند. اگر فقط یک حالت وارد شود، قالب‌های فعلی آن حالت نمایش داده می‌شوند. اگر فقط یک حالت و یک فیلد وارد شوند، قالب‌های فعلی آن فیلد نمایش داده می‌شوند.

برای تعریف یک قالب، آرگومان‌های زیر مورد نیاز هستند:

حالت بازخوردی را که قالب پاسخ روی آن اعمال می‌شود، مشخص می‌کند. تنها حالت‌های سفارشی ایجادشده با دستور /set mode قابل تغییر هستند.
یک فیلد وابسته به زمینه را که قالب پاسخ روی آن اعمال می‌شود، مشخص می‌کند. فیلدها در راهنمای برخط توضیح داده شده‌اند که از طریق دستور /help /set format در JShell قابل دسترسی است.
"format-string"
رشته‌ای را مشخص می‌کند که به عنوان قالب پاسخ برای فیلد و گزینش‌گر (selector) مشخص‌شده استفاده می‌شود. ساختار رشتهٔ قالب در راهنمای برخط توضیح داده شده است که از طریق دستور /help /set format در JShell قابل دسترسی است.
زمینه‌ای را مشخص می‌کند که قالب پاسخ در آن اعمال می‌شود. گزینش‌گرها در راهنمای برخط توضیح داده شده‌اند که از طریق دستور /help /set format در JShell قابل دسترسی است.
mode [mode-name] [existing-mode] [options]
یک حالت بازخورد سفارشی با نام ارائه‌شده ایجاد می‌کند. اگر هیچ نام حالتی وارد نشود، تنظیمات تمام حالت‌ها نمایش داده می‌شود، که شامل تنظیمات حالت، اعلان (prompt)، قالب و کوتاه‌سازی (truncation) است. اگر نام یک حالت موجود وارد شود، تنظیمات آن حالت موجود در حالتی که در حال ایجاد است کپی می‌شود.

گزینه‌های زیر معتبر هستند:

-command|-quiet
سطح بازخورد نمایش‌داده‌شده برای دستورها را هنگام استفاده از این حالت مشخص می‌کند. این گزینه هنگام ایجاد یک حالت بازخورد الزامی است. از -command برای نمایش اطلاعات و بازخورد تأیید دستورها استفاده کنید. از -quiet برای نمایش بازخوردهای ضروری دستورها، مانند پیام‌های خطا، استفاده کنید.
-delete
حالت بازخورد نام‌برده را برای این نشست حذف می‌کند. نام حالتی که باید حذف شود الزامی است. برای حذف دائمی یک حالت نگه‌داری‌شده، از گزینهٔ -retain همراه با این گزینه استفاده کنید. حالت‌های پیش‌تعریف‌شده نمی‌توانند حذف شوند.
-retain
حالت بازخورد نام‌برده را در طول نشست‌ها ذخیره می‌کند. نام حالتی که باید نگه‌داری شود الزامی است.

حالت بازخورد جدید را با استفاده از دستورهای /set prompt، /set format، و /set truncation پیکربندی کنید.

برای شروع استفاده از حالت جدید، از دستور /set feedback استفاده کنید.

prompt mode "prompt-string" "continuation-prompt-string"
اعلان‌ها را برای ورودی درون JShell تنظیم می‌کند. اگر هیچ حالتی وارد نشود، اعلان‌های فعلی تمام حالت‌های بازخورد نمایش داده می‌شوند. اگر فقط یک حالت وارد شود، اعلان‌های فعلی آن حالت نمایش داده می‌شوند.

برای تعریف یک اعلان، آرگومان‌های زیر مورد نیاز هستند:

حالت بازخوردی را که اعلان‌ها روی آن اعمال می‌شوند، مشخص می‌کند. تنها حالت‌های سفارشی ایجادشده با دستور /set mode قابل تغییر هستند.
"prompt-string"
رشته‌ای را مشخص می‌کند که به عنوان اعلان خط اول ورودی استفاده می‌شود.
"continuation-prompt-string"
رشته‌ای را مشخص می‌کند که به عنوان اعلان برای خطوط ورودی اضافیِ مورد نیاز جهت تکمیل یک قطعه‌کد استفاده می‌شود.
start [-retain] [file [file...]|option]
نام اسکریپت‌های راه‌اندازی را که هنگام اجرای دستور بعدی /reset، /reload، یا /env استفاده می‌شوند، تنظیم می‌کند. اگر بیش از یک اسکریپت وارد شود، اسکریپت‌ها به همان ترتیبی که وارد شده‌اند اجرا می‌شوند. اگر هیچ اسکریپت یا گزینه‌ای وارد نشود، تنظیمات فعلی راه‌اندازی نمایش داده می‌شوند.

اسکریپت‌ها می‌توانند پرونده‌های محلی یا یکی از اسکریپت‌های پیش‌تعریف‌شدهٔ زیر باشند:

DEFAULT
ورودی‌های پیش‌فرض را بارگیری می‌کند، که معمولاً به عنوان واردسازی‌ها (imports) استفاده می‌شوند.
JAVASE
تمام بسته‌های Java SE را وارد می‌کند.
PRINTING
متدهای print، println، و printf را به عنوان متدهای jshell برای استفاده در داخل ابزار تعریف می‌کند.
TOOLING
متدهای javac، jar، و دیگر متدها را جهت اجرای ابزارهای JDK از طریق واسط خط فرمان آن‌ها در ابزار jshell تعریف می‌کند.

گزینه‌های زیر معتبر هستند:

-default
تنظیمات راه‌اندازی را به تنظیمات پیش‌فرض بازمی‌گرداند.
-none
مشخص می‌کند که از هیچ تنظیم راه‌اندازی استفاده نشود.

برای ذخیرهٔ تنظیمات راه‌اندازی در طول نشست‌ها، از گزینهٔ -retain استفاده کنید.

truncation mode length selector
حداکثر طول مقدار نمایش‌داده‌شده را تنظیم می‌کند. اگر هیچ حالتی وارد نشود، مقادیر فعلی کوتاه‌سازی برای تمام حالت‌های بازخورد نمایش داده می‌شوند. اگر فقط یک حالت وارد شود، مقادیر فعلی کوتاه‌سازی برای آن حالت نمایش داده می‌شوند. برای تعریف مقادیر کوتاه‌سازی (truncation)، آرگومان‌های زیر مورد نیاز هستند:
حالت بازخوردی (feedback mode) را که مقدار کوتاه‌سازی روی آن اعمال می‌شود، مشخص می‌کند. تنها حالت‌های سفارشی ایجادشده با دستور /set mode قابل تغییر هستند.
عدد صحیح بدون علامتی را مشخص می‌کند که به عنوان بیشینهٔ طول برای گزینش‌گر (selector) تعیین‌شده به کار می‌رود.
زمینه‌ای (context) را که مقدار کوتاه‌سازی در آن اعمال می‌شود، مشخص می‌کند. گزینش‌گرها در راهنمای برخط شرح داده شده‌اند که از طریق JShell با دستور /help /set truncation قابل دسترسی است.
/types [option]
کلاس‌ها، رابط‌ها (interfaces) و شمارش‌هایی (enums) را که وارد شده‌اند نمایش می‌دهد. اگر هیچ گزینه‌ای وارد نشود، تمامی کلاس‌ها، رابط‌ها و شمارش‌های فعال فعلی نمایش داده می‌شوند.

گزینه‌های زیر معتبر هستند:

{name|id|startID-endID} [{name|id|startID-endID}...]
اطلاعات مربوط به کلاس‌ها، رابط‌ها و شمارش‌های مشخص‌شده با نام، شناسه (ID) یا بازه‌ای از شناسه‌ها را نمایش می‌دهد. برای بازه‌ای از شناسه‌ها، شناسهٔ شروع و پایان را به همراه یک خط پیوند جدا کنید. برای ارائهٔ یک فهرست، موارد موجود در فهرست را با فاصله (space) جدا کنید. از دستور /list برای دیدن شناسه‌های قطعه‌کدها (snippets) استفاده کنید.
-all
اطلاعات مربوط به تمام کلاس‌ها، رابط‌ها و شمارش‌ها را نمایش می‌دهد؛ از جمله مواردی که هنگام راه‌اندازی JShell اضافه شده‌اند، و مواردی که با خطا مواجه شدند، بازنویسی شدند یا کنار گذاشته شدند.
-start
اطلاعات مربوط به کلاس‌ها، رابط‌ها و شمارش‌های راه‌اندازی اولیه را که در زمان شروع JShell افزوده شده‌اند نمایش می‌دهد.
/vars [option]
نام، نوع و مقدار متغیرهایی را که وارد شده‌اند نمایش می‌دهد. اگر هیچ گزینه‌ای وارد نشود، تمامی متغیرهای فعال فعلی نمایش داده می‌شوند.

گزینه‌های زیر معتبر هستند:

{name|id|startID-endID} [{name|id|startID-endID}...]
اطلاعات مربوط به متغیرهای مشخص‌شده با نام، شناسه یا بازه‌ای از شناسه‌ها را نمایش می‌دهد. برای بازه‌ای از شناسه‌ها، شناسهٔ شروع و شناسهٔ پایان را به همراه یک خط پیوند جدا کنید. برای ارائهٔ یک فهرست، موارد فهرست را با فاصله جدا کنید. برای مشاهدهٔ شناسه‌های قطعه‌کدها از دستور /list استفاده کنید.
-all
اطلاعات مربوط به تمام متغیرها را نمایش می‌دهد؛ از جمله متغیرهایی که هنگام راه‌اندازی JShell اضافه شده‌اند، و متغیرهایی که با خطا مواجه شدند، بازنویسی شدند یا کنار گذاشته شدند.
-start
اطلاعات مربوط به متغیرهای راه‌اندازی اولیه را که هنگام شروع JShell اضافه شده‌اند نمایش می‌دهد.
/?
مشابه دستور /help است.
/!
آخرین قطعه‌کد را دوباره اجرا می‌کند.
/{name|id|startID-endID} [{name|id|startID-endID}...]
قطعه‌کدهای مشخص‌شده بر اساس شناسه، بازه‌ای از شناسه‌ها یا نام را دوباره اجرا می‌کند. برای بازه‌ای از شناسه‌ها، شناسهٔ شروع و شناسهٔ پایان را که با یک خط پیوند جدا شده‌اند ارائه دهید. برای ارائهٔ یک فهرست، موارد فهرست را با فاصله جدا کنید. نخستین مورد در فهرست باید یک شناسه یا بازه‌ای از شناسه‌ها باشد. برای مشاهدهٔ شناسه‌های قطعه‌کدها از دستور /list استفاده کنید.
/-n
-nاُمین قطعه‌کد قبلی را دوباره اجرا می‌کند. به عنوان مثال، اگر ۱۵ قطعه‌کد وارد شده باشد، دستور /-4 قطعه‌کد یازدهم را اجرا می‌کند. دستورها در این شمارش محاسبه نمی‌شوند..SH "میان‌برهای ورودی (INPUT SHORTCUTS)"

میان‌برهای زیر برای وارد کردن دستورات و قطعه‌کدها در JShell در دسترس هستند.

<tab>
هنگام وارد کردن قطعه‌کدها، دستورات، زیردستورات، آرگومان‌های دستور یا گزینه‌های دستور، از کلید Tab برای تکمیل خودکار مورد استفاده کنید. اگر مورد بر اساس آنچه وارد شده است قابل تشخیص نباشد، گزینه‌های ممکن ارائه می‌شوند.

هنگام وارد کردن یک فراخوانی متد، پس از پرانتز بازِ فراخوانی متد از کلید Tab برای مشاهده پارامترهای متد استفاده کنید. اگر متد بیش از یک امضا داشته باشد، تمام امضاها نمایش داده می‌شوند. فشردن دوباره کلید Tab، توضیحات متد و پارامترهای امضای نخست را نمایش می‌دهد. برای مشاهده توضیحات سایر امضاها، به فشردن کلید Tab ادامه دهید.

پس از وارد کردن یک عبارت کامل، از این توالی کلید برای تبدیل عبارت به اعلان متغیر (variable declaration) با نوعی که توسط نوع عبارت تعیین می‌شود، استفاده کنید.
پس از وارد کردن یک عبارت یا دستور کامل، از این توالی کلید برای تبدیل عبارت یا دستور به اعلان متد (method declaration) استفاده کنید. اگر یک عبارت وارد شده باشد، نوع بازگشتی بر اساس نوع عبارت تعیین خواهد شد.
هنگامی که شناسه‌ای وارد شود که قابل تحلیل (resolve) نباشد، از این توالی کلید برای نمایش واردسازی‌های (imports) احتمالی که شناسه را بر اساس محتوای مسیر کلاس (class path) مشخص‌شده حل می‌کنند، استفاده کنید.

اختصار یک دستور در صورتی پذیرفته می‌شود که به طور منحصربه‌فرد یک دستور را مشخص کند. برای نمونه، /l به عنوان دستور /list شناسایی می‌شود. با این حال، /s یک اختصار معتبر نیست زیرا نمی‌توان تشخیص داد که منظور دستور /set است یا /save. از /se برای دستور /set یا از /sa برای دستور /save استفاده کنید.

اختصارات برای زیردستورات، آرگومان‌های دستور و گزینه‌های دستور نیز پذیرفته می‌شوند. برای نمونه، از /m -a برای نمایش تمام متدها استفاده کنید.

تاریخچه‌ای از موارد واردشده در تمام نشست‌ها نگهداری می‌شود. از کلیدهای جهت‌نمای بالا و پایین برای پیمایش میان دستورات و قطعه‌کدهای نشست فعلی و نشست‌های پیشین استفاده کنید. از کلید Ctrl همراه با کلیدهای جهت‌نمای بالا و پایین برای رد کردن تمامی خطوط به جز خط نخستِ قطعه‌کدهای چندخطی استفاده کنید.

از ترکیب کلید Ctrl+R برای جستجوی رشته واردشده در تاریخچه استفاده کنید. اعلان خط فرمان تغییر می‌کند تا رشته و موردِ مطابقت‌یافته را نشان دهد. کلید Ctrl+R از مکان فعلی در تاریخچه به سمت عقب و در میان ورودی‌های پیشین جستجو می‌کند. کلید Ctrl+S از مکان فعلی در تاریخچه به سمت جلو و در میان ورودی‌های بعدی جستجو می‌کند.

قابلیت‌های ویرایشی JShell مشابه سایر شل‌های رایج است. کلیدها و ترکیب‌های کلیدی صفحه‌کلید، میان‌برهای ویرایش خط را فراهم می‌کنند. کلیدهای Ctrl و Meta در ترکیب‌های کلیدی به کار می‌روند. اگر صفحه‌کلید شما کلید Meta ندارد، کلید Alt اغلب برای ارائه عملکرد کلید Meta نگاشت شده است.

میان‌برهای ویرایش خط

کلید یا ترکیب کلیدها عملکرد
Return خط فعلی را وارد می‌کند.
جهت‌نمای چپ مکان‌نما را یک نویسه به چپ می‌برد.
جهت‌نمای راست مکان‌نما را یک نویسه به راست می‌برد.
Ctrl+A مکان‌نما را به ابتدای خط می‌برد.
Ctrl+E مکان‌نما را به انتهای خط می‌برد.
Meta+B مکان‌نما را یک کلمه به چپ می‌برد.
Meta+F مکان‌نما را یک کلمه به راست می‌برد.
Delete نویسه زیر مکان‌نما را حذف می‌کند.
Backspace نویسه پیش از مکان‌نما را حذف می‌کند.
Ctrl+K متن را از مکان‌نما تا انتهای خط حذف می‌کند.
Meta+D متن را از مکان‌نما تا انتهای کلمه حذف می‌کند.
Ctrl+W متن را از مکان‌نما تا نویسه فاصله خالی (white space) قبلی حذف می‌کند.
Ctrl+Y آخرین متن حذف‌شده را در خط می‌چسباند (paste).
Meta+Y پس از Ctrl+Y، برای پیمایش چرخشی میان متن‌های حذف‌شده قبلی فشرده می‌شود.
"مثالی از آغاز و پایان یک نشست JSHELL (EXAMPLE OF STARTING AND STOPPING A JSHELL SESSION)"
ابزار JShell همراه با JDK ارائه می‌شود.
برای شروع یک نشست، jshell را در خط فرمان وارد کنید.
یک پیام خوش‌آمدگویی چاپ می‌شود و اعلانی برای وارد کردن دستورات و
قطعه‌کدها فراهم می‌گردد.
% jshell
| Welcome to JShell -- Version 9
| For an introduction type: /help intro
jshell>

برای مشاهده این‌که چه قطعه‌کدهایی هنگام شروع JShell به‌طور خودکار بارگذاری شده‌اند، از
دستور /list -start استفاده کنید.
قطعه‌کدهای پیش‌فرض راه‌اندازی، دستورات import برای بسته‌های پرکاربرد هستند.
شناسه (ID) هر قطعه‌کد با حرف s آغاز می‌شود که
نشان‌دهنده راه‌اندازی (startup) بودن آن قطعه‌کد است.
jshell> /list -start
s1 : import java.io.*;
s2 : import java.math.*;
s3 : import java.net.*;
s4 : import java.nio.file.*;
s5 : import java.util.*;
s6 : import java.util.concurrent.*;
s7 : import java.util.function.*;
s8 : import java.util.prefs.*;
s9 : import java.util.regex.*;
s10 : import java.util.stream.*;
jshell>

برای پایان دادن به نشست، از دستور /exit استفاده کنید.
jshell> /exit
| Goodbye
%

"مثالی از وارد کردن قطعه‌کدها (EXAMPLE OF ENTERING SNIPPETS)"
قطعه‌کدها شامل دستورات Java، تعاریف متغیر، تعاریف متد،
تعاریف کلاس، عبارت‌های import و عبارات محاسباتی (expressions) هستند.
اگر نقطه‌ویرگول پایانی (semicolon) در انتهای یک قطعه‌کد کامل وجود نداشته باشد،
به‌طور خودکار افزوده می‌شود.
مثال زیر تعریف دو متغیر و یک متد و همچنین اجرای متد را
نشان می‌دهد.
توجه داشته باشید که به دلیل مشخص نشدن متغیر، یک متغیر موقت (scratch variable) به‌طور خودکار
برای نگهداری نتیجه ایجاد می‌شود.
jshell> int a=4
a ==> 4
jshell> int b=8
b ==> 8
jshell> int square(int i1) {
...> return i1 * i1;
...> }
| created method square(int)
jshell> square(b)
$5 ==> 64
"مثال تغییر قطعه‌کدها (EXAMPLE OF CHANGING SNIPPETS)"
تعریف یک متغیر، متد یا کلاس را با وارد کردن مجدد آن تغییر دهید.
مثال زیر تعریف یک متد و اجرای آن را نشان می‌دهد:
jshell> String grade(int testScore) {
...> if (testScore >= 90) {
...> return "Pass";
...> }
...> return "Fail";
...> }
| created method grade(int)
jshell> grade(88)
$3 ==> "Fail"

برای تغییر متد grade جهت امکان قبولی دانشجویان بیشتر، تعریف متد را دوباره وارد کرده و نمره قبولی را به 80 تغییر دهید.
برای جلوگیری از تایپ مجدد، از کلید جهت‌نمای بالا برای بازیابی ورودی‌های قبلی استفاده کنید و تغییر را در عبارت if اعمال نمایید.
مثال زیر تعریف جدید را نشان می‌دهد و متد را برای نمایش نتیجه جدید دوباره اجرا می‌کند:
jshell> String grade(int testScore) {
...> if (testScore >= 80) {
...> return "Pass";
...> }
...> return "Fail";
...> }
| modified method grade(int)
jshell> grade(88)
$5 ==> "Pass"

برای قطعه‌کدهایی که بیش از چند خط هستند، یا برای اعمال تغییرات بیشتر، از دستور /edit برای باز کردن قطعه‌کد در یک ویرایشگر استفاده کنید.
پس از تکمیل تغییرات، پنجره ویرایش را ببندید تا کنترل دوباره به نشست JShell بازگردد.
مثال زیر دستور و بازخورد ارائه‌شده پس از بستن پنجره ویرایش را نشان می‌دهد.
از دستور /list برای نمایش اینکه نمره قبولی به 85 تغییر یافته است استفاده می‌شود.
jshell> /edit grade
| modified method grade(int)
jshell> /list grade
6 : String grade(int testScore) {
if (testScore >= 85) {
return "Pass";
}
return "Fail";
}

"مثال ایجاد حالت بازخورد سفارشی (EXAMPLE OF CREATING A CUSTOM FEEDBACK MODE)"
حالت بازخورد (feedback mode)، اعلان (prompt) نمایش‌داده‌شده، پیام‌های بازخوردی که با ورود قطعه‌کدها ارائه می‌شوند و حداکثر طول مقادیر نمایش‌داده‌شده را تعیین می‌کند.
حالت‌های بازخورد از پیش تعریف‌شده در دسترس هستند.
دستورهایی نیز برای ایجاد حالت‌های بازخورد سفارشی ارائه شده است.
از دستور /set mode برای ایجاد یک حالت بازخورد جدید استفاده کنید.
در مثال زیر، حالت جدید mymode بر پایه حالت بازخورد از پیش تعریف‌شده normal ایجاد شده و بازخورد دستوریِ تأییدکننده نمایش داده می‌شود:
jshell> /set mode mymode normal -command
| Created new feedback mode: mymode

از آنجا که حالت جدید بر پایه حالت normal است، اعلان‌ها یکسان هستند.
مثال زیر نحوه مشاهده اعلان‌های مورد استفاده و سپس تغییر آنها به رشته‌های سفارشی را نشان می‌دهد.
رشته اول نمایانگر اعلان استاندارد JShell است.
رشته دوم نشان‌دهنده اعلان خطوط بعدی در قطعه‌کدهای چندخطی است.
jshell> /set prompt mymode
| /set prompt mymode "\njshell> " " ...> "
jshell> /set prompt mymode "\nprompt$ " " continue$ "

حداکثر طول مقدار نمایش داده‌شده توسط تنظیم کوتاه‌سازی (truncation) کنترل می‌شود.
انواع مختلف مقادیر می‌توانند طول‌های متفاوتی داشته باشند.
مثال زیر مقدار کوتاه‌سازی کلی را روی 72 و مقدار کوتاه‌سازی را برای عبارت‌های مقدار متغیر روی 500 تنظیم می‌کند:
jshell> /set truncation mymode 72
jshell> /set truncation mymode 500 varvalue

بازخورد نمایش‌داده‌شده پس از وارد کردن قطعه‌کدها توسط تنظیم قالب‌بندی (format) کنترل می‌شود و بر اساس نوع قطعه‌کد واردشده و عملیات انجام‌شده برای آن قطعه‌کد است.
در حالت از پیش تعریف‌شده normal، هنگام ایجاد یک متد رشته created نمایش داده می‌شود.
مثال زیر نحوه تغییر این رشته به defined را نشان می‌دهد:
jshell> /set format mymode action "defined" added-primary

از دستور /set feedback برای شروع استفاده از حالت بازخوردی که به‌تازگی ایجاد شده است استفاده کنید.
مثال زیر حالت سفارشی را در حال استفاده نشان می‌دهد:
jshell> /set feedback mymode
| Feedback mode: mymode
prompt$ int square (int num1){
continue$ return num1*num1;
continue$ }
| defined method square(int)
prompt$

2023 JDK 21