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 627x (5.74 kB)
