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:
- A parancssor első eleme, amelyet a JVM beállításai követnek, egy fájlnév a .Jáva kiterjesztés
- 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.