Programovanie (2) v Jave
1-INF-166, letný semester 2023/24

Prednášky · Pravidlá · Softvér · Testovač
· Vyučujúcich predmetu možno kontaktovať mailom na adresách uvedených na hlavnej stránke. Hromadná mailová adresa zo zimného semestra v letnom semestri nefunguje.
· JavaFX: cesta k adresáru lib je v počítačových učebniach /usr/share/openjfx/lib.


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

Z Programovanie
Skočit na navigaci Skočit na vyhledávání
Riadok 20: Riadok 20:
  
 
== Skompilovanie a spustenie programu v Jave ==
 
== Skompilovanie a spustenie programu v Jave ==
 +
 +
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 druhom je trieda <tt>Hello</tt> súčasťou balíka <tt>somepackage</tt>.
  
 
=== Z príkazového riadku ===
 
=== Z príkazového riadku ===
 +
 +
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.
 +
 +
<syntaxhighlight lang="java">public class Hello {
 +
 +
    public static void main(String[] args) {
 +
        System.out.println("Hello, World!");
 +
    }
 +
 +
}
 +
</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).
 +
 +
Postup skompilovania a spustenia triedy <tt>Hello</tt> z príkazového riadku je potom nasledovný:
 +
 +
# V príkazovom riadku sa nastavíme do priečinka obsahujúceho súbor <tt>Hello.java</tt>.
 +
# 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.
 +
# 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).
 +
: ''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 tzv. ''classpath'' danej triedy).
 +
 +
Ď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.
 +
 +
<syntaxhighlight lang="java">package somepackage;
 +
 +
public class Hello {
 +
 +
    public static void main(String[] args) {
 +
        System.out.println("Hello, World!");
 +
    }
 +
 +
}
 +
</syntaxhighlight>
 +
* 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>.
 +
 +
Skompilovanie a spustenie triedy <tt>Hello</tt> &ndash; alebo presnejšie <tt>somepackage.Hello</tt> &ndash; z príkazového riadku realizujeme nasledovne:
 +
# Nastavíme sa do priečinka obsahujúceho priečinok <tt>somepackage</tt>.
 +
# Triedu skompilujeme príkazom <tt>javac somepackage/Hello.java</tt> (s príponou).
 +
# Triedu spustíme príkazom <tt>java somepackage.Hello</tt> (ide o tzv. ''classpath'' triedy <tt>Hello</tt>).
  
 
=== V IntelliJ IDEA ===
 
=== V IntelliJ IDEA ===

Verzia zo dňa a času 19:21, 9. február 2021

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

  • Java SE Development Kit 15 (stačí ľubovoľná verzia od 11 vyššie); pod Linuxom možno použiť aj balíky openjdk.
  • Platformu JavaFX 15 (na stránke ako „Latest Release”, ale 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 IntelliJ IDEA Community Edition 3.2, prípadne vhodnú alternatívu ako napríklad Eclipse alebo Visual Studio Code.

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 Java SE Development Kit 15 odtiaľto 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 ZIP archív s JavaFX odtiaľto (pre najnovšiu verziu Javy odporúčame „Latest Release”, č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 lib, keďže ju neskôr budete potrebovať. Nižšie v tomto texte budeme na túto cestu odkazovať ako na <cesta k lib>.
  • Stiahnite si IntelliJ IDEA Community Edition 3.2 odtiaľto 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 tzv. classpath danej 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 (ide o tzv. classpath triedy Hello).

V IntelliJ IDEA

Skompilovanie a spustenie programu v JavaFX

Z príkazového riadku

V IntelliJ IDEA