Java 9 - Menjelajahi REPL

1. Perkenalan

Artikel ini tentang jshell , konsol REPL (Read-Evaluate-Print-Loop) interaktif yang digabungkan dengan JDK untuk rilis Java 9 mendatang. Bagi mereka yang tidak terbiasa dengan konsep tersebut, REPL memungkinkan untuk menjalankan cuplikan kode sewenang-wenang secara interaktif dan mengevaluasi hasilnya.

REPL dapat berguna untuk hal-hal seperti memeriksa kelayakan ide atau mencari tahu dengan cepat, misalnya string yang diformat untuk String atau SimpleDateFormat .

2. Lari

Untuk memulai kita perlu menjalankan REPL, yang dilakukan dengan memanggil:

$JAVA_HOME/bin/jshell

Jika ingin mengirim pesan yang lebih mendetail dari shell, flag -v dapat digunakan:

$JAVA_HOME/bin/jshell -v

Setelah siap, kita akan disambut oleh pesan bersahabat dan prompt gaya Unix yang familiar di bagian bawah.

3. Mendefinisikan dan Memanggil Metode

Metode dapat ditambahkan dengan mengetikkan tanda tangan dan tubuhnya:

jshell> void helloWorld() { System.out.println("Hello world");} | created method helloWorld()

Di sini kami mendefinisikan metode “hello world” yang ada di mana-mana. Itu dapat dipanggil menggunakan sintaks Java normal:

jshell> helloWorld() Hello world

4. Variabel

Variabel dapat didefinisikan dengan sintaks deklarasi Java normal:

jshell> int i = 0; i ==> 0 | created variable i : int jshell> String company = "Baeldung" company ==> "Baeldung" | created variable company : String jshell> Date date = new Date() date ==> Sun Feb 26 06:30:16 EST 2017 | created variable date : Date

Perhatikan bahwa titik koma bersifat opsional. Variabel juga dapat dideklarasikan tanpa inisialisasi:

jshell> File file file ==> null | created variable file : File

5. Ekspresi

Semua ekspresi Java yang valid diterima dan hasil evaluasi akan ditampilkan. Jika tidak ada penerima eksplisit dari hasil yang diberikan, variabel "awal" akan dibuat:

jshell> String.format("%d of bottles of beer", 100) $6 ==> "100 of bottles of beer" | created scratch variable $6 : String

REPL cukup membantu di sini dengan memberi tahu kita bahwa ia membuat variabel awal bernama $ 6 yang nilainya adalah "100 botol bir di dinding" dan tipenya adalah String .

Ekspresi multi-baris juga dimungkinkan. Jshell cukup pintar untuk mengetahui saat ekspresi tidak lengkap dan akan meminta pengguna untuk melanjutkan di baris baru:

jshell> int i = ...> 5; i ==> 5 | modified variable i : int | update overwrote variable i : int

Perhatikan bagaimana prompt berubah menjadi ...> untuk menandakan kelanjutan ekspresi.

6. Perintah

Jshell menyediakan beberapa meta-command yang tidak terkait dengan evaluasi pernyataan Java. Semuanya dimulai dengan garis miring (/) untuk dibedakan dari operasi normal. Misalnya, kita dapat meminta daftar semua perintah yang tersedia dengan mengeluarkan / help atau / ?.

Mari kita lihat beberapa di antaranya.

6.1. Impor

Untuk membuat daftar semua impor yang aktif di sesi saat ini, kita dapat menggunakan perintah / import :

jshell> /import | import java.io.* | import java.math.* | import java.net.* | import java.nio.file.* | import java.util.* | import java.util.concurrent.* | import java.util.function.* | import java.util.prefs.* | import java.util.regex.* | import java.util.stream.*

Seperti yang bisa kita lihat, shell dimulai dengan beberapa impor berguna yang sudah ditambahkan.

6.2. Daftar

Bekerja dalam REPL tidak semudah memiliki IDE berfitur lengkap di ujung jari kita: mudah untuk melupakan variabel apa yang memiliki nilai, metode apa yang telah didefinisikan, dan sebagainya. Untuk memeriksa status shell kita dapat menggunakan / var , / metode , / list atau / history:

jshell> /var | int i = 0 | String company = "Baeldung" | Date date = Sun Feb 26 06:30:16 EST 2017 | File file = null | String $6 = "100 of bottles of beer on the wall" jshell> /methods | void helloWorld() jshell> /list 1 : void helloWorld() { System.out.println("Hello world");} 2 : int i = 0; 3 : String company = "Baeldung"; 4 : Date date = new Date(); 5 : File file; 6 : String.format("%d of bottles of beer on the wall", 100) jshell> /history void helloWorld() { System.out.println("Hello world");} int i = 0; String company = "Baeldung" Date date = new Date() File file String.format("%d of bottles of beer on the wall", 100) /var /methods /list /history 

Perbedaan antara / list dan / history adalah bahwa yang terakhir menampilkan perintah selain ekspresi.

6.3. Penghematan

Untuk menyimpan riwayat ekspresi, perintah / simpan dapat digunakan:

jshell> /save repl.java 

Ini menyimpan riwayat ekspresi kami ke repl.java di direktori yang sama tempat kami menjalankan perintah jshell .

6.4. Memuat

Untuk memuat file yang disimpan sebelumnya, kita dapat menggunakan / open perintah:

jshell> /open repl.java 

Sesi yang dimuat kemudian dapat diverifikasi dengan menerbitkan / var , / method atau / list .

6.5. Keluar

Ketika kita selesai dengan pekerjaan itu, perintah / exit dapat menghentikan shell:

jshell> /exit | Goodbye

Selamat tinggal jshell .

7. Kesimpulan

Pada artikel ini, kami melihat Java 9 REPL. Karena Jawa sudah ada selama lebih dari 20 tahun, mungkin sudah agak terlambat. Namun, itu harus terbukti menjadi alat berharga lainnya di kotak alat Java kami.