Java 11 egyetlen fájl forráskódja

1. Bemutatkozás

A JDK 11, amely a Java SE 11 implementációja, 2018 szeptemberében jelent meg.

Ebben az oktatóanyagban az egyfájlú forráskódú programok indításának új Java 11 szolgáltatásával foglalkozunk.

2. Java előtt 11

Az egyfájlos program az, ahol a program egyetlen forrásfájlba illeszkedik.

A Java 11 előtt még egyfájlos program esetében is kétlépcsős folyamatot kellett követnünk a program futtatásához.

Például, ha egy fájl neve HelloWorld.java nevű osztályt tartalmaz Helló Világ val,-vel fő() módszer, először össze kellene állítanunk:

$ javac HelloWorld.java

Ez egy osztályfájlt generálna a következő paranccsal kellene futtatnunk:

$ java HelloWorld Hello Java 11!

Az ilyen programok a Java elsajátításának korai szakaszában vagy kis segédprogramok írásakor szokásosak. Ebben az összefüggésben kissé szertartásos, hogy a program futtatása előtt össze kell állítanunk a programot.

De nem lenne jó, ha csak egy lépésből állna egy folyamat? A Java 11 megpróbálja ezt megoldani, lehetővé téve számunkra az ilyen programok futtatását közvetlenül a forrásból.

3. Egyfájlú forráskódú programok indítása

A Java 11-től kezdve a következő paranccsal tudjuk végrehajtani az egyfájlos programot:

$ java HelloWorld.java Hello Hello 11!

Figyelje meg, hogyan adtuk át a Java forráskód fájlnevét és nem a Java osztályt a Jáva parancs.

A JVM lefordítja a forrásfájlt a memóriába, majd futtatja az első nyilvánosságot fő() módszert talál.

Fordítási hibákat fogunk kapni, ha a forrásfájl hibákat tartalmaz, de máskülönben úgy fog futni, mintha már lefordítottuk volna.

4. Parancssori opciók

A Java hordozórakéta bemutatott egy újat forrás-fájl mód hogy támogassa ezt a funkciót. A forrásfájl mód engedélyezve van, ha a következő két feltétel egyike teljesül:

  1. A parancssor első eleme, amelyet a JVM beállításai követnek, egy fájlnév a .Jáva kiterjesztés
  2. A parancssor tartalmazza a -forrás verzió opciót

Ha a fájl nem felel meg a Java forrásfájlok szokásos elnevezési szokásainak, akkor a -forrás választási lehetőség. Az ilyen fájlokról a következő szakaszban többet fogunk beszélni.

Bármely argumentum a név után Az eredeti parancssor forrásfájljának átadását a lefordításkor átadják a lefordított osztálynak.

Például van egy fájlunk Addition.java amely tartalmaz egy Kiegészítés osztály. Ez az osztály tartalmazza a fő() az érvek összegét kiszámító módszer:

$ java Addition.java 1 2 3

Továbbá átadhatjuk a kedveléseket –Osztály-út a fájl neve előtt:

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

Most, hibát kapunk, ha van egy osztály az alkalmazás classpath-ján, ugyanazzal a névvel, mint az általunk végrehajtott osztály.

Például tegyük fel, hogy a fejlesztés során egy bizonyos ponton összeállítottuk az aktuális munkakönyvtárunkban található fájlt javac:

$ javac HelloWorld.java

Most mindkettőnk megvan HelloWorld.java és HelloWorld.class jelen van a jelenlegi munkakönyvtárban:

$ ls HelloWorld.class HelloWorld.java

De ha megpróbáljuk használni a forrás-fájl módot, akkor hibaüzenetet kapunk:

$ java HelloWorld.java hiba: osztály található az alkalmazás osztály elérési útján: HelloWorld

5. Shebang fájlok

A Unix-ból származó rendszerekben, például a macOS-ban és a Linuxban, gyakran használják a „#!” parancs futtatható parancsfájl futtatásához.

Például egy shell parancsfájl általában a következővel kezdődik:

#! / bin / sh

Ezután végre tudjuk hajtani a szkriptet:

$ ./some_script

Az ilyen fájlokat „shebang fájloknak” nevezzük.

Most ugyanazon mechanizmus segítségével futtathatjuk a Java egyfájlos programokat.

Ha a következőt adjuk hozzá egy fájl elejéhez:

#! / path / to / java - forrás verzió

Vegyük fel például a következő kódot egy fájlba hozzá:

#! / usr / local / bin / java - 11. forrás a java.util.Arrays importálása; public class Összeadás {public static void main (String [] args) {Egész szám = tömbök.stream (args) .mTapToInt (Integer :: parseInt) .sum (); System.out.println (összeg); }}

És jelölje meg a fájlt futtathatóként:

$ chmod + x add

Ezután úgy tudjuk végrehajtani a fájlt, mint egy szkript:

$ ./add 1 2 3 6

Az indítót kifejezetten használhatjuk a shebang fájl meghívására is:

$ java - 11. forrás hozzáadja 1 2 3 6

A -forrás opcióra akkor is szükség van, ha már szerepel a fájlban. A fájlban található shebangot figyelmen kívül hagyják, és normál java fájlként kezelik a .Jáva kiterjesztés.

azonban, nem kezelhetjük a .Jáva fájl, mint akkor is, ha érvényes shebangot tartalmaz. Így az alábbiak hibát eredményeznek:

$ ./Addition.java ./Addition.java:1: hiba: illegális karakter: '#' #! / Usr / local / bin / java - 11. forrás ^

A shebang fájlokkal kapcsolatban még egy utolsó dolog, amit meg kell jegyezni, hogy az irányelv a fájltól platformfüggővé teszi. A fájl nem lesz használható olyan platformokon, mint a Windows, amely natív módon nem támogatja.

6. Következtetés

Ebben a cikkben láttuk az új egyetlen fájl forráskód funkciót, amelyet a Java 11 vezetett be.

Szokás szerint a kódrészletek megtalálhatók a GitHubon.


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