Lekce 2 - Java kompilace a build v příkazovém řádku - GUI, balíček
V předchozí lekci, Java kompilace a build v příkazovém řádku - Základy, jsme si předvedli kompilaci a spuštění zkompilovaných programů.
Dnes si tyto základních znalosti rozšíříme. V první části si předvedeme primitivní GUI aplikaci, v druhé části provedeme vytvoření aplikace, která obsahuje spouštěcí třídu v balíčku (package).
Počítám, že máte nastavené PATH do adresáře v Javě, kde se nacházejí příslušné programy (java, javac, apod.. ).
Vytvoření GUI aplikace
Co bude obsahem GUI aplikace? Nic výjimečného, vytvoříme si okno, nastavíme mu nějaké parametry (polohu a velikost), vložíme do něj tlačítko a nastavíme mu událost. Událost bude pouze zobrazovat MessageBox.
Takže opět spustíme příkazový řádek a provedeme analogický postup
jako v předchozím díle. Za pomocí příkazu md ProgramGUI
vytvoříme adresář ProgramGUI
. Po provedení se do něj
přesuneme přes příkaz cd ProgramGUI
. V adresáři poté
vytvoříme zdrojový soubor přes příkaz
fsutil file createnew ProgramGUI.java 0
. Dále provedeme úpravu
zdrojového souboru přes příkaz notepad ProgramGUI.java
,
vložíme kód níže, soubor uložíme a notepad ukončíme.
D:\ └── ProgramGUI └── ProgramGUI.java
Swing
Pro starší Swing framework by zdrojový kód vypadal takto:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ProgramGUI { public static void main(String[] args) { JFrame okno = new JFrame("Nase okno"); okno.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent arg0) { System.exit(1); } }); okno.setSize(600,400); okno.setLocation(500,300); okno.getContentPane().setBackground(Color.cyan); okno.setLayout(null); JButton tlacitko = new JButton("Stiskni me"); tlacitko.setBounds(200, 80, 200, 200); tlacitko.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { JOptionPane.showMessageDialog(okno,"Dobry den"); } }); okno.add(tlacitko); okno.setVisible(true); } }
JavaFX
Pokud chceme vyzkoušet JavaFX, tak zde je podobný program napsaný v JavaFX bez MVC (FXML).
Tento zdrojový kód bude fungovat pouze u Java10, 09, 08. U Java11 a vyšších je JavaFX odebrána z JDK a je nutné používat externí knihovny (framework)
import javafx.application.*; import javafx.event.*; import javafx.geometry.Pos; import javafx.scene.*; import javafx.scene.control.*; import javafx.scene.control.Alert.AlertType; import javafx.scene.layout.*; import javafx.stage.Stage; public class ProgramGUI extends Application { private Scene scene; public static void main(String[] args) { Application.launch(args); } public void start(Stage stage) throws Exception { Button tlac = new Button("Stiskni mě"); tlac.setPrefSize(200,100); tlac.setOnAction(new EventHandler<ActionEvent>() { public void handle(ActionEvent ae) { Alert alert = new Alert(AlertType.INFORMATION); alert.setTitle("Pozor"); alert.setContentText("Dobry den"); alert.show(); } }); FlowPane flowpane = new FlowPane(10,10); flowpane.setAlignment(Pos.CENTER); flowpane.setStyle("-fx-background-color: rgb(193, 122, 68)"); flowpane.getChildren().add(tlac); scene = new Scene(flowpane, 500, 250); stage.setScene(scene); stage.setTitle("Nase Okno"); stage.show(); } }
Jako další krok provedeme opět kompilaci zdrojového kódu do bytekódu.
Toho opět docílíme přes příkazový řádek příkazem
javac ProgramGUI.java
. Kompilací vznikne soubor
ProgramGUI.class
a protože v kódu máme nějaké události,
které řešíme přes anonymní třídy, vzniknou nám tam ještě další
třídy ProgramGUI$1.class
, ProgramGUI$2.class
jenž
obsluhují dané události.
D:\ └── ProgramGUI ├── ProgramGUI$2.class ├── ProgramGUI$1.class ├── ProgramGUI.class └── ProgramGUI.java
Nyní nám zbývá jen daný zdrojový kód spustit. Toho docílíme
příkazem java ProgramGUI
. Jak vidíte, vše funguje.
Jar
Nyní nás čeká tvorba jar souboru. Jako první krok si vytvoříme soubor
manifestu. Ten stvoříme přes příkaz
fsutil file createnew manifest.man 0
. Dále provedeme úpravu
daného manifestu přes příkaz notepad manifest.man
, vložíme
kód níže, soubor uložíme a notepad ukončíme.
Manifest-Version: 1.0 Main-Class: ProgramGUI Created-By: 1.8.0_144 (Oracle Corporation)
Nyní provedeme build neboli vytvoříme *.jar soubor. Provedeme příkaz
jar cmf manifest.man Program.jar *.class
. Jak vidíte, vytvořili
jsme Program.jar
. Nyní si daný program spustíme. Protože to je
GUI aplikace, lze ji spustit double-clikem. Program.jar
tedy
přesuňte na plochu (Desktop) a dvakrát klikněte. Vše by mělo fungovat.
D:\ └── ProgramGUI ├── manifest.man ├── Program.jar ├── ProgramGUI$2.class ├── ProgramGUI$1.class ├── ProgramGUI.class └── ProgramGUI.java
Samozřejmě spuštění lze provést i přes příkazový
řádek. Jde to buď jako java -jar Program.jar
nebo jako
java -cp Program.jar ProgramGUI
.

Vytvoření aplikace s balíčkem (package)
Bude se jednat prakticky o samospustitelný (runnable) jar jako v předchozím článku (díle), ovšem příklad bude mít spouštěcí třídu v balíčku (package). Čím větší programy budete dělat, tím dříve zjistíte, že systém balíčků je nevyhnutelný a pomáhá vám v přehlednosti projektu. Náš příklad kvůli zjednodušení využívá pouze jeden balíček, ale jestli jich budete mít 10, 100, 1000, ... je jen na vás. Řešení je analogické.
D:\ └── ProgramPackageJAVA └── balicek └── ProgramBalicek.java
Poté, co jsme si spustili příkazový řádek, si vytvoříme v jakékoliv
adresáři zdrojový soubor, kde bude zdrojový kód uložen (např.
ProgramJava.java
). Za pomoci příkazu
md ProgramPackageJAVA
vytvoříme adresář
ProgramPackageJAVA
. Po provedení se do něj přesuneme přes
příkaz cd ProgramPackageJAVA
. V tomto adresáři vytvoříme
další podadresář, který bude představovat baliček (package) a to
příkazem md balicek
. Po provedení se do něj přesuneme přes
příkaz cd balicek
. V adresáři poté vytvoříme zdrojový
soubor přes příkaz fsutil file createnew ProgramBalicek.java 0
.
Dále provedeme úpravu zdrojového souboru přes příkaz
notepad ProgramBalicek.java
, vložíme kód níže, soubor
uložíme a notepad ukončíme.
package balicek; public class ProgramBalicek { public static void main (String [] args) { System.out.println("Ahoj program z Javy s balickem"); } }
Před kompilací se přesuneme o úroveň výše příkazem
cd ..
. Nyní provedeme kompilaci přes příkazový řádek
příkazem:
javac balicek\*.java`
Kompilací vznikne soubor ProgramBalicek.class
. Nyní nám
zbývá jen daný zdrojový kód spustit.
D:\ └── ProgramPackageJAVA └── balicek ├── ProgramBalicek.class └── ProgramBalicek.java
Toho docílíme příkazem java balicek.ProgramBalicek
. Jak
vidíte, vše funguje.

Nyní nás opět čeká tvorba spustitelného jar souboru.
D:\ └── ProgramPackageJAVA ├── manifest.man └── balicek ├── ProgramBalicek.class └── ProgramBalicek.java
Vytvoříme si soubor manifestu přes příkaz
fsutil file createnew manifest.man 0
. Dále provedeme úpravu
daného manifestu přes příkaz notepad manifest.man
, vložíme
text níže, soubor uložíme a notepad ukončíme.
Manifest-Version: 1.0 Main-Class: balicek.ProgramBalicek Created-By: 1.8.0_144 (Oracle Corporation)
Nyní provedeme build neboli vytvoříme *.jar soubor. Provedeme příkaz:
jar cmf manifest.man ProgramBalicek.jar balicek\*.class
Jak vidíte, vytvořili jsme ProgramBalicek.jar
.
D:\ └── ProgramPackageJAVA ├── ProgramBalicek.jar ├── manifest.man └── balicek ├── ProgramBalicek.class └── ProgramBalicek.java
No a nyní si daný program spustíme. Spuštění v příkazovém řádku
jde buď pomocí java -jar ProgramBalicek.jar
nebo jako
java -cp ProgramBalicek.jar balicek.ProgramBalicek
.

V další lekci, Java kompilace a build v příkazovém řádku - library a užití, si ukážeme, jak přes konzoli vytvořit funkční knihovnu.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkamiStaženo 579x (5.74 kB)