Image
21.6.2016 0 Comments

Java pod lupou I. /1.časť

Späť na úvod >> Späť na programovanie >> Späť na seriál

Oboznámte sa s Javou – moderným programovacím jazykom a vývojovou platformou zároveň. Ak ste sledovali C++ pod lupou, nový seriál bude písaný rovnakým štýlom, azda len s tým rozdielom, že kým pri opise C++ som sa snažil obmedziť výklad na štandardné a implementačne nezávislé črty, pri Jave je takýto postup zbytočný. Jej špecifikácia a vývoj je pod taktovkou jedinej firmy (hm, žeby monopol?) a každá implementácia Javy, ktorá nesúhlasí so špecifikáciou, je chybná. Okrem toho vždy je k dispozícii takpovediac referenčná implementácia Java platformy s názvom Java Runtime Environment, pochádzajúca priamo od tvorcov Javy, firmy Sun Microsystems, ktorá je k dispozícii zadarmo. Seriál sa bude zaoberať Javou ako celkom, teda opisom jednak jazyka, jednak knižnice tried, ktoré sú k dispozícii.

Príklady, ktoré nájdete v jednotlivých častiach seriálu, nebudú obmedzené na konkrétne vývojové prostredie. Väčšina komerčných vývojových prostredí je založená na Java Development Kite od firmy Sun Microsystems (na voľné stiahnutie v poslednej verzii 1.3 na adrese http://java.sun.com/j2se/1.3). Ak nevlastníte licenciu na nijaké komerčné prostredie (ako Borland JBuilder, IBM Visual Age for Java a pod.), JDK na preklad a spúšťanie programov úplne postačuje. Azda len tie komerčné prostredia sú výrazne komfortnejšie. Ale ani v prípade, že máte prístup iba k JDK, nemusíte zúfať – na internete je k dispozícii niekoľko pomerne šikovných nadstavieb. Pre jednotnosť budem ďalej mlčky predpokladať, že používate JDK.

V prípade, že pocítite potrebu doplniť si informácie z iných zdrojov, najlepšie bude začať na oficiálnych stránkach (na adrese http://java.sun.com/docs). Okrem tohto oficiálneho zdroja existuje nespočetné množstvo ďalších stránok a diskusných skupín, ktoré sa venujú Jave. Takisto sa môžete obrátiť aj na tlačenú literatúru, tá však podlieha času a knihy prekladané z anglických či iných originálov môžu byť v čase vydania už mierne zastarané. Ak máte k dispozícii kreditnú kartu, obráťte sa priamo na niektorý zo zahraničných internetových obchodov – tak sa dajú zohnať aj najnovšie knihy s aktuálnymi informáciami. Cena bude vyššia, ale žijeme v informačnej spoločnosti a treba si zvykať, že informácie sú najdrahším obchodným artiklom.

Základné pojmy

Skôr než sa pustíme do Javy, bude vhodné ozrejmiť si niekoľko základných pojmov, s ktorými sa v tomto seriáli stretnete.

Základnou jednotkou informácie je bit. Premenná s veľkosťou jedného bitu (takisto logická alebo boolovská premenná) môže nadobúdať dva stavy: 0 a 1, resp. false a true. Postupnosť ôsmich bitov sa nazýva bajt. Historicky je bajt najmenšou adresovateľnou jednotkou počítačovej pamäte. Premenná s veľkosťou jeden bajt môže nadobúdať 28 rôznych hodnôt. Používané násobky bajtov vychádzajú z binárnej sústavy: 1 kilobajt (1 KB) = 210 bajtov, 1 megabajt (1 MB) = 220 bajtov atď. Premenné v počítačových jazykoch mávajú ďalej šírku 16 bitov (slovo), 32 bitov (dvojslovo), 64 bitov (štvorslovo). Ich rozsahy sú po rade 216, 232 a 264 rôznych hodnôt.

Pamäť počítača je postupnosť pamäťových buniek s rozsahom jedného bajtu. V moderných operačných systémoch musíme rozlišovať fyzickú pamäť, ktorá je úplne pod správou operačného systému a programy ju obyčajne neadresujú priamo, a virtuálnu pamäť, ktorú si môžeme predstaviť ako nezávislý pamäťový priestor, pridelený každému procesu, rozdelený na jednotlivé stránky. Z nich sa vo fyzickej pamäti nachádzajú len tie, ktoré proces práve používa, ostatné sú odložené na disku v stránkovacom súbore. Koncept virtuálnej pamäte umožňuje programom využívať podstatne väčšiu pamäť, ako je fyzicky k dispozícii.

Štandardný vstup a štandardný výstup sú pojmy pochádzajúce z operačného systému UNIX. Stretneme sa s nimi aj v Jave – ide o štandardné rozhrania na vstup údajov do programu a na výstup údajov z programu. Štandardný vstup je implicitne prepojený s klávesnicou, štandardný výstup smeruje na obrazovku. Obe rozhrania je možné pomocou prostriedkov operačného systému presmerovať napríklad na súbory.

Ľahký úvod do OOP

Základné pojmy sme si objasnili, všetko ostatné sa dozviete v samotnom seriáli – s jedinou výnimkou, ktorou sú princípy objektovo orientovaného programovania. Neodporúčam štúdium Javy bez minimálne základných znalostí OOP, preto si tu uvedieme aspoň fundamentálne princípy. V každom prípade, kto nemá v tejto oblasti jasno, mal by si vedomosti čo najskôr doplniť.

Paradigma OOP je založená na modelovaní objektov reálneho sveta. Objekt je v OOP základnou entitou. Charakterizovaný je svojím stavom (určeným hodnotou tzv. atribútov objektu) a svojím správaním, ktoré definuje, čo objekt dokáže robiť. Stav objektu je navonok neviditeľný – nevieme, čo ho tvorí ani ako je uložený. Toto je prvý základný princíp OOP, hovorí sa mu zapuzdrenie (encapsulation). Dôvodom ukrytia stavu objektu pred okolím je snaha zabrániť takým jeho modifikáciám, ktoré by uviedli objekt do nekonzistentného stavu.

Interakcia medzi objektmi sa realizuje pomocou posielania správ. Každý objekt dáva k dispozícii zoznam správ, na ktoré dokáže reagovať (to je to spomínané správanie objektu). Napríklad v bankovej aplikácii by mohol objekt Účet reagovať na správy „Vypočítaj úrok“, „Preveď sumu“ a podobne. Dôležité je, že iniciátor správy sa nemusí starať o to, akým spôsobom príjemca jeho správu spracuje. Príjemca sa, naopak, nestará o to, kto mu správu poslal. V súvislosti so zapuzdrením je zrejmá zjavná výhoda OOP oproti klasickému štýlu: pokiaľ je stav objektu pred svetom ukrytý a prístupné je iba komunikačné rozhranie, môžeme kedykoľvek objekt vymeniť za iný s rovnakým rozhraním. Pokiaľ sa nezmení funkčnosť objektu, okolité objekty nemusia ani len tušiť, že k nejakej výmene došlo.

Druhým dôležitým konceptom OOP je polymorfizmus. Táto vlastnosť znamená, že viacero objektov dokáže reagovať na jednu a tú istú správu, každý však inak, svojím vlastným spôsobom. Klasickým prípadom môže byť správa „Serializuj sa“. Serializácia objektu je zakódovanie jeho stavu pre uloženie napríklad do súboru, z ktorého bude v budúcnosti možné objekt rekonštruovať. Je zrejmé, že každý objekt sa bude serializovať inak; to nás však nemusí zaujímať, stačí, keď pošleme príslušnú správu všetkým objektom.

Zapuzdrenie a polymorfizmus sú naozaj základnými princípmi OOP. Bez nich by celá koncepcia stratila zmysel. Často sa však môžete stretnúť ešte s pojmami trieda a dedičnosť. Triedy sú v klasickom OOP šablónami, na základe ktorých je možné generovať nové objekty. Dôležité je, že sú to takisto objekty (lepšie povedané metaobjekty). V mnohých jazykoch (napríklad v C++, ale Java nie je výnimkou) však nie je možné vytvoriť objekt bez toho, aby sme najprv definovali jeho triedu. V takýchto jazykoch sú triedy iba jazykovými konštrukciami.

Posledný pojem – dedičnosť – predstavuje možnosť usporadúvať objekty, resp. ich triedy do hierarchických úrovní na základe vzťahu generalizácie/špecializácie. Napríklad objekt TermínovanýÚčet je špeciálnym prípadom objektu Účet, čo môžeme s úspechom využiť a v definícii objektu TermínovanýÚčet uviesť len odlišnosti oproti generickému Účtu.

Java je zameraná takmer výhradne objektovo. V niektorých oblastiach zachádza viac do hĺbky ako C++, hoci stále to nie je taký silne objektový jazyk ako napríklad Smalltalk. Ostatne, o všetkom sa budete mať možnosť presvedčiť pri sledovaní tohto seriálu.

Java: nová paradigma

Na začiatok si položme otázku, čo vlastne Java je. Odpoveď nie je triviálna. Java totiž nie je len ďalší z dlhého radu programovacích jazykov, hoci moderný a efektívny, ani módna záležitosť, vyvolaná masívnou propagáciou materskej firmy Sun Microsystems, ktorej divízia JavaSoft má vývoj Javy na starosti, a už vôbec nie zábavná technológia na vytváranie appletov s poskakujúcim textom, oživujúcim až donedávna statické webové stránky. Nie, Java je komplexná platforma pre vývoj a beh širokého spektra aplikácií v heterogénnom sieťovom prostredí.

História Javy je pomerne krátka. Začiatkom 90. rokov zatiaľ ešte tohto storočia skupina výskumných pracovníkov vo firme Sun Microsystems pracovala na projekte vývoja univerzálneho softvéru slúžiaceho na riadenie a programovanie sieťových zariadení a tzv. vnorených systémov (embedded systems), ako napr. čipy v mikrovlnkách, mobilných telefónoch, spotrebnej elektronike a pod. Výskumníci pôvodne rátali s použitím programovacieho jazyka C++, čoskoro však usúdili, že tento jazyk je na ich účely príliš zložitý, nejednoznačný a nespoľahlivý. Krátko nato uzrel svetlo sveta ich vlastný produkt, nazvaný jednoducho Oak. Tvrdí sa, že jeho názov má na svedomí dub, ktorý rástol pred oknami pracovne vedúceho projektu Jamesa Goslinga.

Celý projekt tak trochu predbehol svoju dobu a zrejme by upadol do zabudnutia, nebyť razantného nástupu internetu v roku 1995. Vtedy pán Gosling vycítil, že jeho jazyk je ideálny na použitie v heterogénnych sieťových prostrediach, ako je aj internet. Spolu s výskumnou skupinou pripravili koncept univerzálnej programovacej platformy, orientovanej na sieťové prostredie a nezávislej od použitého hardvéru či operačného systému. Platforma a programovací jazyk dostali názov Java, podľa jednej z historiek vraj preto, lebo ľudia, ktorí majú Javu „na svedomí“, s obľubou pijú kávu (java je americký slangový výraz pre kávu).

Prvá verzia Javy s označením 1.0 obsahovala knižnicu tried pozostávajúcu zo siedmich základných balíkov, ktoré pokrývali najdôležitejšie oblasti použitia, ako práca s reťazcami, matematické funkcie, sieťové funkcie, práca s grafikou a pod. K jej rozšíreniu prispela jednak jej voľná licencia – vývojové prostredie na tvorbu javovských aplikácií Java Development Kit bolo k dispozícii zadarmo –,  jednak vytvorenie webového prehliadača HotJava, ktorý ako prvý umožňoval prehliadanie stránok s vloženými mikroaplikáciami, tzv. appletmi (mimochodom, celý bol napísaný v Jave). Applety poskytovali nevídanú mieru interaktivity na dovtedy statických webových stránkach, a preto nečudo, že podporu technológie Java v rýchlom slede ohlásili aj výrobcovia dvoch najznámejších webových prehliadačov, spoločnosti Netscape a Microsoft.

Už v roku 1997 firma Sun uvoľnila ďalšiu verziu Javy s označením Java 1.1. V špecifikácii jazyka došlo k niekoľkým drobným, ale užitočným zmenám, najväčšie rozšírenie však podstúpila knižnica tried. Počet balíkov sa rozšíril zo siedmich na dvadsaťdva – pribudla lepšia podpora grafiky, možnosť práce s komprimovanými súbormi, s databázami, bezpečnostné funkcie, podpora distribuovaných aplikácií a predovšetkým koncept tzv. Java Beans (zapuzdrené komponenty, niečo ako ActiveX).

Vývoj Javy sa však nezastavil. V priebehu posledných rokov počiatočné nadšenie zo strany tvorcov webových stránok, ktoré sa prakticky prejavovalo tým, že na javovský applet ste narazili pomaly na každej druhej stránke, našťastie opadlo a Java sa postupne pretransformovala na reálne použiteľnú technológiu. Najnovšia verzia Javy s marketingovým označením Java 2 Platform predstavuje skutočne komplexnú programovaciu platformu, mimoriadne vhodnú na nasadenie v heterogénnych podnikových aplikáciách a intranetoch, umožňujúcu úplnú sieťovú interoperabilitu a beh distribuovaných aplikácií podľa súčasných štandardov.

Platformu Java 2 firma Sun pomyselne delí do troch vetiev: Java 2 Standard Edition, Java 2 Enterprise Edition a Java 2 Micro Edition. V seriáli Java pod lupou sa budeme zaoberať prvou vetvou, J2SE, ktorá predstavuje plnohodnotnú platformu pre vývoj desktopových aplikácií, poskytujúcu všetky črty verzie 1.1 s niekoľkými podstatnými zlepšeniami v oblasti používateľského rozhrania, práce so zvukom, podpory distribuovaných aplikácií a transakčného spracovania. Druhá vetva, J2EE, zahŕňa oproti J2SE technológie určené na nasadenie v prostredí podnikových aplikácií, ako Enterprise Java Beans, Java Server Pages a pod. O tejto vetve si azda povieme niečo viac v budúcnosti. Konečne tretia vetva, J2ME, je určená pre zariadenia ako vreckové počítače či mobilné telefóny.

Na stránkach JavaSoftu nájdete okrem týchto troch hlavných vetiev množstvo špecifikácií ďalších technológií súvisiacich s Javou, ktoré však tak trochu presahujú rámec nášho seriálu, a preto sa nimi zaoberať nebudeme. Kto má o ne záujem, môže si príslušné informácie vyhľadať na internete.

Charakteristika Javy

V oficiálnom opise The Java Language Environment (nájdete ho na adrese http://java.sun.com/docs/white/langenv) je Java výstižne charakterizovaná množinou adjektív. I keď ich zoznam pôsobí ako zbierka typických marketingových „buzzwords“, prekvapivo dobre vystihujú podstatné vlastnosti Javy:

  • Java je jednoduchá. Jednou z najväčších nevýhod jazykov ako C++ je ich zložitosť. Isto mi dáte za pravdu, že na dokonalé zvládnutie C++ potrebujete mať pomerne rozsiahle vedomosti a dostatočne dlhú prax a vaša cesta k poznaniu bude dláždená neuveriteľným množstvom chýb, ktoré stvoríte. Práve preto bola Java od začiatku navrhovaná tak, aby vaša krivka učenia bola pokiaľ možno čo najstrmšia a aby vás netrafil šľak skôr, než niečo užitočné vyprodukujete. Autori jazyka pri návrhu Javy vychádzali z existujúcich objektovo orientovaných jazykov (C++, Smalltalk, Objective C, Eiffel a pod.), z ktorých systematicky odstraňovali príliš zložité črty, až dospeli ku konečnému, minimalistickému stavu. Java je skutočne ukážkovým príkladom jednoduchého a pritom dostatočne výkonného jazyka.
  • Java sa vám bude zdať známa. Neoddiskutovateľnou prednosťou Javy je jej príbuznosť s C++ – program v Jave vyzerá na pohľad takmer ako program v C++, a ak aspoň trochu ovládate C++, nemali by ste mať so zvládnutím Javy žiadne problémy. Java používa podobné údajové typy, operátory, jazykové konštrukcie i príkazy. Na rozdiel od C++ však oslobodzuje programátora od pamätania si komplikovaných pravidiel, od dodržiavania správnych postupov (napr. pri alokácii a uvoľňovaní pamäte), odstraňuje mnohé síce užitočné, ale pri nesprávnom použití nebezpečné konštrukcie a predovšetkým nepozná ukazovatele, čo je zrejme najčastejšia príčina chýb v programoch C++. Ako niekto priliehavo poznamenal, Java je C++ s menej povrazmi, na ktorých by sa programátor mohol obesiť. Kruté, ale pravdivé.
  • Java je objektovo orientovaná. Dnes hádam ani netreba zdôrazňovať, že klasický procedurálny a funkcionálny spôsob návrhu aplikácie je prežitok. Objektovo orientovaná analýza, návrh a programovanie vedú k prehľadnejšej štruktúre, lepšej orientácii v programe a k menšej náchylnosti na výskyt chýb. Samozrejme, OO prístup nie je zázračný prútik, ktorého mávnutím nám pod rukami vykvitne perfektná a bezchybná aplikácia. Jeho výhoda je v snahe o napodobenie objektov reálneho sveta, ich stavu a správania – takýto spôsob tvorby softvéru je nám rozhodne bližší ako úporné, procedurálne napodobovanie „myslenia“ počítača. Java podporuje prakticky všetky dôležité princípy OO programovania – zapuzdrenie stavu objektov a jeho ukrytie pred vonkajším svetom, komunikáciu medzi objektmi pomocou správ (ktoré majú za následok vyvolanie príslušných metód objektov), polymorfné správanie objektov, teda rôznu reakciu rôznych objektov na jednu a tú istú správu, triedy (iba ako jazykové konštrukcie, a nie ako plnohodnotné runtimeové metaobjekty), jednoduchú dedičnosť (na simuláciu viacnásobnej dedičnosti slúžia tzv. rozhrania). Podpora OO paradigmy v Jave úzko súvisí s jej orientáciou na sieťové prostredia a distribuované aplikácie.
  • Java je architektonicky nezávislá. Pri klasickom spôsobe vývoja aplikácií musí softvérový výrobca vytvoriť osobitnú verziu aplikácie pre každú podporovanú platformu a neraz aj pre každý podporovaný operačný systém. Tento prístup je nesporne časovo aj finančne náročný, nehovoriac o nutnosti vyrovnávať sa so špecifikami jednotlivých platforiem. Java vám ponúka šalamúnske riešenie nezávislosti od konkrétneho prostredia: javovské programy nie sú v binárnej forme zložené z natívnych inštrukcií toho-ktorého procesora, ale z inštrukcií tzv. bajt-kódu, platformovo nezávislého inštrukčného súboru. Medzi hardvérom/softvérom príslušnej platformy a programom v Jave leží vrstva tzv. virtuálneho počítača (Java VM), ktorý dokáže inštrukcie bajt-kódu interpretovať. Javovský program je tak možné spustiť na ľubovoľnej platforme, pre ktorú existuje javovský virtuálny stroj. Softvérovému výrobcovi zo začiatku tohto odseku potom stačí vytvoriť jedinú verziu aplikácie, ktorú bude možné spustiť všade. Pre tento koncept má firma Sun obľúbené heslo: „Write Once, Run Everywhere.“
  • Java je portabilná. Možno máte dojem, že portabilnosť Javy je priamym dôsledkom jej architektonickej nezávislosti. Je za tým však ešte niečo viac: v špecifikácii napríklad C++ je mnoho vecí definovaných ako implementačne závislé. Niečo také v Jave nenájdete. Všetky údajové typy majú presne stanovený rozsah, všetky jazykové konštrukcie sa správajú za každých okolností rovnako, nezávisle od konkrétnej implementácie virtuálneho stroja. Okrem toho pôvodný sunovský virtuálny stroj je napísaný v ANSI C a je maximálne portabilný v zmysle štandardu POSIX.
  • Java je robustná a spoľahlivá. Oproti jazykom ako C++ má Java oveľa prísnejšiu syntax, takže mnoho potenciálnych zdrojov chýb je odstránených už počas fázy prekladu zdrojových textov. Kontrola binárnych tried pokračuje aj vo fáze behu programu. Klasické linkovanie, ako ho poznáme z iných jazykov, sa deje dynamicky, v okamihu, keď je tá-ktorá trieda potrebná. Javovský virtuálny stroj počas behu kontroluje správnosť a konzistentnosť načítavaných tried, správnosť typov parametrov volaných metód a podobne. Iným veľkým rozdielom Javy oproti C++ je neporovnateľne robustnejšia správa pamäte. V Jave sa nemôže stať, že budete pristupovať k nejakej oblasti pamäte iným ako povoleným spôsobom, okrem toho uvoľňovanie nepotrebných objektov z pamäte je automatické, čím sa eliminujú klasické memory-leak problémy.
  • Java je interpretovaná. Bohužiaľ, chcelo by sa mi povedať. V podstate každý program je počas behu interpretovaný – klasické natívne programy sú však interpretované priamo procesorom. Javovské programy vzhľadom na prítomnosť vrstvy virtuálneho stroja musia byť interpretované softvérovo. (Objavujú sa síce správy o dedikovanom hardvéri, na ktorom bude môcť bežať program v Jave priamo, ale zatiaľ sme nič podobné nevideli.) Softvérová interpretácia má však podstatnú nevýhodu – je jednoducho pomalšia. Našťastie procesory sú čoraz rýchlejšie a virtuálne stroje stále efektívnejšie, takže táto nevýhoda Javy sa dá ako-tak stráviť.
  • Java je dynamická. Ako bolo povedané, pri vývoji aplikácií v Jave sa klasická linkovacia fáza odkladá až do okamihu, keď je príslušná trieda naozaj potrebná. Kompilátor všetky odkazy na triedy ukladá nie v binárnom, číselnom tvare, ale v symbolickom, mennom. Znamená to okrem iného, že pri zmene definície jednej triedy nie je nevyhnutné opätovne prekladať zdrojové súbory všetkých tých tried, ktoré so zmenenou triedou pracujú. Dokonca je v princípe možné vymeniť binárny súbor s definíciou triedy aj za behu aplikácie, ak táto trieda dosiaľ nebola načítaná. Používané triedy môžu byť naťahované z lokálneho systému, ale aj z akéhokoľvek miesta dostupného cez sieť (presne takto sa správajú applety vo webových stránkach). Poslednou veľkou výhodou je, že triedy v Jave majú svoju vlastnú run-time reprezentáciu, takže je možné za behu programu zisťovať typ akéhokoľvek objektu, dokonca možno vytvoriť inštanciu triedy, ktorej názov bude známy až počas behu programu.
  • Java je bezpečná. Vzhľadom na predpokladané použitie Javy v implicitne nezabezpečených sieťových prostrediach  pri jej návrhu sa kládol veľký dôraz na bezpečnostné opatrenia znemožňujúce potenciálne zneužitie existujúceho kódu na iné ako predpokladané účely. Prvým, pomerne dôležitým predpokladom je samotný pamäťový model Javy. Programátor v zásade nikdy nevie, kde a akým spôsobom sú v pamäti uložené jednotlivé inštancie tried a aká je ich vnútorná reprezentácia. Keďže v Jave neexistujú ukazovatele, nemáte nijakú možnosť pristupovať do ľubovoľnej, explicitne určenej oblasti pamäte. Ďalším ochranným prvkom je mechanizmus načítavania tried (tzv. class loader). Ten zabezpečí, že nie je možné štandardné triedy, ktoré sa vždy nachádzajú na lokálnom systéme, nahradiť podvrhnutými verziami, načítavanými zo siete. Okrem toho každá načítaná trieda prejde dôslednou kontrolou bajt-kódu, ktorá nekorektné, nebezpečné či inak neakceptovateľné triedy jednoducho odmietne načítať. Dôležité je, že táto kontrola sa vykonáva iba raz, pri načítavaní triedy a počas behu programu sa interpret Javy nemusí zdržovať napríklad kontrolou zásobníka, typov operandov a podobne.
  • Java podporuje multithreading. Dnes už hádam netreba vysvetľovať výhody multithreadingu. Ak vám toto slovo nič nehovorí, tak ide o možnosť existencie viacerých threadov (vykonávacích vlákien) v rámci jedného procesu. Všetky thready zdieľajú adresný priestor a prostriedky materského procesu, len z hľadiska plánovača procesov vystupujú ako samostatné plánovateľné entity, to značí, že súťažia o procesor. Výhoda threadov je nesporná – klasickým príkladom môže byť textový procesor. V jednom z threadov editujete dokument, druhý má na starosti napríklad prekresľovanie obrazovky, ďalší tlačenie a ešte ďalší sa môže starať napríklad o kontrolu pravopisu. Procesor je využívaný oveľa efektívnejšie a program vykazuje lepší ohlas. Java je jeden z mála jazykov, ktorý zahŕňa podporu multithreadingu na úrovni jazyka. Priamo pomocou príslušnej triedy a jej metód je možné vytvárať, spúšťať i zastavovať jednotlivé thready. Tieto thready sú v závislosti od použitej hardvérovej a softvérovej platformy úplne preemptívne. V multithreadovom prostredí je tiež nevyhnutná prítomnosť synchronizačných prostriedkov. Java obsahuje podporu pre monitory (vzájomné vylučovanie pre prístup k triede) a pre podmienené premenné (conditional variables).

Prvý program

Máme teda vytvorenú predstavu o tom, čo Java je, aké má vlastnosti a ako zhruba funguje. Aby bola prvá časť seriálu úplná, ukážeme si ešte na záver azda najjednoduchší program, aký sa v Jave dá napísať. Tradície neradno rušiť, preto program vypíše na konzolu obligátny text „Hello, world!“:

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

Program si pravdepodobne budete chcieť vyskúšať. Prepíšte ho teda do súboru, ktorý musíte pomenovať HelloWorld.java. Preklad spustíte najlepšie v konzolovom okne/DOS boxe zadaním riadka javac HelloWorld.java, po jeho skončení v aktuálnom adresári pribudne súbor HelloWorld.class. To je súbor s binárnym bajt-kódom vytvorenej triedy HelloWorld. Spustíte ho jednoducho – zadaním riadka java HelloWorld (obr. 1). V prípade, že používate JDK 1.3, je možné, že budete musieť do premennej prostredia CLASSPATH pridať cestu k aktuálnemu adresáru, čo je znak . (bodka). Neviem síce prečo, v predchádzajúcich verziách to nebolo potrebné, ale v operačných systémoch Windows 2000 ani Windows NT (iné som netestoval) bez tejto úpravy nijaký javovský program nespustíte.

(Poznámka: V operačných systémoch Windows 2000/NT sa premenné prostredia definujú v Control paneli, v applete System. V operačných systémoch Windows Me/9x treba pridať príslušný riadok do súboru autoexec.bat.)

Nabudúce

Dúfam, že vás nový seriál zaujal a že mi budete venovať pozornosť aj v ďalších pokračovaniach. Nabudúce si bližšie povieme o tom, ako vyzerajú zdrojové súbory v Jave, ako sa program prekladá a spúšťa, a začneme hovoriť o definícii tried a ich obsahu. Dovtedy dovidenia.

 

 

 


Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

Ako na to

Tipy a triky: Ako na snímku obrazovky na akomkoľvek počítači s Windows?

02.12.2016 00:13

Ak snímky obrazovky robíte často apotrebujete napríklad funkcie na posun stránok alebo snímanie zobrazenia pri vyššom rozlíšení displeja, zrejme používate nejakú špecializovanú aplikáciu. Väčšina použ ...

Ako na to 1

Tipy a triky: Ako aplikácii prednastaviť spúšťanie s administrátorskými právami?

30.11.2016 00:10

Väčšina aspoň trochu skúsenejších používateľov vie, že aj keď máte na operačnom systéme Windows vytvorený administrátorský účet, aplikácie pre bezpečnosť nefungujú vždy splnými administrátorskými práv ...

Ako na to 2

Tipy a triky: Ako vypnúť uzamykaciu obrazovku vo Windows 10?

29.11.2016 00:10

Rozčuľuje vás, že pred každým prihlásením doúčtu vášho počítača musíte prejsť uzamykacou obrazovkou? Windows 10 na tejto obrazovke ukazuje čas,dátum anejakú zaujímavú fotografiu zrôznych kútov sveta. ...

Žiadne komentáre

Vyhľadávanie

Kyocera - prve-zariadenia-formatu-a4-s-vykonom-a3

Najnovšie videá