Kompilace a spuštění

Při programování obvykle používáme sofistikované vývojové prostředí tzv. IDE. V případě našeho předmětu je to Netbeans. Netbeans IDE za nás dělá spoustu věcí o které se jako programátoři nemusíme starat. Měli bychom však vědět, co naše IDE dělá. Často se nám totiž stane, že IDE nědělá přesně to, co bychom čekali. Pochopíme-li co se děje v pozadí, budeme lépe připraveni nastalé problémy řešit.

JDK - Java Development Kit

Co jsme získali, když jsme si stáhli JDK? Java Development Kit je balíček pro vývoj v Javě. Umožnuje nám programy v jazyce JAVA nejen spouštět, ale i vytvářet.

Hodně zjednodušeně řečeno vám umožňuje váš kód přeložit do spustitelné podoby a následně i spustit.

O tom, jak Java funguje se můžete dočíst například na stránkách Oraclu

Podíváte-li se co obsahuje JDK, tak ve složce /bin naleznete programy java a javac. Kompilátor javac se používá pro překlad zdrojového kódu .java do tzv. bytecode - souboru s koncovkou .class. Program java pak spustí váš bytecode na JVM (Java Virtual Machine).

Zkuste si v příkazové řádce (v Ubuntu spustíte stiskem Ctrl+Alt+t v Ubuntu) jakou máte nainstalovanou verzi Javy příkazem:

java -version

Jak nainstalovat Javu na váš systém snadno naleznete na internetu. Na Windows vám může pomoci následující tutoriál.

Hello World

Zkusme si vytvořit jednoduchý program, přeložit(zkompilovat) ho a spustit v příkazovém řádku. V textovém editoru si vytvořme soubor HelloWorld.java.

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

ls
javac HelloWorld.java
ls
java HelloWorld

Další materiál v angličtině: Princeton tutorial

Příklad - Lab01

Zkusme si kompilaci a spuštění trochu složitějšího programu.

Demonstrujeme vám jak vypadá kompilace vaší první úlohy v PR1.

Struktura projektu je již složitější, máme dva zdrojové soubory v adresářové struktuře. K tomu ve složce lib knihovnu KarelJRobot.jar.

Nejdříve se dostaneme do projektového adresáře. A zobrazíme si jeho obsah.

cd ownCloud/pr1/pr1-lab01
tree

Vytvoříme si adresář pro zkompilované .class soubory (build/classes jako to dělá IDE Netbeans).

mkdir build
mkdir build/classes

Nyní zkompilujeme oba zdrojové soubory s použítím knihovny a nastavením výstupní složky.

javac  -classpath lib/KarelJRobot.jar -d build/classes src/cz/cvut/fel/Lab01Karel.java src/cz/cvut/fel/Lab01Task.java 
Můžete se podívat, že se nám vygenerovaly soubory.class do složky build/classes.

Nyní spustíme program Lab01Task, s tím, že definujeme, kde hledat ostatní soubory .class a knihovnu KarelJRobot.jar.

java -classpath build/classes:lib/KarelJRobot.jar cz.cvut.fel.Lab01Task

Můžete vidět, že kompilace a spuštění i poměrně jednoduchého programu v Javě v příkazové řádce vyžaduje již trochu úsilí. Proto máme nástroje, které nám s tímto pomohou.

Při práci s Netbeans si nyní dovedeme představit, co minimálně Netbeans potřebuje vědět pro správnou kompilaci a spuštění našeho programu. Zkuste si, že když změníte aktuální adresář o úroveň výše, nepodaří se Vám již načíst mapu simple.kwld (viz. výpis “Can't read world.”)!

cd ..
java -cp pr1-lab01/build/classes:pr1-lab01/lib/KarelJRobot.jar cz.cvut.fel.Lab01Task

Stejný problém nastane v Netbeans pokud máte Project Folder nastavenou na jiný adresář než je v tomto případě pr1-lab01

courses/b0b36pjv/tutorials/01/kompilace.txt · Last modified: 2018/02/06 08:43 (external edit)