Spuštění programu z příkazové řádky

Tomáš Pitner, Radek Ošlejšek

Základní životní cyklus javového programu

  • V Javě sice existuje interaktivní (tzv. REPL read-eval-print-loop) prostředí,

  • většinou však kód napíšeme do souboru, uložíme, přeložíme a spustíme.

  • Zdrojový kód každé veřejné (public) třídy je umístěn v jednom souboru

    • např. třída Hello je v Hello.java

Postup:

  • vytvoření zdrojového textu (libovolným editorem)

  • překlad (nástrojem javac)

  • spuštění (nástrojem java)

  • (anebo totéž jednodušeji zelenou šipkou v některém z IDE, třeba v IntelliJ IDEA)

Nástroje ve vývojové distribuci

javac

překladač, tj. Hello.javaHello.class

java

(nebo jexec) spouštěč přeloženého bytecode

javadoc

generátor dokumentace

jar

správce archivů JAR (sbalení, rozbalení, výpis)

Pod Windows to jsou .exe soubory java, javac…​ umístěné v podadresáři bin instalace Javy.

Překlad "Ahoj!"

  • Máme nainstalován Java SDK 8 (jen příklad, funguje i s dalšími verzemi)

  • Jsme v adresáři c:\devel\pb162, v něm je soubor Hello.java

  • Spustíme překlad — javac Hello.java — název souboru je včetně přípony .java

  • Je-li program správně napsán, přeloží se "mlčky"

  • Vytvoří se soubor Hello.class

Hello.java
public class Hello {
  public static void main(String[] args) {
    System.out.println("Ahoj!");
  }
}

Spuštění "Ahoj!"

  • Spustíme program Hello příkazem java Hello, název třídy je bez přípony .class

  • V nejnovějších verzích Javy lze spustit rovnou včetně překladu: java Hello.java, pak se přeloží s hned spustí, viz dále.

  • Je-li program správně napsán a přeložen, vypíše se Ahoj!

Překlad & Spuštění

Překlad překladačem javac (úspěšný, bez hlášení překladače):

compile-nopkg

Spuštění voláním java:

run-nopkg

Co když je tŕída v adresáří (balíku)

Když je tŕída v balíku, tj. na začátku souboru je:

package cz.muni.fi.pb162.hello;

Kompilace a spuštění pak vypadá následovně:

run-with-package

Pro maven projekty (všechny projekty na cvičení) je nutno být ve adresáři src/main/java.

Od Java 11: překlad a spuštění v jednom

  • Počínaje Java 11 lze na jednoduché(!) programy použít přímý postup:

  • java HelloWorld.java → program se přeloží a následně spustí

  • funguje dokonce i tehdy, nebude-li se třída s metodou main jmenovat HelloWorld

  • blíže také 330: Launch Single-File Source-Code Programs

Praktické informace (aneb co je nutné udělat)

  • Cesty ke spustitelným programům PATH musejí obsahovat i adresář <JAVA_HOME>/bin

    • Např. …​;C:\Program Files\Java\jdk9.0\bin

  • Systémové proměnné by měly obsahovat JAVA_HOME=<adresář Javy>

    • Např. JAVA_HOME=C:\Program Files\Java\jdk9.0

  • Možné je nastavit i proměnnou CLASSPATH=<cesty ke třídám>

    • Např. CLASSPATH=c:\devel\pb162

Spuštění sbaleného programu

  • Java má formát JAR (Java ARchive) pro distribuci programů složených z mnoha tříd.

  • Je podobný ZIP s pomocnými soubory navíc.

  • V archívu se deklaruje, která třída (=její metoda main) se spouští.

  • Lze pak spouštět jakoby celý archív: java -jar myapp.jar