Zdrojový kód jediného súboru Java 11

1. Úvod

JDK 11, čo je implementácia Java SE 11, uvedená na trh v septembri 2018.

V tomto výučbe sa budeme venovať novej funkcii Java 11 spúšťania programov s jedným súborom zdrojového kódu.

2. Pred programom Java 11

Program s jedným súborom je program, do ktorého sa zmestí do jedného zdrojového súboru.

Pred programom Java 11, dokonca aj pre program s jedným súborom, sme museli program spustiť v dvoch krokoch.

Napríklad ak sa volá súbor HelloWorld.java obsahuje triedu s názvom HelloWorld s hlavný() metóda, museli by sme to najskôr skompilovať:

$ javac HelloWorld.java

Takto by sa vygeneroval súbor triedy, ktorý by sme museli bežať pomocou príkazu:

$ java HelloWorld Dobrý deň, Java 11!

Takéto programy sú štandardom v počiatočných fázach učenia sa jazyka Java alebo pri písaní malých pomocných programov. V tejto súvislosti je trochu slávnostné, že je potrebné zostaviť program pred jeho spustením.

Ale nebolo by skvelé mať namiesto toho iba jednostupňový proces? Java 11 sa to snaží vyriešiť tým, že nám umožňuje spúšťať takéto programy priamo zo zdroja.

3. Spustenie programov jedného zdrojového kódu

Počnúc programom Java 11 môžeme na vykonanie programu s jedným súborom použiť nasledujúci príkaz:

$ java HelloWorld.java Dobrý deň, Java 11!

Všimnite si, ako sme odovzdali názov súboru zdrojového kódu Java, a nie triedu Java, do java príkaz.

JVM kompiluje zdrojový súbor do pamäte a potom spustí prvú verejnú hlavný() metóda, ktorú nájde.

Ak zdrojový súbor obsahuje chyby, dostaneme chyby, ale inak bude bežať, akoby sme ho už kompilovali.

4. Možnosti príkazového riadku

Spúšťač Java predstavil nový režim zdrojových súborov na podporu tejto funkcie. Režim zdrojového súboru je povolený, ak je splnená jedna z nasledujúcich dvoch podmienok:

  1. Prvá položka v príkazovom riadku, za ktorou nasledujú možnosti JVM, je názov súboru s .java predĺženie
  2. Príkazový riadok obsahuje –Zdroj možnosť verzie

Ak súbor nedodržiava štandardné konvencie pomenovania zdrojových súborov Java, musíme použiť znak –Zdroj možnosť. O týchto súboroch si povieme viac v nasledujúcej časti.

Akékoľvek argumenty umiestnené za menom zdrojového súboru v pôvodnom príkazovom riadku sa po vykonaní odovzdajú kompilovanej triede.

Napríklad máme súbor s názvom Addition.java ktorý obsahuje Dodatok trieda. Táto trieda obsahuje a hlavný() metóda, ktorá počíta súčet jej argumentov:

$ java Addition.java 1 2 3

Tiež môžeme odovzdať možnosti Páči sa mi –Class-path pred názvom súboru:

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

Teraz, Dostaneme chybu, ak sa v triede aplikácií nachádza trieda s rovnakým názvom ako trieda, ktorú vykonávame.

Napríklad, povedzme, že v určitom okamihu vývoja sme súbor prítomný v našom aktuálnom pracovnom adresári skompilovali pomocou príkazu javac:

$ javac HelloWorld.java

Teraz máme oboje HelloWorld.java a HelloWorld.class prítomné v aktuálnom pracovnom adresári:

$ ls HelloWorld.class HelloWorld.java

Ak sa však pokúsime použiť režim zdrojového súboru, zobrazí sa chyba:

$ java HelloWorld.java chyba: na ceste triedy aplikácie bola nájdená trieda: HelloWorld

5. Súbory Shebang

V systémoch odvodených od Unixu, ako sú macOS a Linux, je bežné používať znak „#!“ smernica na spustenie spustiteľného súboru skriptu.

Napríklad shell skript zvyčajne začína:

#! / bin / sh

Potom môžeme spustiť skript:

$ ./some_script

Takéto súbory sa nazývajú „súbory shebang“.

Teraz môžeme spúšťať jednosúborové programy Java pomocou rovnakého mechanizmu.

Ak na začiatok súboru pridáme toto:

#! / cesta / do / java - zdrojová verzia

Napríklad pridajme nasledujúci kód do súboru s názvom pridať:

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

A označte súbor ako spustiteľný:

$ chmod + x pridať

Potom môžeme súbor spustiť rovnako ako skript:

$ ./add 1 2 3 6

Spúšťač môžeme tiež explicitne použiť na vyvolanie súboru shebang:

$ java - zdroj 11 pridať 1 2 3 6

The –Zdroj táto možnosť je vyžadovaná, aj keď už v súbore je. Shebang v súbore je ignorovaný a zaobchádza sa s ním ako s bežným súborom java bez .java predĺženie.

Avšak, nemôžeme liečiť a .java súbor ako súbor shebang, aj keď obsahuje platný súbor shebang. Takto bude mať za následok chybu:

$ ./Addition.java ./Addition.java:1: chyba: nelegálny znak: '#' #! / Usr / local / bin / java - zdroj 11 ^

Posledná vec, ktorú si treba uvedomiť v súvislosti so súbormi shebang, je skutočnosť, že podľa tejto smernice je súbor závislý od platformy. Súbor nebude použiteľný na platformách ako Windows, ktoré ho natívne nepodporujú.

6. Záver

V tomto článku sme videli novú funkciu zdrojového kódu jedného súboru uvedenú v prostredí Java 11.

Útržky kódu ako obvykle nájdete na GitHub.


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