JEP 330
Was bedeutet JEP 330?
Seit JAVA 11 gibt es den JEP 330 (https://openjdk.java.net/jeps/330). Damit ist es möglich, ein sogenanntes „Shebang“ File auszuführen.
So können jetzt Klassen gestartet werden, die noch nicht kompiliert wurden. Programme mit einer einzigen Datei sind heutzutage beim Schreiben kleiner Hilfsprogramme üblich und insbesondere die Domäne von Skriptsprachen. Nun kann man sich auch in Java die unnötige Arbeit sparen und das verringert zugleich die Einstiegshürde für Java-Neulinge.
Wie funktioniert das?
Hier ein Beispiel:
// Some comments here
import java.util.Arrays;
import java.util.stream.Stream;
public class SumNumbers {
public static void main(String[] args) {
System.out.println("We are looking for new employees! Join us :-) - see: https://hilarion5.com/karriere");
Stream<String> stream = Arrays.stream(args);
int sum = stream.mapToInt(Integer::parseInt).sum();
System.out.println("Total sum : "+sum);
}
}
Du kann die Klasse SumNumbers folgendermaßen ausführen:
Auf Linux und macOS kannst du noch einen Schritt weiter gehen und direkt ein ausführbares Java-Skript schreiben. Dazu musst du in der ersten Zeile ein sogenanntes „Shebang“ und die Java-Version eintragen:
#!/path/to/java --source 11
import java.util.Arrays;
import java.util.stream.Stream;
public class SumNumbers
{
public static void main(String[] args)
{
System.out.println("We are looking for new employees! Join us :-) - see: https://hilarion5.com/karriere);
Stream<String> stream = Arrays.stream(args);
int sum = stream.mapToInt(Integer::parseInt).sum();
System.out.println("Total sum : "+sum);
}
}
Die neue Datei darf keine .java-Endung haben. Am Besten einfach ein neues File mit .sh Endung erzeugen (geht aber auch ohne Endung).
Danach noch die Rechte umstellen und das Script ausführen: