Úvod do programovania v jazyku Java
V súčasnosti existuje veľké množstvo programov, ktoré riešia veľmi rozmanité úlohy, pomaly sa môže zdať, že na všetko už bol naprogramovaný program. Napriek tomu často je potrebné, aby sme vytvorili vlastný program: autor môže totiž naprogramovať zoptimalizovaný algoritmus (taký postup na riešenie konkrétnej úlohy, aby bol vykonaný čo najrýchlejšie, s najmenšími výpočtovými nárokmi), čo je niekedy - hlavne pri náročných vedeckých výpočtoch - veľmi dôležité. Samozrejme nie je vhodné programovať všetko úplne nanovo, je výhodné, pokiaľ môžeme čo najviac využiť, čo už iní naprogramovali (inak by pokrok v programovaní bol nulový). Podobne, ako pri skladaní stavebnice niekedy potrebujeme väčšie, inokedy zase menšie diely, aj riešenie našej úlohy rozdelíme na časti, ktoré je možné realizovať postupne (niektoré časti postupov prevezmeme od iných programátorov, niektoré vytvoríme sami, dôležité je však, že sme schopní program korektne zostaviť ideálne s čo najmenšou námahou). Pri programovaní vždy volíme kompromis medzi možnosťou prebrať už naprogramované (s tou nevýhodou, že možno berieme aj časti, ktoré potrebovať nebudeme) a pracným programovaním vlastného algoritmu.
Programovací jazyk Java
Na našich cvičeniach sa budeme venovať programovaniu v programovacom jazyku Java, ktorý vyvíja spoločnosť SUN Microsystems Inc. Jeho hlavnými výhodami sú:
- sú podporované vlastne všetky operačné systémy
- je voľne šíriteľný - zadarmo
- je objektovo orientovaný (vysvetlíme neskôr), čo umožňuje veľkú znovupoužiteľnosť už naprogramovaných algoritmov
- existuje preň veľké množstvo príkladov
- je veľmi dobre dokumentovaný
Pre nás bude dôležité, že sa v tomto programovacom jazyku naučíme ako základné princípy programovania tak aj rýchlo a relatívne jednoducho naprogramovať veľmi pekné a užitočné veci.
Na druhej strane, vždy je to niečo za niečo, a ako sme už spomenuli, za jednoduchosť sa platí daň. V prípade Javy to, že je podporovaná takmer všetkými operačnými systémami (jej prenositeľnosť) je možná vďaka tomu, že v operačnom systéme spustíme tzv. virtuálny stroj Javy, ktorý prekladá náš program operačnému systému. Programátori spoločnosti Sun nám tým, že naprogramovali virtuálny stroj Javy pre každú platformu umožnili programovať jednotne pod ľubovoľným operačným systémom. Áno, znamená to určitú stratu efektivity, pretože Java musí byť interpretovaná z bytecode. Existujú však spôsoby, ako tieto straty zredukovať na minimum, takže nevýhody sú bohato vyvážené možnosťami, ktoré jazyk ponúka.
Postup, ako sa dostať až k vykonateľnému programu v Jave a vykonať ho:
- písanie programu (zdrojového kódu) v jazyku Java (súbory *.java)
- preloženie = kompilovanie - vytvorenie binárneho (*.class) súboru kompilátorom javy (javac)
- spustenie virtuálneho stroja javy (java) a vykonanie spustiteľného .class súboru
Zdrojový kód
Zdrojový kód = textový súbor, v ktorom je zapísaný program v jazyku Java. Je editovateľný textovým editorom, typicky je pomenovaný meno_triedy.java podľa triedy (class), ktorá sa v ňom nachádza. Zdrojový kód je zrozumiteľný programátorovi - ten mu musí rozumieť, aby mohol do neho zapísať požadovaný algoritmus. Význam tried vysvetlíme neskôr, zatiaľ ich berme ako niečo "povinné".
Najjednoduchší zdrojový kód (v súbore nic.java):
class nic { }
- "{" otvára obsah bloku, "}" zatvára, zatiaľ je blok a teda aj trieda prázdna
- kompilovanie = preklad do bytecode (človeku nezrozumiteľný), vytvorenie súboru .class
- z príkazového riadku javac nic.java (vytvorí nic.class)
- my budeme robiť v SciTe: Tools -> Compile alebo stlačením klávesy F7
Úloha
Vyskúšajte: Čo sa stane, ak súbor prva.java bude obsahovať viac tried?
class prva { } class druha { } class tretia { }
Po spustení javac prva.java dostaneme tri súbory prva.class, druha.class, tretia.class, každý bude obsahovať jednu triedu. Tieto súbory by sme dostali aj keby sa súbor .java volal inak, nie prva.java, kompilátor sa riadi menom, ktoré napíšeme za class.
- zásadou však bude v jednom súbore mať iba jednu triedu a pomenovať ho podľa nej
- pozor, často sa stane, že omylom pomenujete súbor inak, ako triedu v ňom a trápite sa, prečo chybové hlásenia nedávajú zmysel... (súbor .class sa volá inak, ako súbor .java)
Spustenie aplikácie (súboru .class) v Java Virtual Machine
Po kompilácii zdrojového kódu do bytecode, ktorý sa uloží do súboru meno_triedy.class je tento možné spustiť, pokiaľ v ňom je časť popisujúca, čo sa má vykonať. Najjednoduchšia spustiteľná trieda Hello.java:
class Hello { public static void main(String[] args) { System.out.println("Hey, it really works!"); } }
- po skompilovaní javac Hello.java (F7) spustíme
- z príkazového riadku java Hello
- v SciTe: Tools -> Go alebo stlačením klávesy F5
- čo sa má vykonať píšeme medzi { a } funkcie (metódy) main
- tento príklad vypíše do konzoly "Hey, it really works!" (podrobnejšie vysvetlíme neskôr)
- samotné vykonanie zabezpečí Java Virtual Machine (JVM)
- Java Virtual Machine je skompilovaná pre danú platformu (systém)
- to zabezpečuje úplnú prenositeľnosť medzi systémami - platí pre súbory .java aj bytecode (.class), teda nie je treba ani znova kompilovať, keď prejdeme do iného operačného systému
Editor SciTE
Je to textový editor (založený na voľne šíriteľnom komponente Scintilla), ktorý môžete používať pod Linuxom aj Windows. V princípe by sme mohli používať ľubovoľný textový editor, tento je však veľmi dobrý a zadarmo.
- Scintilla Text Editor je programátorský textový editor (podporuje okolo 80 rôznych jazykov/formátov)
- syntax highlight - kľúčové slová, operátory farebne vyznačuje
- brace matching - vyhľadanie páru k zátvorke (kurzor nastavte za zátvorku - ak sa pár nenájde, zmení farbu na červenú, inak sa aj s párom zafarbia na modro)
- skrývanie blokov (kliknutím na +/- na ľavom okraji okna sa blok rozbalí/zbalí)
- auto complete - doplnenie príkazu (Ctrl+Space) - novšie verzie, v T3 zatiaľ nefunguje
- klávesové skratky:
- Ctrl+c = kopíruj, Ctrl+v = vlož, Ctrl+x = vystrihni, Ctrl+s = ulož
- F9 = kompiluj aktuálny .java súbor, F5 = spusti aktuálnu triedu
- Ctrl+q = zakomentovanie/odkomentovanie bloku/riadku, Ctrl+d = duplikuj riadok
- Ctrl+b = zakomentuj/odkomentuj blok, Ctrl+e = presun k páru k danej zátvorke
- Ctrl+f = hľadaj, F3 = hľadaj znova, Ctrl+r = hľadaj a nahraď
- Ctrl+g = rýchly presun na riadok/stĺpec, Ctrl+hore/dole = posun obsahu okna
- v časti okna sa ukazuje výstup programu a exit code (neskôr si povieme, ako exit code nastaviť na nejakú hodnotu funkciou System.exit(), je to informácia o ukončení programu - 0 znamená normálne ukončenie bez chyby).