Kod Sumber Fail Java 11 Single

1. Pengenalan

JDK 11, yang merupakan implementasi Java SE 11, dirilis pada bulan September 2018.

Dalam tutorial ini, kita akan membahas ciri Java 11 baru untuk melancarkan program kod sumber satu fail.

2. Sebelum Jawa 11

Program satu fail adalah program di mana program sesuai dengan satu fail sumber.

Sebelum Java 11, bahkan untuk program satu file, kami harus mengikuti proses dua langkah untuk menjalankan program tersebut.

Sebagai contoh, jika fail bernama HelloWorld.java mengandungi kelas yang dipanggil HelloWorld dengan kaedah utama () , kita harus menyusunnya terlebih dahulu:

$ javac HelloWorld.java

Ini akan menghasilkan fail kelas yang harus kita jalankan menggunakan perintah:

$ java HelloWorld Hello Java 11!

Program seperti itu adalah standard pada tahap awal pembelajaran Java atau ketika menulis program utiliti kecil. Dalam konteks ini, adalah sedikit upacara untuk menyusun program sebelum menjalankannya.

Tetapi, bukankah lebih baik hanya menjalani proses satu langkah? Java 11 cuba mengatasi hal ini, dengan membiarkan kita menjalankan program seperti itu terus dari sumbernya.

3. Melancarkan Program-Sumber Kod Satu Fail

Bermula di Java 11, kita dapat menggunakan perintah berikut untuk menjalankan program satu file:

$ java HelloWorld.java Hello Java 11!

Perhatikan bagaimana kita meneruskan nama file kode sumber Java dan bukan kelas Java ke perintah java .

JVM menyusun fail sumber ke dalam memori dan kemudian menjalankan kaedah utama () awam pertama yang dijumpainya.

Kami akan mendapat ralat kompilasi jika fail sumber mengandungi ralat, tetapi sebaliknya, ia akan berjalan sama seperti jika kita sudah menyusunnya.

4. Pilihan Baris Perintah

Pelancar Java memperkenalkan mod sumber fail baru untuk menyokong ciri ini. Mod fail sumber diaktifkan jika salah satu daripada dua syarat berikut berlaku:

  1. Item pertama pada baris perintah diikuti oleh pilihan JVM adalah nama fail dengan pelanjutan .java
  2. Baris arahan mengandungi pilihan –source versi

Sekiranya fail tidak mengikuti konvensi penamaan standard untuk fail sumber Java, kita perlu menggunakan pilihan –source . Kami akan membincangkan lebih lanjut mengenai fail tersebut di bahagian seterusnya.

Segala argumen yang diletakkan setelah nama fail sumber di baris perintah asal diserahkan ke kelas yang dikompilasi ketika dijalankan.

Sebagai contoh, kami mempunyai fail bernama Addition.java yang mengandungi kelas Addition . Kelas ini mengandungi kaedah utama () yang mengira jumlah argumennya:

$ java Addition.java 1 2 3

Selain itu, kita boleh melepasi pilihan seperti –class-path sebelum nama fail:

$ java --class-path=/some-path Addition.java 1 2 3

Sekarang, kita akan mendapat ralat jika ada kelas di classpath aplikasi dengan nama yang sama dengan kelas yang kita laksanakan .

Sebagai contoh, katakan pada suatu ketika semasa pembangunan, kami menyusun fail yang ada di direktori kerja kami sekarang menggunakan javac :

$ javac HelloWorld.java

Kami sekarang mempunyai kedua HelloWorld.java dan HelloWorld.class dalam direktori kerja semasa:

$ ls HelloWorld.class HelloWorld.java

Tetapi, jika kita cuba menggunakan mod sumber-sumber, kita akan mendapat ralat:

$ java HelloWorld.java error: class found on application class path: HelloWorld

5. Fail Shebang

Sudah biasa dalam sistem yang berasal dari Unix, seperti macOS dan Linux untuk menggunakan "#!" arahan untuk menjalankan fail skrip yang boleh dilaksanakan.

Sebagai contoh, skrip shell biasanya bermula dengan:

#!/bin/sh

Kita kemudian dapat melaksanakan skrip:

$ ./some_script

Fail seperti itu disebut "shebang files".

Kita sekarang dapat menjalankan program satu file Java menggunakan mekanisme yang sama.

Sekiranya kita menambahkan perkara berikut pada permulaan fail:

#!/path/to/java --source version

Sebagai contoh, mari kita tambahkan kod berikut dalam fail bernama add :

#!/usr/local/bin/java --source 11 import java.util.Arrays; public class Addition { public static void main(String[] args) { Integer sum = Arrays.stream(args) .mapToInt(Integer::parseInt) .sum(); System.out.println(sum); } }

Dan tandakan fail sebagai boleh dilaksanakan:

$ chmod +x add

Kemudian, kita dapat melaksanakan fail seperti skrip:

$ ./add 1 2 3 6

Kami juga boleh menggunakan pelancar secara terang-terangan untuk memanggil fail shebang:

$ java --source 11 add 1 2 3 6

Pilihan –sumber diperlukan walaupun ia sudah ada di dalam fail. Shebang dalam fail tidak diendahkan dan diperlakukan sebagai fail java biasa tanpa perluasan .java .

Namun , kami tidak dapat memperlakukan file .java sebagai file shebang, walaupun file tersebut mengandungi shebang yang sah. Oleh itu, perkara berikut akan menyebabkan kesilapan:

$ ./Addition.java ./Addition.java:1: error: illegal character: '#' #!/usr/local/bin/java --source 11 ^

Satu perkara terakhir yang perlu diperhatikan mengenai fail shebang adalah arahan itu bergantung pada platform fail. Fail tidak akan dapat digunakan pada platform seperti Windows, yang tidak menyokongnya secara asli.

6. Kesimpulannya

Dalam artikel ini, kami melihat ciri kod sumber fail tunggal yang baru diperkenalkan di Java 11.

Seperti biasa, coretan kod boleh didapati di GitHub.