Java 11 Izvorni kod za jednu datoteku

1. Uvod

JDK 11, koji je implementacija Jave SE 11, objavljen u rujnu 2018.

U ovom ćemo uputstvu pokriti novu značajku Java 11 pokretanja programa s izvornim kodom u jednoj datoteci.

2. Prije Jave 11

Program s jednom datotekom je onaj u kojem se program uklapa u jednu izvornu datoteku.

Prije Java 11, čak i za program s jednom datotekom, morali smo slijediti postupak u dva koraka da bismo pokrenuli program.

Na primjer, ako se datoteka zove HelloWorld.java sadrži klasu tzv Pozdrav svijete s glavni() metoda, prvo bismo ga morali sastaviti:

$ javac HelloWorld.java

To bi generiralo datoteku klase koja morali bismo pokrenuti pomoću naredbe:

$ java HelloWorld Zdravo Java 11!

Takvi su programi standardni u ranim fazama učenja Jave ili pri pisanju malih uslužnih programa. U tom kontekstu, pomalo je ceremonijalno morati sastaviti program prije nego što ga pokrenete.

Ali, ne bi li bilo sjajno imati samo postupak u jednom koraku? Java 11 pokušava to riješiti dopuštajući nam pokretanje takvih programa izravno iz izvora.

3. Pokretanje programa izvornih kodova u jednoj datoteci

Počevši od Jave 11, za izvršavanje programa s jednom datotekom možemo koristiti sljedeću naredbu:

$ java HelloWorld.java Pozdrav Java 11!

Primijetite kako smo naziv datoteke izvornog koda proslijedili a ne Java klasu Java naredba.

JVM kompajlira izvornu datoteku u memoriju i zatim pokreće prvu javnu glavni() metoda koju pronalazi.

Dobit ćemo pogreške pri kompilaciji ako izvorna datoteka sadrži pogreške, ali u suprotnom, pokrenut će se baš kao da smo je već kompilirali.

4. Opcije naredbenog retka

Pokretač Java predstavio je novi način izvorne datoteke za podršku ove značajke. Način izvorne datoteke omogućen je ako je ispunjen jedan od sljedeća dva uvjeta:

  1. Prva stavka u naredbenom retku nakon koje slijede JVM opcije naziv je datoteke s .Java produženje
  2. Naredbeni redak sadrži -izvor opcija verzije

Ako datoteka ne slijedi standardne konvencije o imenovanju izvornih datoteka Java, trebamo koristiti -izvor opcija. O takvim datotekama razgovarat ćemo više u sljedećem odjeljku.

Svi argumenti stavljeni iza imena izvorne datoteke u izvornom naredbenom retku prosljeđuju se kompajliranoj klasi kada se izvršava.

Na primjer, imamo datoteku koja se zove Dodatak.java koji sadrži Dodatak razred. Ova klasa sadrži glavni() metoda koja izračunava zbroj svojih argumenata:

$ java Addition.java 1 2 3

Također, možemo proslijediti opcije like –Razred-put prije naziva datoteke:

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

Sada, dobit ćemo pogrešku ako na stazi aplikacije postoji klasa s istim imenom kao i klasa koju izvršavamo.

Na primjer, recimo da smo u nekom trenutku tijekom razvoja sastavili datoteku prisutnu u našem trenutnom radnom direktoriju koristeći javac:

$ javac HelloWorld.java

Sad imamo oboje HelloWorld.java i HelloWorld.class prisutan u trenutnom radnom direktoriju:

$ ls HelloWorld.class HelloWorld.java

Ali, ako pokušamo koristiti način izvorne datoteke, dobit ćemo pogrešku:

$ java Pogreška HelloWorld.java: klasa pronađena na putu klase aplikacije: HelloWorld

5. Shebangovi spisi

U sustavima izvedenim iz Unixa, poput macOS-a i Linuxa, uobičajeno je koristiti "#!" direktiva za pokretanje izvršne datoteke skripte.

Na primjer, skripta ljuske obično započinje sa:

#! / bin / sh

Tada možemo izvršiti skriptu:

$ ./some_script

Takve se datoteke nazivaju "shebang datoteke".

Sada možemo izvršavati Java programe s jednom datotekom koristeći isti mehanizam.

Ako na početak datoteke dodamo sljedeće:

#! / path / to / java - verzija izvora

Na primjer, dodajmo sljedeći kod u datoteku s imenom dodati:

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

I označite datoteku kao izvršnu:

$ chmod + x dodaj

Zatim datoteku možemo izvršiti baš kao skriptu:

$ ./dodaj 1 2 3 6

Također možemo izričito koristiti pokretač za pozivanje shebang datoteke:

$ java - izvor 11 dodajte 1 2 3 6

The -izvor opcija je potrebna čak i ako je već prisutna u datoteci. Shebang u datoteci se zanemaruje i tretira se kao normalna java datoteka bez .Java produženje.

Međutim, ne možemo liječiti a .Java datoteku kao shebang datoteku, čak i ako sadrži važeći shebang. Stoga će sljedeće rezultirati pogreškom:

$ ./Addition.java ./Addition.java:1: pogreška: nedopušten znak: '#' #! / Usr / local / bin / java --source 11 ^

Zadnja stvar koju treba napomenuti kod shebang datoteka jest da direktiva datoteku ovisi o platformi. Datoteka se neće moći koristiti na platformama poput Windows-a koji je izvorno ne podržava.

6. Zaključak

U ovom smo članku vidjeli novu značajku izvornog koda za jednu datoteku uvedenu u Javi 11.

Kao i obično, isječke koda možete pronaći na GitHubu.


$config[zx-auto] not found$config[zx-overlay] not found