Java 9 - Meneroka REPL

1. Pengenalan

Artikel ini adalah mengenai jshell , konsol REPL (Read-Evaluate-Print-Loop) interaktif yang digabungkan dengan JDK untuk rilis Java 9 yang akan datang. Bagi mereka yang tidak biasa dengan konsep tersebut, REPL memungkinkan untuk menjalankan potongan kod sewenang-wenangnya secara interaktif dan menilai hasilnya.

REPL boleh berguna untuk perkara-perkara seperti cepat memeriksa daya maju idea atau mencari contohnya rentetan yang diformat untuk String atau SimpleDateFormat .

2. Berlari

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

$JAVA_HOME/bin/jshell

Sekiranya pesanan yang lebih terperinci dari cengkerang diinginkan, bendera -v dapat digunakan:

$JAVA_HOME/bin/jshell -v

Setelah siap, kita akan disambut dengan pesanan mesra dan permintaan gaya Unix yang biasa di bahagian bawah.

3. Kaedah Menentukan dan Memohon

Kaedah boleh ditambah dengan menaip tandatangan dan isi badan mereka:

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

Di sini kami menentukan kaedah "hello world" di mana-mana. Ia boleh dipanggil menggunakan sintaks Java biasa:

jshell> helloWorld() Hello world

4. Pemboleh ubah

Pemboleh ubah dapat ditentukan dengan sintaks deklarasi Java biasa:

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 bahawa titik koma adalah pilihan. Pemboleh ubah juga dapat dinyatakan tanpa inisialisasi:

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

5. Ungkapan

Sebarang ungkapan Java yang sah diterima dan hasil penilaian akan ditunjukkan. Sekiranya tidak ada penerima hasil yang jelas, pemboleh ubah "calar" akan dibuat:

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

REPL sangat berguna di sini dengan memberitahu kami bahawa ia mencipta pemboleh ubah calar bernama $ 6 yang nilainya adalah "100 botol bir di dinding" dan jenisnya adalah String .

Ungkapan berbilang baris juga boleh dilakukan. Jshell cukup pintar untuk mengetahui bila ungkapan tidak lengkap dan akan mendorong pengguna untuk meneruskan baris baru:

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

Perhatikan bagaimana arahan berubah menjadi lekukan …> untuk menandakan kelanjutan ekspresi.

6. Perintah

Jshell memberikan beberapa meta-perintah yang tidak berkaitan dengan penilaian pernyataan Java. Semuanya bermula dengan garis miring ke depan (/) untuk dibezakan dari operasi biasa. Sebagai contoh, kita boleh meminta senarai semua arahan yang tersedia dengan mengeluarkan / membantu atau / ?.

Mari kita lihat beberapa daripadanya.

6.1. Import

Untuk menyenaraikan semua import yang aktif pada sesi semasa, 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 kita lihat, shell bermula dengan beberapa import berguna yang sudah ditambah.

6.2. Senarai

Bekerja dalam REPL tidak semudah memiliki IDE yang lengkap di hujung jari kita: mudah untuk melupakan pemboleh ubah yang mempunyai nilai, kaedah apa yang telah ditentukan dan sebagainya. Untuk memeriksa keadaan shell kita boleh menggunakan / var , / method , / 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 

Perbezaan antara / senarai dan / sejarah adalah bahawa yang terakhir menunjukkan perintah selain ungkapan.

6.3. Menyimpan

Untuk menyimpan sejarah ekspresi, perintah / simpan boleh digunakan:

jshell> /save repl.java 

Ini menyimpan sejarah ekspresi kita ke dalam repl.java dalam direktori yang sama dari mana kita menjalankan perintah jshell .

6.4. Memuatkan

Untuk memuatkan fail yang disimpan sebelumnya, kita dapat menggunakan perintah / buka :

jshell> /open repl.java 

Sesi yang dimuat kemudian dapat disahkan dengan mengeluarkan / var , / method atau / list .

6.5. Keluar

Apabila kita selesai dengan kerja, perintah / exit dapat menghentikan shell:

jshell> /exit | Goodbye

Selamat tinggal jshell .

7. Kesimpulannya

Dalam artikel ini, kami melihat Java 9 REPL. Memandangkan Java sudah ada selama lebih dari 20 tahun, mungkin ia tiba agak lewat. Namun, ia harus terbukti menjadi alat berharga lain di kotak alat Java kami.