IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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.

GUIaplikace - Kompilace manuálně v Javě

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.

Kompilace Package v Javě přes příkazový řádek - Kompilace manuálně v Javě

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.

Spuštění balíčku v Javě - Kompilace manuálně v Javě

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ínkami

Staženo 485x (5.74 kB)

 

Předchozí článek
Java kompilace a build v příkazovém řádku - Základy
Všechny články v sekci
Kompilace manuálně v Javě
Přeskočit článek
(nedoporučujeme)
Java kompilace a build v příkazovém řádku - library a užití
Článek pro vás napsal Robert Michalovič
Avatar
Uživatelské hodnocení:
9 hlasů
Programuji převážně v Javě SE,EE a trochu nativním C a CUDA. více viz.https://cz.linkedin.com/in/robert-michalovic
Aktivity