জাভা ৯ একটি ইন্টারেক্টিভ REPL (Read-Evaluate-Print-Loop) টুল: JShell পরিচয় করিয়েছে, যা আমাদের কোড স্নিপেট এক্সিকিউট করে এবং অবিলম্বে ফলাফল পাওয়া যায়। একটি স্নিপেট হলো একটি ইনস্ট্রাকশন যা স্ট্যান্ডার্ড জাভা সিনট্যাক্স ব্যবহার করতে পারে। এটি একটি একক এক্সপ্রেশন, স্টেটমেন্ট, অথবা ডিক্লেরেশন প্রতিনিধিত্ব করে।
JShell টুল ব্যবহার করার সময় নিচের কিছু নিয়ম মেনে চলতে হয়।
JShell টুলের নিয়মাবলী:
- একটি স্নিপেট হতে পারে ইম্পোর্ট ডিক্লেরেশন, ক্লাস ডিক্লেরেশন, মেথড ডিক্লেরেশন, ইন্টারফেস ডিক্লেরেশন, ফিল্ড ডিক্লেরেশন, স্টেটমেন্ট, এবং প্রাইমারি এক্সপ্রেশন।
- প্যাকেজ ডিক্লেরেশন অনুমোদিত নয়। JShell কোড ট্রানসিয়েন্ট JShell প্যাকেজের অধীনে রাখা হয়।
- অ্যাক্সেস মডিফায়ার: public, protected, এবং private, এবং মডিফায়ার: final এবং static টপ-লেভেল ডিক্লেরেশনে অনুমোদিত নয়। যদি দেওয়া থাকে, সেগুলো ওয়ার্নিং দিয়ে ইগনোর করা হয়।
- মডিফায়ার: default এবং synchronized টপ-লেভেল ডিক্লেরেশনে সারাক্ষণ অনুমোদিত নয়। যাইহোক, নেস্টেড কনটেক্সটে অনুমোদিত।
- abstract মডিফায়ার শুধু ক্লাসে অনুমোদিত।
- যখন ইউজার ইনপুট অসম্পূর্ণ থাকে (উদাহরণস্বরূপ, আমরা শুধু System.out টাইপ করি এবং println পার্ট বাদ দিই), JShell অটো-কমপ্লিশন API আরও ইউজার ইনপুটের জন্য প্রম্পট করে।
- যদি ইউজার ইনপুট সম্পূর্ণ হয়, কিন্তু সেমিকোলন নেই, JShell স্বয়ংক্রিয়ভাবে এটিকে অ্যাপেন্ড করতে পারে।
নিচের স্যাম্পল কোড স্নিপেটে, আমরা Employee ক্লাস তৈরি করেছি জরুরি গেটার মেথডসহ এবং new অপারেটর ব্যবহার করে ইন্সট্যানসিয়েট করেছি।
স্নিপেট
jshell> class Employee {
...> private String firstName;
...> private String lastName;
...> private String designation;
...> public Employee(String firstName, String lastName, String designation) {
...> this.firstName = firstName;
...> this.lastName = lastName;
...> this.designation = designation;
...> }
...> public String getFirstName() {
...> return firstName;
...> }
...> public String getLastName() {
...> return lastName;
...> }
...> public String getDesignation() {
...> return designation;
...> }
...> public String toString() {
...> return "Name = " + firstName + ", " + lastName + " | " +
...> "designation = " + designation;
...> }
...> }
| created class Employee
jshell> Employee emp = new Employee("Sai", "Adithya", "Content Developer");
emp ==> Name = Sai, Adithya | designation = Content Developer