Programovanie (1) v C/C++
1-INF-127, ZS 2024/25

Úvod · Pravidlá · Prednášky · Softvér · Testovač
· Kontaktujte nás pomocou e-mailovej adresy E-prg.png (bude odpovedať ten z nás, kto má príslušnú otázku na starosti alebo kto má práve čas).
· Prosíme študentov, aby si pravidelne čítali e-maily na @uniba.sk adrese alebo aby si tieto emaily preposielali na adresu, ktorú pravidelne čítajú.


Letný semester, softvér: Rozdiel medzi revíziami

Z Programovanie
Skočit na navigaci Skočit na vyhledávání
 
(22 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 1: Riadok 1:
 
Pre účely tohto predmetu budeme potrebovať nasledujúci softvér:
 
Pre účely tohto predmetu budeme potrebovať nasledujúci softvér:
* [https://www.oracle.com/java/technologies/javase-jdk15-downloads.html Java SE Development Kit 15] (stačí ľubovoľná verzia od 11 vyššie); pod Linuxom možno použiť aj balíky <tt>openjdk</tt>.
+
* [https://www.oracle.com/java/technologies/downloads/ Java SE Development Kit 21] (stačí ľubovoľná verzia od 11 vyššie); pod Linuxom možno použiť aj balíky <tt>openjdk</tt>.
* [https://gluonhq.com/products/javafx/ Platformu JavaFX 15] (na stránke ako &bdquo;Latest Release&rdquo;, ale opäť by mala stačiť aj verzia 11) pre vývoj aplikácií s grafickým používateľským rozhraním.
+
* [https://gluonhq.com/products/javafx/ Platformu JavaFX 21] SDK (opäť by mala stačiť aj verzia 11) pre vývoj aplikácií s grafickým používateľským rozhraním.
* Vývojové prostredie [https://www.jetbrains.com/idea/download/ IntelliJ IDEA Community Edition 3.2], prípadne vhodnú alternatívu ako napríklad Eclipse alebo Visual Studio Code.
+
* Vývojové prostredie [https://www.jetbrains.com/idea/download/ IntelliJ IDEA Community Edition 2023.3.3], prípadne jeho vhodnú alternatívu.
  
 
Odporúčame pracovať vo vývojom prostredí, avšak je dôležité naučiť sa kompilovať a spúšťať programy aj z príkazového riadku (minimálne za účelom riešenia rôznych problémov).
 
Odporúčame pracovať vo vývojom prostredí, avšak je dôležité naučiť sa kompilovať a spúšťať programy aj z príkazového riadku (minimálne za účelom riešenia rôznych problémov).
Riadok 8: Riadok 8:
 
== Inštalácia softvéru ==
 
== Inštalácia softvéru ==
  
* Stiahnite si Java SE Development Kit 15 [https://www.oracle.com/java/technologies/javase-jdk15-downloads.html odtiaľto] a postupujte podľa inštalačných pokynov.
+
* Stiahnite si [https://www.oracle.com/java/technologies/downloads/ odtiaľto] Java SE Development Kit 21 a postupujte podľa inštalačných pokynov.
 
* Zistite, či inštalácia správne pridala adresár obsahujúci javovský kompilátor a interpreter do systémovej premennej <tt>PATH</tt>. V prípade úspechu by napríklad nasledujúce príkazy zadané do príkazového riadku mali vypísať verziu javovského kompilátora resp. interpretra zhodnú s nainštalovanou verziou Javy.
 
* Zistite, či inštalácia správne pridala adresár obsahujúci javovský kompilátor a interpreter do systémovej premennej <tt>PATH</tt>. V prípade úspechu by napríklad nasledujúce príkazy zadané do príkazového riadku mali vypísať verziu javovského kompilátora resp. interpretra zhodnú s nainštalovanou verziou Javy.
 
<pre>
 
<pre>
Riadok 15: Riadok 15:
 
</pre>
 
</pre>
 
* V prípade, že tieto príkazy nefungujú, alebo sa vypísala stará verzia Javy, pridajte adresár obsahujúci programy <tt>javac</tt> a <tt>java</tt> do systémovej premennej <tt>PATH</tt> manuálne (a prípadný adresár starej verzie Javy odtiaľ odoberte).
 
* V prípade, že tieto príkazy nefungujú, alebo sa vypísala stará verzia Javy, pridajte adresár obsahujúci programy <tt>javac</tt> a <tt>java</tt> do systémovej premennej <tt>PATH</tt> manuálne (a prípadný adresár starej verzie Javy odtiaľ odoberte).
* Stiahnite si ZIP archív s JavaFX [https://gluonhq.com/products/javafx/ odtiaľto] (pre najnovšiu verziu Javy odporúčame &bdquo;Latest Release&rdquo;, čiže verziu 15) a rozbaľte ho do vhodného priečinka. Žiadne ďalšie úkony nie sú v rámci inštalácie JavaFX nutné, ale zapamätajte si adresu podadresára <tt>lib</tt>, keďže ju neskôr budete potrebovať. Nižšie v tomto texte budeme na túto cestu odkazovať ako na <tt><cesta k lib></tt>.
+
* Stiahnite si [https://gluonhq.com/products/javafx/ odtiaľto] ZIP archív s JavaFX. Zvoľte verziu 21 a inštaláciu typu SDK pre vašu architektúru a operačný systém.
* Stiahnite si IntelliJ IDEA Community Edition 3.2 [https://www.jetbrains.com/idea/download/ odtiaľto] a postupujte podľa inštalačných pokynov.
+
* Rozbaľte stiahnutý archív do vhodného priečinka. Žiadne ďalšie úkony nie sú v rámci inštalácie JavaFX nutné, ale zapamätajte si adresu podadresára <tt>lib</tt>, keďže ju neskôr budete potrebovať. Nižšie budeme na túto cestu odkazovať ako na <tt><cesta k lib></tt>.
 +
* Stiahnite si [https://www.jetbrains.com/idea/download/ odtiaľto] vývojové prostredie IntelliJ IDEA Community Edition 2023.3.3 a postupujte podľa inštalačných pokynov.
 
* IntelliJ by mal automaticky rozoznať nainštalovanú verziu Javy. V prípade, že sa tak neudeje, pridajte ju manuálne podľa pokynov [https://www.jetbrains.com/help/idea/sdk.html tu].
 
* IntelliJ by mal automaticky rozoznať nainštalovanú verziu Javy. V prípade, že sa tak neudeje, pridajte ju manuálne podľa pokynov [https://www.jetbrains.com/help/idea/sdk.html tu].
  
 
== Skompilovanie a spustenie programu v Jave ==
 
== Skompilovanie a spustenie programu v Jave ==
  
=== Z príkazového riadku ===
+
Tento oddiel opisuje proces skompilovania a spustenia javovskej triedy <tt>Hello</tt> vypisujúcej na konzolu text <tt>Hello, World!</tt> v dvoch variantoch:
 
+
* V prvom je trieda <tt>Hello</tt> súčasťou nepomenovaného balíka.
=== V IntelliJ IDEA ===
+
* V druhom je trieda <tt>Hello</tt> súčasťou balíka <tt>somepackage</tt>.
 
 
== Skompilovanie a spustenie programu v JavaFX ==
 
  
 
=== Z príkazového riadku ===
 
=== Z príkazového riadku ===
  
=== V IntelliJ IDEA ===
+
Uvažujme najprv prípad, keď je trieda <tt>Hello</tt> súčasťou nepomenovaného balíka, t.j. jej zdrojový kód vyzerá nasledovne.
 
 
<!-- ==Verzia Javy==
 
* V učebniach a na testovači beží staršia Java SE 8, vaše programy by mali fungovať v tejto verzii.
 
* Na svoj počítač si môžete nainštalovať aj novšiu verziu, napríklad Java SE 13, nemali by ste však používať črty jazyka, ktoré v staršej verzii nefungujú.
 
* Prehľad verzií Javy nájdete napríklad na [https://en.wikipedia.org/wiki/Java_version_history Wikipédii], alebo na stránke [https://www.oracle.com/technetwork/java/java-se-support-roadmap.html firmy Oracle]
 
* Na počítač si potrebujete nainštalovať Java SE JDK, napríklad z [https://www.oracle.com/java/technologies/javase-downloads.html tejto stránky], v Linuxe môžete použiť aj balíčky openjdk.
 
 
 
==Mená súborov==
 
* V Jave musí meno súboru sedieť s menom triedy, ktorá sa v ňom nachádza a meno priečinku s menom balíčka (package)
 
* Nasledovný program musí teda byť v súbore <tt>Hello.java</tt>, ktorý je v priečinku <tt>hello</tt>
 
<pre>
 
package hello;
 
  
public class Hello {
+
<syntaxhighlight lang="java">public class Hello {
  
 
     public static void main(String[] args) {
 
     public static void main(String[] args) {
         System.out.println("Hello World!");
+
         System.out.println("Hello, World!");
 
     }
 
     }
 +
 
}
 
}
</pre>
+
</syntaxhighlight>
 +
* Trieda <tt>Hello</tt> musí byť uložená v súbore <tt>Hello.java</tt> (názov súboru bez prípony <tt>.java</tt> sa musí zhodovať s názvom triedy).
  
==Práca s Javou v editore==
+
Postup skompilovania a spustenia triedy <tt>Hello</tt> z príkazového riadku je potom nasledovný:
  
Príklad ako skompilovať a spustiť príklad Hello world vyššie pomocou editora a príkazového riadku:
+
# V príkazovom riadku sa nastavíme do priečinka obsahujúceho súbor <tt>Hello.java</tt>.
* Vytvoríme adresár <tt>hello</tt>, v ňom súbor <tt>Hello.java</tt> s rovnakým obsahom ako vyššie
+
# Triedu skompilujeme príkazom <tt>javac Hello.java</tt>, v dôsledku čoho by mal v rovnakom priečinku vzniknúť súbor <tt>Hello.class</tt> spustiteľný na JVM.
* Kompilácia <tt>javac hello/Hello.java</tt> (vznikne súbor <tt>hello/Hello.class</tt>)
+
# Triedu <tt>Hello</tt> spustíme príkazom <tt>java Hello</tt> (prípadné argumenty môžeme triede <tt>Hello</tt> zadávať obvyklým spôsobom).
* Spustenie <tt>java hello.Hello</tt>
+
: ''Pozor'': kým pri volaní kompilátora <tt>javac</tt> je potrebné uviesť aj príponu kompilovaného súboru <tt>.java</tt>, pri volaní interpretra <tt>java</tt> príponu spúšťanej triedy <tt>.class</tt> nepíšeme (kým argumentom kompilátora je bežná cesta k súboru, argumentom interpretra je názov spúšťanej triedy).
* Pozor, meno adresára musí sedieť s menom balíčka (<tt>hello</tt>), meno súboru s menom triedy (<tt>Hello</tt>)
 
* Príkazy <tt>javac</tt> a <tt>java</tt> nespúšťame priamo v priečinku <tt>hello</tt>, ale o jednu úroveň vyššie, kam sa dostaneme príkazom <tt>cd ..</tt>
 
* Ak vynecháme riadok <tt>package hello</tt>, môžeme mať súbor <tt>Hello.java</tt> priamo v aktuálnom adresári.
 
  
==Práca s Javou v prostredí Netbeans==
+
Ďalej uvažujme prípad, keď je trieda <tt>Hello</tt> súčasťou balíka <tt>somepackage</tt> a jej kód tak vyzerá nasledovne.
  
Pri Jave odporúčame prácu v niektorom integrovanom prostredí, napríklad [http://netbeans.apache.org/ Netbeans]. Prostredie vám bude poskytovať rôzne nápovedy k menám príkazov a podobne.
+
<syntaxhighlight lang="java">package somepackage;
* Najnovšia verzia Netbeans je 11.2, s podporou Java SE 13. Na svojom počítači môžete pracovať s touto verziou prostredia.
 
* V učebniach beží staršia verzia Netbeans, v kombinácii s Java SE 8.
 
  
'''Vytvorenie projektu pre program Hello world (v staršej verzii Netbeans v učebni)'''
+
public class Hello {
* V menu zvolíme ''File -> New Project''
 
* Na prvej obrazovke zvolíme ''Categories: Java'' a ''Projects: Java Application''
 
* Na ďalšej obrazovke ''Project name: hello'' a ''Create Main Class: hello.Hello''
 
  
'''Vytvorenie projektu pre program Hello world (v novej verzii Netbeans 11.2)'''
+
    public static void main(String[] args) {
* Postup je rovnaký ako vyššie, akurát v druhom kroku treba zvoliť ''Categories: Java with Ant'' a ''Projects: Java Application''
+
        System.out.println("Hello, World!");
 +
    }
  
'''Editovanie programu'''
+
}
* V ľavej časti okna máte panel Projects, v ktorom nájdite projekt, ktorý ste práve vytvorili.
+
</syntaxhighlight>
* V projekte rozbaľte '''Source Files''' a nájdete tam '''Hello.java''', ktorý si dvojitým kliknutím otvoríte v editore. Jeho obsah môžete modifikovať alebo celý zmazať a nahradiť programom Hello worlds vyššie
+
* V tomto prípade by mala byť trieda <tt>Hello</tt> opäť uložená v súbore <tt>Hello.java</tt>, ktorý by mal navyše byť uložený v priečinku <tt>somepackage</tt>.  
* Súbor nezabudnite uložiť (menu File, Save, alebo Ctrl-S)
 
  
'''Kompilovanie a spúšťanie'''
+
Skompilovanie a spustenie triedy <tt>Hello</tt> &ndash; alebo presnejšie <tt>somepackage.Hello</tt> &ndash; z príkazového riadku realizujeme nasledovne:
* V menu Run zvoľte Build main project (alebo klávesa F11 alebo '''ikonka kladivka''' na lište), program sa '''skompiluje'''. Prípadné chyby sa objavia v dolnej časti okna.
+
# Nastavíme sa do priečinka obsahujúceho priečinok <tt>somepackage</tt>.
* V menu Run zvoľte Run main project (alebo klávesa F6 alebo '''ikonka zelenej šípky''' na lište), program sa '''spustí'''.
+
# Triedu skompilujeme príkazom <tt>javac somepackage/Hello.java</tt> (s príponou).
 +
# Triedu spustíme príkazom <tt>java somepackage.Hello</tt> (argumentom je názov spúšťanej triedy vrátane balíka).
  
==Iné programátorské prostredia==
+
=== V IntelliJ IDEA ===
  
Nasledovné prostredia by mali fungovať na Linuxových aj Windowsových počítačoch.
+
# Vytvoríme nový projekt pomocou voľby ''New Project''.  
* [https://www.eclipse.org/downloads/packages/release/2019-09/r/eclipse-ide-cc-developers Eclipse]
+
#* V najnovšej verzii IntelliJ IDEA Community Edition 2023.3.3 ''odškrtneme'' (ak je zvolená) možnosť &bdquo;''Add sample code''&rdquo;, aby sa po vytvorení projektu automaticky nevygeneroval žiaden zbytočný kód; inak zvolíme východzie nastavenia (jazyk Java, Build system IntelliJ) a zadáme ľubovoľný názov projektu.
* IntelliJ IDEA, komerčný softvér so [https://www.jetbrains.com/student/ študentskou licenciou zadarmo], alebo zadarmo aj Community version
+
#* V o niečo starších verziách (napr. v počítačovej učebni) najprv v prvých dvoch krokoch použijeme východzie nastavenia (jazyk Java, bez použitia šablóny ani ďalších voliteľných možností), v treťom kroku zadáme ľubovoľný názov projektu.
* [https://code.visualstudio.com/ Visual Studio Code] od firmy Microsoft (plus [https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack Java extension] alebo [https://aka.ms/vscode-java-installer-win inštalácia pre Windows])
+
# Ak sa nezobrazuje, zobrazíme panel so štruktúrou projektu cez <tt>View --> Tool Windows --> Project</tt> (alebo s použitím klávesovej skratky <tt>Alt + 1</tt>).
 +
# Rozbalíme modul pomenovaný rovnako ako projekt (tučným) a zvolíme priečinok <tt>src</tt>.
 +
# V ponuke <tt>File --> New</tt> (prípadne v podponuke <tt>New</tt> kontextovej ponuky, ktorá sa zobrazí po kliknutí na <tt>src</tt> pravou myšou) by sa teraz mala objavovať možnosť <tt>Java Class</tt>.
 +
# Po zvolení tejto možnosti zadáme názov triedy (vrátane balíkov), t.j. <tt>Hello</tt> pre triedu v nepomenovanom balíku a <tt>somepackage.Hello</tt> pre triedu v balíku <tt>somepackage</tt>.
 +
# V závislosti od vybranej alternatívy skopírujeme do editora vhodnú variantu triedy <tt>Hello</tt> z predchádzajúceho oddielu.
 +
# Triedu skompilujeme a spustíme napríklad kliknutím na zelenú šípku vedľa hlavičky metódy <tt>main</tt> a zvolením možnosti <tt>Run 'trieda.main()'</tt>. Následné ďalšie spustenia možno realizovať skratkou <tt>Shift + F10</tt>.
  
Z nich iba Eclipse je k dispozícii na učebniach v Linuxe a sa teda použiť na skúške.
+
Dôvod, prečo skratka <tt>Shift + F10</tt> (ekvivalentná možnosti <tt>Run --> Run 'Hello'</tt>) nefunguje hneď od začiatku je ten, že sme zatiaľ nevytvorili tzv. konfiguráciu behu, v ktorej sa napríklad zadáva verzia Javy použitá pri kompilovaní, hlavná trieda projektu (t.j. trieda, ktorá sa má spustiť po spustení projektu), prípadné argumenty z príkazového riadku, parametre pre kompilátor a interpreter, atď. V prípade kliknutia na zelenú šípku vedľa metódy main a zvolenia príslušnej možnosti sa automaticky vytvorí tzv. dočasná konfigurácia, pri ktorej sa trieda spustí s východzími nastaveniami.  
  
==JavaFX==
+
Pre neskoršie účely je dôležité vedieť vytvárať aj vlastné (a permanentné) konfigurácie behu (v jednom projekte možno definovať aj viacero konfigurácií, medzi ktorými sa potom možno prepínať pomocou prepínača v pravej časti nástrojovej lišty). Postup vytvorenia novej konfigurácie behu je nasledujúci:
 +
# Zvolíme <tt>Run --> Edit Configurations...</tt>.
 +
# Klikneme na tlačidlo <tt>+</tt> a zvolíme možnosť <tt>Application</tt>.
 +
# Následne môžeme v hlavnej časti okna napravo zadať názov konfigurácie, napríklad <tt>Konfiguracia</tt>.
 +
# Zadáme potrebné údaje: predvolená by mala byť správna verzia Javy (napr. <tt>java 21</tt>), do políčka <tt>Main class</tt> zadáme názov hlavnej triedy projektu (napr. <tt>Hello</tt>), do políčka <tt>Program arguments</tt> môžeme zadať prípadné argumenty pre spúšťanú triedu z príkazového riadku (políčko môžeme ponechať prázdne). Prípadné ďalšie možnosti môžeme pridať kliknutím na <tt>Modify options</tt>.
 +
# Ukončíme dialóg tlačidlom <tt>OK</tt>.
 +
# Na nástrojovej lište sa uistíme, že je vybraná práve vytvorená konfigurácia a projekt spustíme skratkou <tt>Shift + F10</tt>.
  
* [[Inštalácia_novších_verzií_JavaFX|Návod na použitie JavaFX]] -->
+
Viac sa o konfiguráciách behu možno dočítať [https://www.jetbrains.com/help/idea/run-debug-configuration.html tu].
  
<!--
+
== Skompilovanie a spustenie programu v JavaFX ==
Narozdiel od verzie JavaFX 8, ktorá bola priamo súčasťou Java SE 8, je najnovšia verzia JavaFX 14 vyvíjaná ako nezávislý modul, ktorý je potrebné nainštalovať samostatne. Nasledujúci návod popisuje inštaláciu JavaFX 14 (alebo inej novšej verzie JavaFX), jej integráciu s Netbeans 11.2 (alebo inou novšou verziou NetBeans) a úkony, ktoré je potrebné vykonať po vytvorení každého nového projektu.
 
  
* Podrobnejšie informácie možno nájsť [https://openjfx.io/openjfx-docs/ tu].
+
Ukážeme si teraz, ako z príkazového riadku a v IntelliJ IDEA skompilovať a spustiť nasledujúcu triedu pracujúcu s JavaFX, ktorá by mala zobraziť okno s titulkom <tt>Hello, World!</tt>. Táto trieda musí byť uložená v súbore <tt>HelloFX.java</tt>.
  
V počítačových učebniach beží staré prostredie s Java SE 8 a JavaFX 8 &ndash; vytvorenie aplikácie v JavaFX je tam teda pomerne bezproblémové (nie je nutné nič z tohto návodu).
+
<syntaxhighlight lang="java">import javafx.application.*;
 +
import javafx.stage.*;
 +
import javafx.scene.*;
 +
import javafx.scene.layout.*;
  
Na Linuxe si môžete nainštalovať Java8 vo verzii openJDK (napr. v ubuntu balíčky openjdk-8-jdk a openjfx).
+
public class HelloFX extends Application {
 +
    @Override
 +
    public void start(Stage primaryStage) {
 +
        Pane pane = new Pane();
 +
        Scene scene = new Scene(pane, 300, 250);
 +
       
 +
        primaryStage.setTitle("Hello, World!");
 +
        primaryStage.setScene(scene);
 +
        primaryStage.show();
 +
    }
 +
   
 +
    public static void main(String[] args) {
 +
        launch(args);
 +
    }
 +
}
 +
</syntaxhighlight>
  
=== Inštalácia JavaFX 14 ===
+
V nasledujúcom <tt><cesta k lib></tt> odkazuje na cestu k adresáru <tt>lib</tt> rozbaleného ZIP archívu JavaFX, o ktorej sme sa už zmienili vyššie. Viac detailov možno nájsť [https://openjfx.io/openjfx-docs/ tu].
  
* Stiahnite si [https://gluonhq.com/products/javafx/ z tejto stránky] ZIP archív obsahujúci JavaFX (vyberte si verziu SDK pre svoj operačný systém).
+
=== Z príkazového riadku ===
* Stiahnutý ZIP archív v ľubovoľnom adresári rozbaľte.
 
* V rozbalenom adresári nájdite priečinok <tt>lib</tt> a zapamätajte si jeho adresu.
 
* Ak chcete s JavaFX pracovať aj z príkazového riadku, postupujte podľa [https://openjfx.io/openjfx-docs/#install-javafx tohto návodu].
 
  
=== Integrácia JavaFX 14 s NetBeans 11.2 ===
+
# Nastavíme sa do priečinku obsahujúceho súbor <tt>HelloFX.java</tt>.
 +
# Triedu skompilujeme príkazom
 +
<pre>
 +
javac --module-path <cesta-k-lib> --add-modules javafx.controls,javafx.fxml HelloFX.java
 +
</pre>
 +
<ol start=3>
 +
<li>Triedu spustíme príkazom</li>
 +
</ol>
 +
<pre>
 +
java --module-path <cesta-k-lib> --add-modules javafx.controls,javafx.fxml HelloFX
 +
</pre>
  
* Otvorte v NetBeans dialógové okno <tt>Tools -> Libraries</tt>.
+
=== V IntelliJ IDEA ===
* Pomocou tlačidla <tt>New Library...</tt> vytvorte novú knižnicu, ktorú nazvete <tt>JavaFX 14</tt>.
+
# Vytvoríme projekt a v ňom triedu <tt>HelloFX</tt> rovnakým spôsobom ako vyššie (dá sa prípadne vytvoriť aj projekt typu <tt>JavaFX</tt>).
* Pomocou tlačidla <tt>Add JAR/Folder...</tt> vložte do knižnice všetky súbory s príponou <tt>.jar</tt> z priečinka <tt>lib</tt> spomínaného vyššie.
+
# Otvoríme dialóg <tt>File --> Project Structure...</tt>. V ňom otvoríme záložku <tt>Libraries</tt>, klikneme na tlačidlo <tt>+</tt> a zvolíme možnosť <tt>Java</tt>. Otvorí sa dialógové okno umožňujúce vytvoriť knižnicu z priečinka. Za tento priečinok vyberieme priečinok <tt><cesta k lib></tt>.
* Tým by mala byť JavaFX pripravená na používanie v NetBeans.
+
# Vytvoríme konfiguráciu behu podobným spôsobom ako vyššie. Za hlavnú triedu vyberieme <tt>HelloFX</tt>.
* Viac detailov možno nájsť [https://openjfx.io/openjfx-docs/#IDE-NetBeans tu].
+
# Klikneme na <tt>Modify options</tt> a zaškrtneme možnosť <tt>Add VM options</tt>.
 
+
# Následne by sa malo objaviť políčko <tt>VM options</tt>, do ktorého zadáme
=== Vytvorenie nového projektu využívajúceho JavaFX 14 v NetBeans 11.2 ===
+
<pre>
 
+
--module-path <cesta-k-lib> --add-modules javafx.controls,javafx.fxml
* Vytvorte nový projekt, štandardne cez <tt>File -> New Project... -> Java with Ant -> Java Application</tt>. Pozor: <b>nevytvárajte</b> projekt typu JavaFX, pretože podpora novších verzií JavaFX v NetBeans nefunguje (pri staršej verzii v učebni možno zvoliť aj projekt typu JavaFX, ktorý automaticky vytvorí kostru programu využívajúceho JavaFX).
+
</pre>
* Cez <tt>File -> Project Properties -> Libraries -> Classpath (+) -> Add Library...</tt> pridajte knižnicu <tt>JavaFX 14</tt>.
+
<ol start=6>
* Vo <tt>File -> Project Properties -> Run</tt> vyplňte do položky <tt>VM Options</tt> text <tt>--module-path "cesta-k-vasmu-adresaru-lib" --add-modules javafx.controls,javafx.fxml</tt>, kde namiesto <tt>cesta-k-vasmu-adresaru-lib</tt> uvediete cestu k vášmu adresáru <tt>lib</tt> spomínanému vyššie.
+
<li>Dialóg potvrdíme kliknutím na <tt>OK</tt>.</li>
* Neplatí pri JavaFX 8 a starších verziách NetBeans, kde okrem vytvorenia projektu nie je nutný žiaden ďalší špecifický úkon.
+
<li>Projekt spustíme klávesovou skratkou <tt>Shift + F10</tt>.</li>
* Najmä pod Linuxom sa niekedy môže stať, že vo <tt>File -> Project Properties -> Build -> Compiling</tt> je vo východzích nastaveniach zaškrtnutná možnosť <tt>Compile on Save</tt>. V takom prípade je potrebné túto možnosť &bdquo;odškrtnúť&rdquo;.
+
</ol>
 
 
-->
 

Aktuálna revízia z 15:26, 13. február 2024

Pre účely tohto predmetu budeme potrebovať nasledujúci softvér:

Odporúčame pracovať vo vývojom prostredí, avšak je dôležité naučiť sa kompilovať a spúšťať programy aj z príkazového riadku (minimálne za účelom riešenia rôznych problémov).

Inštalácia softvéru

  • Stiahnite si odtiaľto Java SE Development Kit 21 a postupujte podľa inštalačných pokynov.
  • Zistite, či inštalácia správne pridala adresár obsahujúci javovský kompilátor a interpreter do systémovej premennej PATH. V prípade úspechu by napríklad nasledujúce príkazy zadané do príkazového riadku mali vypísať verziu javovského kompilátora resp. interpretra zhodnú s nainštalovanou verziou Javy.
javac --version
java --version
  • V prípade, že tieto príkazy nefungujú, alebo sa vypísala stará verzia Javy, pridajte adresár obsahujúci programy javac a java do systémovej premennej PATH manuálne (a prípadný adresár starej verzie Javy odtiaľ odoberte).
  • Stiahnite si odtiaľto ZIP archív s JavaFX. Zvoľte verziu 21 a inštaláciu typu SDK pre vašu architektúru a operačný systém.
  • Rozbaľte stiahnutý archív do vhodného priečinka. Žiadne ďalšie úkony nie sú v rámci inštalácie JavaFX nutné, ale zapamätajte si adresu podadresára lib, keďže ju neskôr budete potrebovať. Nižšie budeme na túto cestu odkazovať ako na <cesta k lib>.
  • Stiahnite si odtiaľto vývojové prostredie IntelliJ IDEA Community Edition 2023.3.3 a postupujte podľa inštalačných pokynov.
  • IntelliJ by mal automaticky rozoznať nainštalovanú verziu Javy. V prípade, že sa tak neudeje, pridajte ju manuálne podľa pokynov tu.

Skompilovanie a spustenie programu v Jave

Tento oddiel opisuje proces skompilovania a spustenia javovskej triedy Hello vypisujúcej na konzolu text Hello, World! v dvoch variantoch:

  • V prvom je trieda Hello súčasťou nepomenovaného balíka.
  • V druhom je trieda Hello súčasťou balíka somepackage.

Z príkazového riadku

Uvažujme najprv prípad, keď je trieda Hello súčasťou nepomenovaného balíka, t.j. jej zdrojový kód vyzerá nasledovne.

public class Hello {

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

}
  • Trieda Hello musí byť uložená v súbore Hello.java (názov súboru bez prípony .java sa musí zhodovať s názvom triedy).

Postup skompilovania a spustenia triedy Hello z príkazového riadku je potom nasledovný:

  1. V príkazovom riadku sa nastavíme do priečinka obsahujúceho súbor Hello.java.
  2. Triedu skompilujeme príkazom javac Hello.java, v dôsledku čoho by mal v rovnakom priečinku vzniknúť súbor Hello.class spustiteľný na JVM.
  3. Triedu Hello spustíme príkazom java Hello (prípadné argumenty môžeme triede Hello zadávať obvyklým spôsobom).
Pozor: kým pri volaní kompilátora javac je potrebné uviesť aj príponu kompilovaného súboru .java, pri volaní interpretra java príponu spúšťanej triedy .class nepíšeme (kým argumentom kompilátora je bežná cesta k súboru, argumentom interpretra je názov spúšťanej triedy).

Ďalej uvažujme prípad, keď je trieda Hello súčasťou balíka somepackage a jej kód tak vyzerá nasledovne.

package somepackage;

public class Hello {

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

}
  • V tomto prípade by mala byť trieda Hello opäť uložená v súbore Hello.java, ktorý by mal navyše byť uložený v priečinku somepackage.

Skompilovanie a spustenie triedy Hello – alebo presnejšie somepackage.Hello – z príkazového riadku realizujeme nasledovne:

  1. Nastavíme sa do priečinka obsahujúceho priečinok somepackage.
  2. Triedu skompilujeme príkazom javac somepackage/Hello.java (s príponou).
  3. Triedu spustíme príkazom java somepackage.Hello (argumentom je názov spúšťanej triedy vrátane balíka).

V IntelliJ IDEA

  1. Vytvoríme nový projekt pomocou voľby New Project.
    • V najnovšej verzii IntelliJ IDEA Community Edition 2023.3.3 odškrtneme (ak je zvolená) možnosť „Add sample code”, aby sa po vytvorení projektu automaticky nevygeneroval žiaden zbytočný kód; inak zvolíme východzie nastavenia (jazyk Java, Build system IntelliJ) a zadáme ľubovoľný názov projektu.
    • V o niečo starších verziách (napr. v počítačovej učebni) najprv v prvých dvoch krokoch použijeme východzie nastavenia (jazyk Java, bez použitia šablóny ani ďalších voliteľných možností), v treťom kroku zadáme ľubovoľný názov projektu.
  2. Ak sa nezobrazuje, zobrazíme panel so štruktúrou projektu cez View --> Tool Windows --> Project (alebo s použitím klávesovej skratky Alt + 1).
  3. Rozbalíme modul pomenovaný rovnako ako projekt (tučným) a zvolíme priečinok src.
  4. V ponuke File --> New (prípadne v podponuke New kontextovej ponuky, ktorá sa zobrazí po kliknutí na src pravou myšou) by sa teraz mala objavovať možnosť Java Class.
  5. Po zvolení tejto možnosti zadáme názov triedy (vrátane balíkov), t.j. Hello pre triedu v nepomenovanom balíku a somepackage.Hello pre triedu v balíku somepackage.
  6. V závislosti od vybranej alternatívy skopírujeme do editora vhodnú variantu triedy Hello z predchádzajúceho oddielu.
  7. Triedu skompilujeme a spustíme napríklad kliknutím na zelenú šípku vedľa hlavičky metódy main a zvolením možnosti Run 'trieda.main()'. Následné ďalšie spustenia možno realizovať skratkou Shift + F10.

Dôvod, prečo skratka Shift + F10 (ekvivalentná možnosti Run --> Run 'Hello') nefunguje hneď od začiatku je ten, že sme zatiaľ nevytvorili tzv. konfiguráciu behu, v ktorej sa napríklad zadáva verzia Javy použitá pri kompilovaní, hlavná trieda projektu (t.j. trieda, ktorá sa má spustiť po spustení projektu), prípadné argumenty z príkazového riadku, parametre pre kompilátor a interpreter, atď. V prípade kliknutia na zelenú šípku vedľa metódy main a zvolenia príslušnej možnosti sa automaticky vytvorí tzv. dočasná konfigurácia, pri ktorej sa trieda spustí s východzími nastaveniami.

Pre neskoršie účely je dôležité vedieť vytvárať aj vlastné (a permanentné) konfigurácie behu (v jednom projekte možno definovať aj viacero konfigurácií, medzi ktorými sa potom možno prepínať pomocou prepínača v pravej časti nástrojovej lišty). Postup vytvorenia novej konfigurácie behu je nasledujúci:

  1. Zvolíme Run --> Edit Configurations....
  2. Klikneme na tlačidlo + a zvolíme možnosť Application.
  3. Následne môžeme v hlavnej časti okna napravo zadať názov konfigurácie, napríklad Konfiguracia.
  4. Zadáme potrebné údaje: predvolená by mala byť správna verzia Javy (napr. java 21), do políčka Main class zadáme názov hlavnej triedy projektu (napr. Hello), do políčka Program arguments môžeme zadať prípadné argumenty pre spúšťanú triedu z príkazového riadku (políčko môžeme ponechať prázdne). Prípadné ďalšie možnosti môžeme pridať kliknutím na Modify options.
  5. Ukončíme dialóg tlačidlom OK.
  6. Na nástrojovej lište sa uistíme, že je vybraná práve vytvorená konfigurácia a projekt spustíme skratkou Shift + F10.

Viac sa o konfiguráciách behu možno dočítať tu.

Skompilovanie a spustenie programu v JavaFX

Ukážeme si teraz, ako z príkazového riadku a v IntelliJ IDEA skompilovať a spustiť nasledujúcu triedu pracujúcu s JavaFX, ktorá by mala zobraziť okno s titulkom Hello, World!. Táto trieda musí byť uložená v súbore HelloFX.java.

import javafx.application.*;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.layout.*;

public class HelloFX extends Application {
    @Override
    public void start(Stage primaryStage) {
        Pane pane = new Pane();
        Scene scene = new Scene(pane, 300, 250);
        
        primaryStage.setTitle("Hello, World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    
    public static void main(String[] args) {
        launch(args);
    }
}

V nasledujúcom <cesta k lib> odkazuje na cestu k adresáru lib rozbaleného ZIP archívu JavaFX, o ktorej sme sa už zmienili vyššie. Viac detailov možno nájsť tu.

Z príkazového riadku

  1. Nastavíme sa do priečinku obsahujúceho súbor HelloFX.java.
  2. Triedu skompilujeme príkazom
javac --module-path <cesta-k-lib> --add-modules javafx.controls,javafx.fxml HelloFX.java
  1. Triedu spustíme príkazom
java --module-path <cesta-k-lib> --add-modules javafx.controls,javafx.fxml HelloFX

V IntelliJ IDEA

  1. Vytvoríme projekt a v ňom triedu HelloFX rovnakým spôsobom ako vyššie (dá sa prípadne vytvoriť aj projekt typu JavaFX).
  2. Otvoríme dialóg File --> Project Structure.... V ňom otvoríme záložku Libraries, klikneme na tlačidlo + a zvolíme možnosť Java. Otvorí sa dialógové okno umožňujúce vytvoriť knižnicu z priečinka. Za tento priečinok vyberieme priečinok <cesta k lib>.
  3. Vytvoríme konfiguráciu behu podobným spôsobom ako vyššie. Za hlavnú triedu vyberieme HelloFX.
  4. Klikneme na Modify options a zaškrtneme možnosť Add VM options.
  5. Následne by sa malo objaviť políčko VM options, do ktorého zadáme
--module-path <cesta-k-lib> --add-modules javafx.controls,javafx.fxml
  1. Dialóg potvrdíme kliknutím na OK.
  2. Projekt spustíme klávesovou skratkou Shift + F10.