Tallinna Pedagoogika likool Informaatika osakond Jaagup Kippar Veebiprogrammeerimise terviklik k sitlus Magistrit Juhendaja: Peeter Normak Tallinn 2002 Sisukord TOC \o "1-3" Sisukord PAGEREF _Toc10024031 \h Sissejuhatus PAGEREF _Toc10024032 \h Aktuaalsus PAGEREF _Toc10024033 \h Eesm rgid PAGEREF _Toc10024034 \h levaade t sisust. PAGEREF _Toc10024035 \h 1 Veebiprogrammeerimise varasemad ppematerjalid PAGEREF _Toc10024036 \h 1.1 levaade PAGEREF _Toc10024037 \h 1.1.1 HTML PAGEREF _Toc10024038 \h 1.1.2 Javaskript PAGEREF _Toc10024039 \h 1.1.3 PHP PAGEREF _Toc10024040 \h 1.1.4 ASP PAGEREF _Toc10024041 \h 1.1.5 Aruvutiv PAGEREF _Toc10024042 \h 1.1.6 XML PAGEREF _Toc10024043 \h 1.1.7 VRML PAGEREF _Toc10024044 \h 1.1.8 PERL PAGEREF _Toc10024045 \h 1.1.9 Java PAGEREF _Toc10024046 \h 1.2 Uudisgrupid PAGEREF _Toc10024047 \h 1.3 J ri Kiho. Java programmeerimise aabits PAGEREF _Toc10024048 \h 1.3.1 Algus PAGEREF _Toc10024049 \h 1.3.2 Kasutajas bralik lesehitus PAGEREF _Toc10024050 \h 1.3.3 Objektid PAGEREF _Toc10024051 \h 1.3.4 N ited PAGEREF _Toc10024052 \h 1.3.5 lesanded PAGEREF _Toc10024053 \h 1.3.6 S ned ja failid PAGEREF _Toc10024054 \h 1.3.7 Kogumid PAGEREF _Toc10024055 \h 1.3.8 Mullivann PAGEREF _Toc10024056 \h 1.3.9 Tagasivaatav rekursioon PAGEREF _Toc10024057 \h 1.4 Ivor Horton. Beginning Java 2 PAGEREF _Toc10024058 \h 1.4.1 Avastuslugu PAGEREF _Toc10024059 \h 1.4.2 Algus PAGEREF _Toc10024060 \h 1.4.3 Tekstip hine sisu PAGEREF _Toc10024061 \h 1.4.4 Graafiline kasutajaliides PAGEREF _Toc10024062 \h 1.4.5 Indeks PAGEREF _Toc10024063 \h 1.5 Ildar Habibullin. Samoutsitel Java PAGEREF _Toc10024064 \h 2 TP veebikursus: materjalid ja anal PAGEREF _Toc10024065 \h 2.1 Java p hikursuse konspekt PAGEREF _Toc10024066 \h 2.1.1 Tutvus programmeerimiskeelega PAGEREF _Toc10024067 \h 2.1.2 Objektid programmeerimisel PAGEREF _Toc10024068 \h 2.1.3 Erindid PAGEREF _Toc10024069 \h 2.1.4 Graafika PAGEREF _Toc10024070 \h 2.1.5 Vood, failid PAGEREF _Toc10024071 \h 2.1.6 Internet PAGEREF _Toc10024072 \h 2.1.7 HTTP server PAGEREF _Toc10024073 \h 2.1.8 L imed PAGEREF _Toc10024074 \h 2.1.9 Tr kkimine PAGEREF _Toc10024075 \h 2.1.10 Muusika PAGEREF _Toc10024076 \h 2.1.11 Graphics2D PAGEREF _Toc10024077 \h 2.1.12 Swing PAGEREF _Toc10024078 \h 2.1.13 Andmed Javas PAGEREF _Toc10024079 \h 2.1.14 Dokumenteerimine PAGEREF _Toc10024080 \h 2.1.15 Installeerimine PAGEREF _Toc10024081 \h 2.1.16 Tutvustusn ited PAGEREF _Toc10024082 \h 2.2 Java j tkukursuse konspekt PAGEREF _Toc10024083 \h 2.2.1 Java3D PAGEREF _Toc10024084 \h 2.2.2 Rekursiivne joonistamine PAGEREF _Toc10024085 \h 2.2.3 Maatriksarvutused PAGEREF _Toc10024086 \h 2.2.4 Joonistamine PAGEREF _Toc10024087 \h 2.2.5 Pildit tlus PAGEREF _Toc10024088 \h 2.2.6 Turvalisus PAGEREF _Toc10024089 \h 2.2.7 Andmebaas PAGEREF _Toc10024090 \h 2.2.8 L hiteemad PAGEREF _Toc10024091 \h 2.2.9 Muusika PAGEREF _Toc10024092 \h 2.3 Javaskripti konspekt PAGEREF _Toc10024093 \h 2.3.1 Pildid PAGEREF _Toc10024094 \h 2.3.2 Objektid PAGEREF _Toc10024095 \h 2.3.3 Regulaaravaldised PAGEREF _Toc10024096 \h 2.3.4 Kihid PAGEREF _Toc10024097 \h 2.3.5 Andmed PAGEREF _Toc10024098 \h 2.3.6 Edasiarendusv imalused PAGEREF _Toc10024099 \h 2.4 Veebiprogrammeerimise lesannete kogu PAGEREF _Toc10024100 \h idete koostamise ja esitamise p tted. PAGEREF _Toc10024101 \h 3.1 L hikesed n ited PAGEREF _Toc10024102 \h 3.2 N idete seeriad PAGEREF _Toc10024103 \h 3.3 Kommentaarid PAGEREF _Toc10024104 \h 3.4 N idete valimine PAGEREF _Toc10024105 \h 3.5 N idete k ttesaadavus PAGEREF _Toc10024106 \h 3.6 N iteks l ik t tavat koodi PAGEREF _Toc10024107 \h 3.7 N idete paigutamine veebis PAGEREF _Toc10024108 \h 3.7.1 Dubleerivad viidete lehed PAGEREF _Toc10024109 \h 3.7.2 M nad PAGEREF _Toc10024110 \h 3.7.3 T istekstiotsing PAGEREF _Toc10024111 \h 3.8 Kokkuv PAGEREF _Toc10024112 \h pimudelid ning -teed PAGEREF _Toc10024113 \h 4.1 Java programmeerimiskeele alg petus PAGEREF _Toc10024114 \h 4.1.1 Konkreetsed operatsioonid PAGEREF _Toc10024115 \h 4.1.2 K sureamatemaatika PAGEREF _Toc10024116 \h 4.1.3 K sureagraafika PAGEREF _Toc10024117 \h 4.1.4 Mitmek lgsed rakendid PAGEREF _Toc10024118 \h 4.1.5 JSP p hine PAGEREF _Toc10024119 \h 4.1.6 Servlettide p hine PAGEREF _Toc10024120 \h 4.2 Edasij udnute koolitus PAGEREF _Toc10024121 \h 4.2.1 Grupiviisiline probleemilahendus PAGEREF _Toc10024122 \h 4.2.2 L imitud materjal PAGEREF _Toc10024123 \h 4.2.3 Mitmetasemelised lesanded PAGEREF _Toc10024124 \h 4.3 Veebiprogrammeerimise kursuste komplekte PAGEREF _Toc10024125 \h 4.3.1 Kliendirakenduste programmeerija PAGEREF _Toc10024126 \h 4.3.2 Laia profiiliga veebiprogrammerija PAGEREF _Toc10024127 \h 4.3.3 Andmebaaside veebiliideste programmeerija PAGEREF _Toc10024128 \h 4.3.4 Veebilehtede koostaja PAGEREF _Toc10024129 \h 4.4 ppematerjalide kasutajad PAGEREF _Toc10024130 \h 4.4.1 TP informaatikatudengid PAGEREF _Toc10024131 \h 4.4.2 Informaatika k rvalainena PAGEREF _Toc10024132 \h 4.4.3 Eesti ldhariduskoolid PAGEREF _Toc10024133 \h 4.4.4 Arvutifirmad ja programmeerijad PAGEREF _Toc10024134 \h 4.4.5 Eesti teised likoolid ning rakendusk rgkoolid PAGEREF _Toc10024135 \h 1.1.6 Abimaterjalid l hikursuslastele PAGEREF _Toc10024136 \h 1.1.7 V lismaised kasutajad PAGEREF _Toc10024137 \h 1.1.8 Ise ppijad PAGEREF _Toc10024138 \h Kokkuv PAGEREF _Toc10024139 \h Summary PAGEREF _Toc10024140 \h Kasutatud allikad PAGEREF _Toc10024141 \h Lisa 1: Java p hikursuse konspekt (127 lk) Lisa 2: Java j tkukursuse konspekt (108 lk) Lisa 3: Javaskripti konspekt (47 lk) Lisa 4: N idete kogu (1000 tk) Lisa 5: lesannete kogu (68 lk) Lisad on k ttesaadavad veebiaadressil http://minitorn.tpu.ee/~jaagup/kool/java/ Sissejuhatus Aktuaalsus Alates heksak mnendatest aastatest on veebi osat htsus arvutimaailmas ning arvutite osa igap evaelus h ppeliselt kasvanud ning koos sellega suurenenud ka veebiprogrammeerimise t htsus nii tervikuna kui kogu koodikirjutamisega v rreldes. [51] Ehkki tehnilised v imsused on pea iga kahe aasta j rel kahekordistunud, kulub programmeerimisviljakuse kahekordistumiseks enam kui k mme aastat. Seet ttu kipub rakenduste kavandamine ja kirjutamine ha enam kitsaskohaks j ma [51]. Veebiprogrammeerimist puudutavaid kirjutisi ja kursusi on viimaste aastate jooksul loodud mitmeid, kuid enamik neist on keskendunud kitsale teemale v i vahendile ning ksikud osad on j nud omavahel sidumata. Samuti on ppe maht j nud v iksemaks kui vajadus vastavate oskustega inimeste j rele. Kui Eestimaa inimestes tekitada huvi veebiprogrammeerimise vastu ning pakkuda teadmisi ja oskusi, aitab see parandada infotehnoloogilist suutlikkust ning seega ka Eesti konkurentsiv imet maailmaturul; see omakorda muudab siinse elu paindlikumaks ja h lpsamaks. K esolev magistrit ab seda saavutada. Eesm rgid Anal sida eestikeelseid ning Eestis kasutatavaid veebiprogrammeerimise materjale ja metoodikaid. Kavandada veebiprogrammeerimise ppimiseks terviklik ppekursus Koostada loodud kursuse toetamiseks vajalik ppematerjalide kogu Piloteerida loodud kursus ning selle p hjal viimistleda metoodika ja ppematerjalid levaade t sisust. Magistrit koosneb anal tilisest osast ning viiest lisast. Kaks esimest lisa on kumbki Java he kursuse terviklik konspekt. Kolmas on arvestatud kasutamiseks veebiprogrammeerimise kursuse Javaskripti-teemalise abimaterjalina. Neljandaks on n ited, millest peaks abi ja ideid leidma veebiprogrammeerimisega seotud tehniliste probleemide korral. Viimane osa pakub nii petajale kui ise ppijale lahendamist v rivaid mitmetasemelisi lesandeid. Anal tilises osas antakse levaade olemasolevatest veebiprogrammeerimise ppematerjalidest. L hemalt k sitletakse ning v rreldakse k esoleva magistrit igus valminud materjaliga kolme Java pikut: eesti, inglise ning venekeelset. k esoleva t autori arvates selleteemalist parimat raamatut. J rgnevalt tutvustatakse koostatud materjalide loomisp tteid ja ootusi peat kkide kaupa. Edasi anal sitakse n idete koostamist ja esitamist, p hjendatakse praegust valikut ning pakutakse edasiarendusv imalusi. Siis vaadeldakse koostatud ppematerjalide eeldatavaid sihtgruppe: kellele on loodud konspektid otseselt m eldud ning kes neist kaudselt kasu saavad. Mitmeid kordi sarnaseid teemasid petades on tekkinud seosed, millised ppet kkide kombinatsioonid paremini kokku sobivad ning millised mitte. Teemade paigutust alg ppes olen teadlikult testinud ja j lginud ning ppijate omadusi arvestavad paremini sobivad tervikud on siin v lja toodud. Edasi on kombinatsioonid kokku pandud k rgemal ehk kursuste tasemel ning v lja toodud neli edukalt toimivat veebiprogrammeerimise kursuse komplekti. Veebiprogrammeerimise varasemad ppematerjalid levaade Veebiprogrammeerimise materjali on veebis ja tr kitud raamatutena ilmunud nii eesti kui v rkeeltes. On millele toetuda. Hulk vajalikke teemasid on juba kaetud ning ppija v ib mitmed veebiprogrammeerimise oskused sealt leida. K esolevas t takse eestikeelsetest materjalidest anda t ielik levaade. V rkeelsetest tutvustatakse m ningaid siinseid materjale t iendavaid allikaid. ppematerjale on koostatud nii lahendatavate probleemide [7][39] kui ka kasutatavate vahendite [8][61][25] kaupa. L puks peab ppija paratamatult j udma tasemele, kust lahendatava lesande jaoks sobivad vahendid/keeled leida. Vahendi terviklikku levaadet on enamasti kergem anda kui v imaliku l pmatu hulga veebiprogrammeerimisega seotud probleemide lahendamiseks kasutatavat ammendavat algoritmi. Suurem osa koostatud materjale on vahendikesksed. Selline jaotus paneb ppet biviijale kohustuse petust tasakaalustada ning hoolitseda, et pilane suudaks teemat haarata laiemalt kui pikus k sitletud. HTML HTML on heksak mnendate aastate keskelt alates olnud veebiprogrammeerijale h davajalik selgeks ppida ning neid oskusi kasutatakse veel v hemalt paar aastat, enne kui XHTML v ni muu keel selle asemele asub [76]. Aastate jooksul on j utud HTMLi kohta kirjutatud k mnetest eestikeelsetest tutvustustest m rkimisv rne osa on v ljas NETI lehel [7]. Tartu likoolis on aastaid traditsioonilise ppematerjalina kasutatud Andres Jaegeri lihtsa ja loogilise lesehitusega konspekti [25]. Tallinna Pedagoogika likoolis on veidi p hjalikuma konspekti koos soovitustega kokku pannud Kaja Trees [73]. HTMLi elementide ammendava eestikeelse kirjelduse v ib leida [59] Raamatutest kasutatakse [61], Kaido Kikkase l hijuhendit [34] ning Alo Linntamme [39]. CSS-kujunduse poolt sobib lugeda Hans P ldoja kirjutist [52]. P hjalikuma veebilehtede koostamise, struktureerimise ja kujundamise levaate on sama autor andnud oma proseminarit s [53]. rkeelsed h lpsamini kasutatavad ppematerjalid on Netscape HTML-guide [4] ning w3schools'i HTML-i osa [77]. Kui tekib keerulisemaid probleeme v i arusaamatusi, siis tasub p hjalikumalt uurida w3 konsortsiumi [76] standardit. Samuti v imaldab sealt ligip setav programm (validator) oma lehti standardile vastavuse suhtes kontrollida. K llalt korralik kirjalik allikas on Danny Goodmani Dynamic HTML [10], kus on lisaks ldisele asjalikule tutvustavale jutule l bi k idud nii HTML-i kui DOMi konstruktsioonid. Keerulisemad elemendid on varustatud asjakohase seletuse ja n itega ning teatatakse, millised seilurid milliste vahenditega paremini hakkama saavad ja kus v ib raskusi tekkida. Veebikujunduse osas seletatakse n idete varal, mida veebisaidi loomisel arvestada ning millest hoiduda [9]. Peale ldisi soovitusi on selles raamatus l bi v etud mitut t pi veebisaidid (haridus, kaubandus, andmekogu) ning osutatud, kuidas on v imalik selles vallas edukat veebi koostada. Tehnilised ksikasjad on paigutatud lisasse, kuid on seal tihedalt ja arukalt esitatud. Javaskript Javaskripti petavaid veebilehti ja raamatuid on arvukalt. Selle keele heaks omaduseks on v imalus vaadata t tavatel lehtedel olevat koodi ning siis omi koodil ike koostada nii nagu HTMLigi puhul. Korralik k llalt terviklik Javaskripti petus on koostatud Netscape poolt [44]. Samas leidub ka s stemaatiline Javaskripti dokumentatsioon. Eestikeelsete Javaskripti pikute autorid on Ilse Sinivee [61] ja Alo Linntamm [39]. V rkeelsetest sobib alg petuseks lugeda Michael Moncur'i Teach Yourself Javascript in 24 Hours [42]. D naamiliste veebilehtede koostamisel on heaks abiliseks Nick Heinle Designing with JavaScript [19], milles l htutakse enamasti kliendi vajadustest, mitte keele loogikast. Lugemise ja j releproovimise jooksul saab selgeks hulk p desid ja nendel tuginevaid vajalikke v tteid. PHP on praegu t oliselt levinuim keel Eestis lihtsamate ja kesktaseme veebirakenduste koostamiseks. Selle ppimiseks v ib leida Kaja Treesi diplomit na tehtud kirjutise " petusi algajale veebiprogrammeerijale" [74], samuti www.php.ee alt nii petusi, soovitusi kui foorumi, kust enesele vajalikku teavet otsida ja k sida. [49]. PHP ametliku dokumentatsiooni ja muude materjalide peegeldus Eestis [50] sisaldab tervikliku k skude kirjelduse koos lihtsate ja selgelt m istetavate juhenditega. Samuti leiab sealt tarkvara enesele installeerimiseks. ASP ehk Microsofti poolt v lja pakutud veebiprogrammeerimise tehnoloogia aluseid k sitleb Aulis Sibola diplomit [60], mille p hjal on v ikeste lisanduste ja suurte k rbetega koostatud [30]. S gavuti minnes tuleb leppida v rkeelsete materjalidega. M ningast abi v ib leida siinse t autori koostatud n idete kogust (Lisa 4). K mnetest ASP-d petavatest lehek lgedest tunduvad parimad [3] ning [23]. S stemaatilise dokumentatsiooni ning petuse leiab Microsofti lehek ljelt [41]. Aruvutiv Veebiprogrammeerimise juures on kasulik m ista ka arvutiv rgu toimimise t tteid ning v imalikke turvariske. Selleteemalise k llalt p hjaliku seletuse v ib leida Tiigrih ppe poolt koostatud CD-de Linuxi-osas [79]. Samuti on loengukonspekti koostanud Jaanus P ial [55] ning teavet leiab veebisaidilt [83]. XML t otab l hiaastatel saada levinuimaks veebisiseseks andmevahetuskeeleks. Selle alused leiduvad Liivi Haameri proseminarit s [13], samuti w3 konsortsiumi petuste lehel [77]. P hjalikumalt k sitletakse XSL-i abil andmete muundamist [12]. VRML Kolmem tmelisi t tavaid mudeleid veebilehele annab k llalt h lpsasti koostada VRML-i abil. K llalt p hjaliku ning n idetega varustatud petuse leiab [82]. VRML-i alg petuse ja levaate mitmetest veebist k ttesaadavatest materjalidest koostas proseminarina TP s Dimitri Norden [45]. PERL PERL on aastaid olnud CGI-programmide juures levinuimaks keeleks. Kasutamisk lblikud algteadmised v ib eesti keeles k tte saada Kaido Halliku [17] v i Marko Murulaugu petustest [43]. S stemaatiline dokumentatsioon asub keele kodulehel [47]. Java Java kohta on alates selle avalikust v ljakuulutamisest 1996ndal aastal ilmunud mitmeid materjale nii v r- kui eesti keeles. Esimeseks tuntud ppematerjaliks said 1997. a. s gisel Toomas Lepikult i koostatud koodin ited Tartu likoolis keemia eriala pilastele programmeerimiskursuse tarbeks [36]. Need n ited olid aasta jooksul t htsaks eestikeelses keskkonnas kasutatavaks baasiks, enne kui ka mujal hakkas Javateemailisi abimaterjale tekkima. Samuti olid n idete juures mitmek lgsed programmeerimis lesanded, mille abil v isid oma teadmisi arendada nii algajad kui edasij udnud. Toomas Lepikult'iga ppisime heskoos 1997. a. kevadel Tamperes Tempus-projekti raames Javakeelset programmeerimist. 1998. a. s gisel luges Tartu likoolis Javap hist programmeerimise algkursust J ri Kiho, mille tarvis valmis tal ka eestikeelset terminoloogiat loov ja korrastav V ike Java Leksikon [33]. Mitmed eestikeelsed veebimaterjalid valmisid ka kursusele eelnenud tarkvaraseminari k igus. K llalt p hjalikult oli nendes k sitletud graafikateemasid, aga 2002. aastal ei nnestunud neid tarkvaraseminari materjale kahjuks enam veebist leida. 1999. a kevadel pidas Jaanus P ial Tartu likoolis objektorienteeritud programmeerimise kursuse esmakordselt Java p hjal. ppureid oli ligi 60 inimest ning mitmele neist on see j nud meeldiva rahuliku esituse ning asjaliku sisu t ttu parimaks programmeerimisega seotud kursuseks. Ka k esoleva t autor j i kuulduga rahule. ppej ul valmis meeldiv veebileht nii loengumaterjalide, n idete, kopeeritud materjalide kui viidete koguga [54]. Samuti valmisid kursuse k igus mitmed n itlikud programmid ning kasvas peaaegu et v lja Javahuviliste ning -oskajate seltskond, kes on valmis saadud teadmisi rakendama ja edasi andma. V iksemal m ral kasutati Java l ike ka teistes T kursustes, nt arvutiv rgud. J rgmistel aastatel on Java keele petus T s laienenud ning on juurde tulnud nii gruppe kui petajaid ning nende poolt koostatud materjale ja lesandeid. M rkimisv rse osa valminud lehek lgede viiteid v ib leida lehelt [54], vastavateemalist petust on koordineerinud Jaanus P ial. 2001. aastal ilmus p hjalikuma k sitlusena T ri Kiho koostatud Java programmeerimise aabits [31]. Java levis Eestimaal ha laiemalt ning selle petamist alustati a Eesti kolleegidega, pidades intensiivkursuse "Arvutiv rkude programmeerimine Javas". Sealsed materjalid aga olid enamikus veel inglisekeelsed. Eestikeelsed Javaga kokku puutuvad inimesed on lugenud Enn T ugu selleteemalist k llalt l hikest, kuid tihedat ja terviklikku artiklit "Java fenomen" [75]. Inglisekeelsetest Java- petustest on kesksel kohal olnud Java looja Suni poolt koostatud The Java Tutorial [65], pakkudes petusi alates lihtsast k ivitamisest kuni kesktaseme programmideni. 2000. aasta paiku kippus Tutoriali uuendamine keele arengust m rgatavalt maha j ma, kuid viimasel aastal on petustega taas j rgi j utud ning nimetatud kirjutis on taas j udnud Java ppematerjalide esiritta. Koos The Java Tutorialiga on Sun-i poolt kasutada ametlik Java dokumentatsioon [68] nii k skude s stemaatilise kirjelduse [67] kui korralike seletuste [68] n ol. Selle tasuta veebip hiselt v i allalaetavalt kasutatava komplekti p hjal on v imalik usina ppimise abil paljud teemad enesele selgeks teha. ksikuid tehnilisi probleeme tutvustab l hemalt JDC Tech Tips [69]. Selles v etakse kshaaval l bi teemad, mille uurimine ja m istmine vaid dokumentatsiooni abil v ib keeruliseks osutuda. Keskeltl bi korra kuus v etakse ette kaks teemat, andes nende le k llalt tervikliku m neteistk mnelehek ljelise seletuse. Keerulisemaid materjale ning p hjalikumaid seletusi v ib leida Sunipoolsest Java arendussaidist [66], samuti standardsete lisapakettide kodulehtedelt [63][64]. Soomekeelsed p hjalikumad k sitlused on [48] ja [80], venekeelseid abimaterjale leiab [70]. ks korralikumaid likoolide veebis v lja pandud Java kursusi on Brooklyni likoolis [18]. Materjalid on k ttesaadavad alates 1997ndast aastast ning neid on s stemaatiliselt uuendatud. Samuti on head vastukaja leidnud Richard Baldwini selges ja loogilises, k llalt s naohtras keeles kirjutatud materjalid nii alg-, kesk- kui ka k rgtasemele [1]. Meeldiv algtasemele suunatud veebi pik on David J. Eck'i koostatud Introduction to Programming Using Java [6]. Swingi kohta kirjutatud ilusas paarisajalehek ljelises teoses v tavad Matthew Robinsoni ja Pavel Vorobijev l bi nii Swingi enese p hiosad kui sellega l hemalt ja kaugemalt seotud teemad. [56] Raamatuk rvaseid n iteid on teistelgi autoritel v lja pandud. Veebiprogrammeerimise seisukohast t htsamaks v iks osutuda Marty Hally Core Servlets and JavaServer Pages [15]. Samuti on n ited k ttesaadavad raamatul Java in Nutshell [46]. iteid, seletusi ja n uandeid on kokku kogutud lehtedel [24][2]. Terviklikku Javaportaali on p tud kokku panna saitidel [16][18]. Raamatutest on algusest peale loetud "piibliks" Java in Nutshelli [46], kus k llalt l hidalt kuid selgelt on suudetud t htsamad teemad kirja panna. Seda raamatut teadsid 1997. aastal soovitada ka Tamperes Javat petanud soomlased. Levinud objektorienteerituse aluseid tutvustav raamat on olnud David n. Smith'i Concepts of Object-Oriented programming [62], kus m rgatav osa raamatu sisust on p hendatud p tetele ning illustreerivad l igud on juurde kirjutatud Smalltalk'i p hjal. Graafikateemalisi raamatuid on ilmunud mitmeid, millest on tuge saadud nii siinsetel graafikal ikude kirjutamisel kui pilased keerulisemate programmide koostamisel. TP raamatukogust on olnud k ttesaadavad [81] ning [20]. Eriti viimases on p hjalikumalt l bi arutatud kahe- ja kolmem tmelise graafika nii loogilised kui matemaatilised alused ning antud hulk soovitusi kvaliteetsete graafiliste programmide koostamisel. Edasij udnutele sobiks T sikahoone raamatukogus asuv [40], kus vaadeldakse ka keerulisemaid algoritme nii piltide anal sil kui s nteesil. Uudisgrupid Nii algajal kui edasij udnul on v imalus abi leida nii uudisgruppide arhiividest, j lgida sealset jooksvat vestlust kui selles ise osaleda. Suhteliselt k ige lihtsamaid veebiprogrammeerimisalaseid probleeme k sitletakse uudisgrupis ee.arvutid.www, kus enamik programmeerimisalaseid teateid piirdub HTMLi v i Javaskriptiga, kuid kust leiab lahendusi v ga mitmesugustele veebiga seotud probleemidele. Enim otseselt veebiprogrammeerimisega seotud teateid tuleb gruppi ee.arvutid.www.webmasters, kus p hiliselt PHP ja MySQLi-ga kuid t iesti m rgatavalt ka muude veebitehnoloogiatega seotud probleeme arutatakse. Eraldi eestikeelseks programmeerimisgrupiks on ee.prog, kus programmeerimisteemasid s gavamalt lahatakse. Ehkki m rkimisv rne osa arutlusi pole otseselt veebiga seotud, leiab sealt veebiprogrammeerimist ppija k ll ja k ll kasulikku, mida tal ka veebiprogrammide koostamisel vaja l heb. V rreldes v lismaiste listidega on siinsed grupid k llalt rahulikud - keskmiselt neli-viis kirja p evas, kuid samas on ettev etavad teemad just meie kultuurikeskkonnas t htsaimad ning vaidluste korral v ib kirjade hulk kergesti mitmekordistuda. K llalt tihedaks ja asjalikuks uudisgrupiks on comp.lang.java.programmer, kust v ib leida kirjutisi nii otse Java keele kohta kui ka muudel veebiprogrammeerimise teemadel. nud l hedaste teemade uudisgrupid on m rgatavalt lahjema sisuga, kuid spetsiifilisi l ike v ib neistki leida. Andmebaasidega seotud probleemidele v ib lahendusi otsida grupist comp.lang.java.databases, kasutajaliidese koostamise le arutatakse grupis comp.lang.java.gui. Nii konkreetse probleemi kui ka ldisemate p tete puhul on sageli m istlik enne keerulisemate raamatute otsimist uudisgrupid le vaadata, kus v ib k llalt kerge vaevaga lahenduse leida. ri Kiho. Java programmeerimise aabits Tegemist on kahtlemata parima ja p hjalikema eestikeelse paberil ilmunud Java ppematerjaliga. "K esolev programmeerimise aabits on m eldud eesk tt abimaterjaliks ppeaine Programmeerimine (MTAT.03.100) omandamisel", v idab autor. Teos on m eldud kasutamiseks koos ppej u seletuste ja n uannetega ja nii t idab see oma lesande. N d on tudengitel v imalik j rele vaadata, kui tunnis midagi segaseks j i. Varem samalt autorilt ilmunud V ike Java leksikon aitas k ll korrastada keelelisi m isteid, kuid sobis pigem hilisemaks kordamiseks ja teemade meeldetuletamiseks kui uue ppimiseks. Et tegemist on esimese eestikeelse sellealase pikuga, siis on tema sihtgrupp palju suurem kui pelgalt Tartu likooli esimesel kursusel programmeerimist ppivad tudengid. Minu magistrit raames koostatud ppematerjal ja J ri Kiho pik taotlevad l hedast eesm rki. Kirjutised t iendavad teineteist, kattuvaid l ike peaaegu pole. Sama n iteks ei saa elda mitmete ingliskeelsete raamatute kohta. Sunderlandi likooli raamatukoguriiulis l bi vaadatud paarik mne raamatu hulgas leidus palju kattuvaid v ravahetamiseni sarnaseid n iteid ja seletusi. Kogu suure hulga seast v is ehk leida kolme raamatu jagu erinevat materjali. Siinse ppematerjaliga v rreldes on J ri Kihol v hem teemasid: keskendutakse hele kursusele ning nud ainest k sitlevad p hjalikumalt juba teised ppej ud oma kursustes. Julgesti on kasutatud matemaatilisi m isteid ja teemasid, mis siinses ppematerjalis on suurelt osalt j etud vaid j tkukursuse sisse. TP petamisel saadud kogemused on n idanud isegi matemaatika eriala pilaste (rakendus)matemaatika pelgust ning seet ttu on v imaluse korral p tud n iteid mitte liialt matemaatilisteks ajada, vaid on p tud hakkama saada ppurite arvates v hem arusaamatusi tekkivate teemadega, et informaatikaalased p hiteadmised ei j ks selle t ttu omandamata. Eelkirjutatu ei t henda, nagu kursuses eneses arvutusoskust ja p hi- ning keskkooli matemaatikat vaja ei l heks. M nikord keskmistele ning sageli nutikamatele pilastele antud lesannete puhul on paratamatu kokku otsida aastate jooksul kogunenud teadmised nii aritmeetikast kui geomeetriast ning nende abil loovaid lahendusi leida ja t le panna. Algus Kui tahta arvestada ja aidata raamatuga ka ise ppijat v i esimesel tunnil puudunud pilast, siis v ib J ri Kiho aabitsa esimeses vihikus ettev etud n ide liialt keeruline tunduda. Iseenesest pole seal midagi keerulist, kuid ehk oleks lihtsa tervituse stiilis abin ide veidi pehmemaks vahel liks uustulnukale programmeerimise alustamiseks. Ka seletused on loogilised ja asjalikud, kuid tundmatute m istete tulv v ib muuta teksti kergesti arusaamatuks ning kinnistada rahva seas levinud arvamust, et igasugune programmeerimine on vaid piiratud kildkonnale arusaadav toiming, mille juurde tavainimesel asja pole. Algajale on esimese peat le kahek mne uue m iste liig mis liig. Edasistes peat kkides on neid alla k mne, isegi mahukas ekraanigraafika vihikus vaid seitse eraldi l pus v lja toodud m istet (tegelikkuses on seal siiski veidi rohkem meeldej tmist ja arusaamist vajavaid kujundeid ning vahepeal m rgitud m isteid). Kui ldhariduskoolis (n iteks f sikas) omandatakse keskmiselt kuni kolm uut ksust v i seost tunnis, siis ei tohiks ka likoolis eeldada, et le k mne s na suudetakse m testada he korraga. Nagu aga enne mainitud, raamatu statuudiga siin vastuolu pole, sest koolis pikuna kasutades on ppej igus, v imalus ja kohustus probleemsed kohad pikemalt lahti seletada ning n itlikustada. Alustamine on probleemiks pea iga piku ja kursuse juures, et kirju taustaga ppurkond suudaks v ikese tasanduse j rel heskoos ning hes suunas liikuma hakata. Ehk ainukesena on suudetud programmeerimise m te ja skeem algajale selgeks teha sama autori raamatus "Kuidas programmeerida" [29], kus on aga selle teema peale paarsada lehek lge kulutatud. Kasutajas bralik lesehitus Raamatus on leitud t helepanu ja ruumi v ikeste, kuid algajale koodikirjutajatele arusaamatute l ikude seletamiseks nagu n iteks reataanded (vihik 2, lk. 9). Nii saab t helepanelik lugeja vajalikud teadmised muuseas k tte, ilma, et ta seda eraldi ppima peaks. Samuti teeb lugemise meeldivamaks autori julgus kasutada meetodite ja muutujate nimedes t hti. See v ib k ll m ne konfiguratsiooni juures tekitada probleeme kompileerimisel v ivitamisel, samuti v ivad pildi kirjuks ajada Windowsis tavaredaktorite ning DOS-i k surea erinevad kooditabelid, kuid Tartus enamlevinud Unix-masinate puhul ei tohiks t hed raskusi valmistada ning koodi keeleline pilt paraneb tunduvalt. Objektid Aabitsa algupoolel on sisse toodud objektid ja p rimine. M ne autori arvates v ib tegemist olla liigse kiirustamisega. N iteks Tampere Tehnika likooli Pori osakonnas hoiti objektidest eemale terve esimese semestri jooksul. Minu kogemused n itavad, et alustades varakult objektidega, tunduvad need ppijatele loomulikud ning hiljem ei teki salap rast hirmu tundmatu valdkonna ees. ited ri Kiho raamatu suureks plussiks on terviklikud k ivitamisk lbulikud n ited. ppimisele aitab kaasa v imalus n ited Internetist alla laadida, et veenduda programmi t lbulikkuses. Nii saadakse le m nikord letamatuna tunduvast raskusest, kus ksiku viltul inud m rgi peale annab kompilaator arusaamatu veateate ning v ra teksti korrektuur ei taha kuidagi t imelist tulemust anda. lesanded Vihikute l pus olevad lesanded pakuvad ppijale v imaluse oma oskusi proovile panna. Uue teemaga tutvumisel v ib enesele j ukohase lesande v lja m tlemine k llalt raskeks osutuda, sest esiteks pole ideid, mida kasulikku pitud vahenditega peale hakata ning teiseks ei suudeta hinnata toimingute keerukust ning vastavate programmide loomiseks vajatavaid lisateadmisi. ned ja failid ib tunduda llatav, et ppematerjalide hulgas on tutvutud tekstip histe jadafailidega enne kui s tlusk skudega, kuid koostatud n idete taustal paistab selline j rjekord t iesti loogilisena. Ehkki s tlus v ib algajale tunduda arusaadavam kui failidega majandamine, annab see tagapool v imaluse k sitleda ka veidi keerulisemaid s nedega seotud k sklusi. Samuti teeb varasem lihtne tutvus failidega nendega l imise loomulikumaks ning ei teki vahel ette tulevat hirmu failide kui seletamatu ja ohtliku n htuse ees. Kogumid Kogumite juures on teema rahulikult seletatud juba Java algsest versioonist p rit klassi Vector abil, mille eeliseks on, et ei pea muretsema oma kasutatava keskkonna versiooninumbri p rast. Ehkki Java arendajad on soovitanud tarvitada samaks otstarbeks klassi ArrayList ning vahelepaigutavate andmete korral LinkedListi, siis Vectori p hjal on v imalik k ik toimingud selgeks ppida ning hilisem nimevahetus kuigiv ppimist ei n ua. Kui olemasolevad vahendid rahuldavad, siis pole vaja iga hinna eest uute juurde tormata, kui need edasiantavale s numile suurt juurde ei anna. Pea samamoodi oli hes finantsprobleeme k sitlevas programmeerimis pikus p hjendatud Java versiooni 1.0.2-ga piirdumist, "because it works". rra harjumatu on klaviatuurisisendi ja -v ljundi juures kasutada loodud abiklassi SV. Iseenesest on tegemist sama l henemisega kui Rein J rgensoni Programmitehnika [28] graafikaosas, kus vajati pea alati lisaks abifail kaivita.pas. Ka enese tarbeks programme koostades olen selliseid abivahendeid loonud ning n iteks Microsoft on oma J++'i luues r hutanud konsoolilt lihtsustatud sisendi-v ljundi keele m rgatavat eelist. Samas olen - eriti algajate petamisel - avastanud, et iga juurdetoodud t kk v ib kellelegi komistuskiviks saada. Kui pole just taotluslik n idata klassi Integer isendi loomist ja sealt int-v rtuse p rimist, siis kannataks ehk klassi Kogum real 27 kirjutada (new Integer(r)).intValue() asemele lihtsalt Integer.parseInt(r). M ni selline vanem kirjaviis kipub ka omal sisse ununema. Meeldivaks vaadata ning kasulikuks l bi m elda on meetodite skeem, millisest mida v lja kutsutakse. Selline joonis aitab programmi struktuuri selgemaks saada ning samas pakub lugejale v imaluse ja harjumuse oma programmi kirjeldamiseks. Mullivann Koos rakenditega on siin vihikus tegemist ainukeste graafikat k sitlevate osadega kogu aabitsas ning nende jooksul on l bi v etud pea k ik t htsamad graafilise kasutajaliidese koostamisega seotud ideoloogiad ja k sklused. Kes on end koostatud n idetest l bi t tanud ning veidi muutusi l bi katsetanud, sellel ei tohiks tulevikus enam lihtsamate graafiliste programmide koostamisega probleeme tekkida. Julgesti on kasutatud veidi uuemaid ning juba k llalt h sti omaks v etud Swingi graafikavahendeid. Kuularitega tutvumist on alustatud akna sulgemisest, mis sobinuks ka minu t sse. Kui eelmises vihikus oli meetodite omavahelise suhtlemise skeem, siis siin on klasside, isendite ja teadete saatmise skeem, mis samuti aitab teadmisi korrastada ning s vendab korraliku kirjeldamise harjumust. Tagasivaatav rekursioon Viimaseks vihikuks sattunud rekursiivsed meetodid on tagasivaatav samm graafiliste ilustuste juurest traditsioonilise programmeerimise juurde. Arukalt ja rahulikult on defineeritud nii lesanne, algoritm ja meetod ning sealtkaudu j utud rekursiivse algoritmi m isteni. N idete juures on alustatud k igile m istetavatest leival ikamisest ja puuraiumisest ja j utakse ka nupukamatele v hemasti esimesel korral peamurdmist n udvate Hanoi tornideni. Nii nagu mina j uan oma materjalide puhul failis steemi v i teineteisesse sisenevaid pilte anal sides rekursioonini, on ka siin tegemist t iesti loogilise teega. Ivor Horton. Beginning Java 2 Avastuslugu Aukartust ratav teos - seda nii sisu kui m tmete poolest! Edinburghi raamatipoes oli 2000. aasta kevadel rida Javale p hendatud teoseid nii algajatele, edasij udnutele kui ka ksikute teemade s vendatud k sitlusi. Alg petust sisaldavatest raamatutest j i Beginning Java 2 huvitava ning samas s bralikuna silma. Suur osa raamatu sisust oli tuttav. Uurisin sealsamas l bi enesele uudse muusikaosa ja tutvusin raamatu lesehitusega. N dala p rast Londonis oli sama raamat hea ja veriv rskena s rava iseloomustuse abil esile toodud. Hiljem sain Tallinnas IT-koolituse inimestelt raamatule kiitva hinnangu. Otsustasin nimetatud raamatu omakoostatud materjalile v rdluseks valida. Algus Ehkki on tegemist ka algajatele m eldud teosega, kipuvad esimesed lehek ljed selles suhtes veidi konarlikud olema. Ilusti seletatakse eesm rke ja p tteid, samuti raamatu ning n idete kasutamist, kuid esimene kasutajapoolne programmi k ivitamine tuleb justkui muuseas teiste toimingute vahel alles raamatu kuueteistk mnendal lehek ljel. Nii nagu Java 2 Complete [5] raamatus, nii ka siin on esimeseks t le l katavaks programmiks rakend. Rakendi puhul on rakendik ituri t eesm ppijale kergemini m istetav. Valmiskompileeritud programmide k ivitamiseks vajaliku interpretaatori lesanne kipub Pascali v i C abil .exe faile loonud inimesele m ttetu raiskamisena ning samas h irib seekaudu ka ppimist. Lihtsa programmi k ivitamine esimese peat ki l pus v etakse veel korra natuke teisel kujul l bi. Nii on loota, et ka algajad ise ppijad v iksid sellega omal k el hakkama saada. Tekstip hine sisu rgmises peat kis on k llalt julgesti ette v etud mitmesugused andmet bid ning nendega sooritatavad tehted. Varasema programmeerimiskogemusega inimestele ei tohiks need kuigi palju raskusi valmistada, kuid ka algajatel peaks heade seletuste abil olema v imalik pakutud teadmisest aru saada ning seda soovitud kohtades rakendada. Iga peat ki l pus on levaatlik kokkuv te ning parajalt j ukohased harjutused, samuti vajadusel viited andmete juurde hankimiseks. Kuna on tegemist mitte liialt mahuka materjaliga, siis on les kirjutatud pea k ik ohud ja erijuhud, mis ppej ud muul juhul loengus juurde r gib. Kirjutamise stiil on lahe, sugugi mitte robustne. Hea kujutlusv ime korral v ib ette kujutada, et ollakse meeldivas loengus, kus on v imalik lehe keeramise kiiruse abil tempot m rata. Ainsa Java-raamatuna minu n htutest on siin massiivid ja s ned seletusele v etud samas peat kis. See on k ll tavaks olnud C pikute puhul, kus eraldi s pi polnudki, kuid paistab ka siin edukalt nnestuma. Sellise hendamise puhul annab edukalt seletada hisosi ning samas v lja tuua erinevused. Nii selles peat kis kui mujalgi on k llalt palju meetodite kirjeldusi, mida p tteliselt on iga hel v imalik dokumentatsioonist vaadata. Kui arvutit ei juhtu k rast olema, siis on selline l henemine abiks. Samuti pole h benetud sama l iku v i joonist korrata, kui selleks peaks vajadus tekkima. Ise olen p dnud lehek lgede arvu kokkuhoiu m ttes kordumisi siiski v imalikult v ltida, ehkki m nikord lihtsustab igesse kohta uuesti kopeeritud l ik m istmist, kuna v imaldab sujuvalt lugeda ning ei sunni otsitud koha vaatamiseks lehek lgi lappama. Objektidega seonduv on kahe peat ki jooksul s stemaatiliselt l bi v etud. Isegi paketid on nime poolest algajate raamatusse paigutatud, kuid rahulikud ja loogilised seletused peaksid nende vajaduse ja kasutamise lugejale arusaadavaks tegema. Failid ja vood on hte peat kki kokku pandud nagu minulgi, ehkki voo abil kirjutamine v i failinimede vaatamine on p tte poolest k llaltki erinevad tegevused. Mitmesugused tarvikud on kokku pandud hte pikka peat kki, ilma et neil omavahel kuigi suurt seost oleks. Kuna iga ht on eraldi k llalt terviklikult kirjeldatud, siis selline hendamine ei h iri. V ib juhtuda, et edaspidistes raamatutes v ivad ka failide ja kataloogidega manipuleerivad k sud hakata kuuluma eraldiseisvate tarvikute alla, sest v rgunduse arenedes tunduvad ha loomulikumatena ka failidega sidumata vood. Graafiline kasutajaliides Raamatu esimene pool on piirdunud kasutajaga suhtlemisel vaid tekstiekraaniga nagu traditsioonilistele programmeerimis pikutele kohane. J rgneva viiesaja lehek lje jooksul aga v etakse p hjalikult l bi nii graafilise kasutajaliidese koostamine kui piltide loomine ja t tlemine. Teemad on loogiliselt j rjestatud ning nende lugemine on nauditav. Arvutil j rgi proovides tekib usk, et k ik ka tegelikult nii k ib kui kirjas. ldjuhul on osatud hoolitseda nii, et j rjest lugedes on k ik tarvilikud m isted eelpool seletatud. Graafika vahele on pikitud ka sellega seotud teemasid, n iteks ajaarvutused ning meetodite perioodiline k ivitamine animatsioonide puhul. Kirjeldatav raamat on pea esimeseks kohaks, kus koos JDK 1.3-ga valminud Sound API-le on korralik loodud n idetega petus. Varasemad teadmised tuli k ik postiloenditest v i siis napis nalisest dokumentatsioonist kokku otsida. Rohkem kui seitsmek mnel lehek ljel on l bi v etud nii p tted kui lihtsamad ja veidi keerulisemad heli esitamise, salvestamise ja t tlemise viisid. Kui olin v rgust otsitud seletuste ning enese muusikalise ja f sikalise hariduse p hjal j tkukursuse muusikalise osa kokku pannud, oli tagantj rele sealt hea vaadata, kuidas teine autor samu teemasid lahendab. J llegi on temal kirjas muul juhul loengul r gitav jutt ning n idatavad joonised. Samuti on teemad l bi m ngitud, nii et lugejal tekib kasutusvaldkondadest ja imalustest mitmek lgne ettekujutus. MIDI n ited olid peamiselt les ehitatud klaviatuurile, s gavamatesse muusikalistesse arutlustesse selles raamatus ei laskutud. pupeat kkides v etakse ette andmebaasid - ikka samad teemad, millest pea heski p hjalikumas Javat tutvustavas pikus ei p se. Ning nagu selles raamatus kombeks, paigutatakse mujal k sitlemata j nud, kuid sisuliselt t htsad l igud p hiteema vahele. Andmebaaside juures on graafilise kasutajaliidese loomise n itel p hjalikumalt seletatud Swingi JTree toimimist. Mitmed eraldiseisvad teemad ja andmed leiduvad lisades: jar-failid, dokumenteerimine, v tmes nad, ASCII koodid jm. Indeks ga vajalik ning kasutajas bralik on Beginning Java 2 raamatus olev indeks - peat kk, mis annaks v rtust juurde nii minu koostatud materjalidele kui ka J ri Kiho raamatule. Isegi raamatu autor ise ei suuda alati kiiresti leida lehek lge, kus ta otsitud teemal on kirjutanud, r kimata tavakasutajast, kes raamatu ehk vaid korra on kaanest kaaneni l bi lugenud v i tahab lihtsalt soovitud teema kohta kiiresti midagi j rele vaadata. Loogiliselt paigutatud ja pealkirjastatud peat kkide ning alateemade kaudu on k ll v imalik kergendada soovitud kohtade leidmist, kuid paratamatult on teemad v hemalt osalt niiv rd l bi p imunud, et k iki soovitud kohti pole v imalik pealkirjade j rgi les leida. Ivor Hortoni raamatus on indeks lausa kaheks jagatud: programmik sud ning teooriateemad eraldi. Piisavalt suure indeksi puhul selline jaotus h lbustab otsimist ning teeb niigi hea raamatu veelgi nauditavamaks. Ildar Habibullin. Samoutsitel Java Tegemist on k ige konkreetsema ja asjalikuma venekeelse Java pikuga, mida siinse magistrit autor kohanud. Raamat pole teiste omasugustega v rreldes paks alla 500 v hem kui A4 formaadis lehek lge, kuid hulga sisukam kui mitmed suurema mahuga raamatud. Joonistega pole liialdatud, kuid h davajalikumates kohtades on nad v ikeselt ja selgelt olemas. Lihtsa programmi k ivitamine on kohe esimese sisulise peat ki alguses. Juurde on lisatud ligi kaks lehek lge kommentaare, mis on muu teksti l hidust arvestades suhteliselt palju. Viimane aga n itab, kui t htsaks peetakse esmase kokkupuute selgust. Edasi v etakse traditsioonilisel teel l bi nii andmet bid, keelekonstruktsioonid, objektid kui paketidki. Ei h beneta t helepanu p rata ka keerulisematele objektorienteeritusega seotud valdkondadele (sisemine klass). Samas on seletused nii selged, et ka varem programmeerimisega v he kokku puutunud nupukam alustaja peaks suutma seletatut m ista. Edaspidises kirjelduses j tkatakse sama liini. Nii s tluse, m hisklasside kui ka utiliitide juures tuuakse sisse klasse ja k sklusi, mis muudes raamatutes paigutatakse j tkukursuse alla. Samas on n ited suudetud valida nii elulised, et kogenum programmeerija suudab k igu pealt haarata, millega tegu ning algajagi ei tohiks kolmekordse lelugemise ning j releproovimise peale h tta j da. Graafika juurde asutakse raamatu esimese kolmandiku l pus ning sealgi minnakse p rast l hitutvust juba Graphics2D vahendite juurde. Graafilised programmid on algselt tehtud Frame alamklassina, alles hiljem rakendite juures tuuakse sisse v imalus, et programmi saab k ivitada nii seilurist kui k surealt. Keerulisem graafika ning heli koos MIDIga on paigutatud v hem kui kolmek mnelehek ljelisse peat kki. Selle l tamine annab oskused, mis v inuks muul juhul sadu lehek lgi kirjeldusi ja k mneid n iteid v tta. See osa eeldab ka kogenenumalt lugejalt juba suuremat p hendumust, kuid tundub, et midagi t htsat pole tlemata j nud, mida ppija ei suudaks ise v lja m elda. Tagapool on asjatundikult l bi k idud nii l imed, vood, failid, v rk kui andmebaas. Igast teemast nopitud v lja t htsam ning kergemalt m istetavam osa, nii et kasutajal j le vaid edaspidi dokumentatsiooni uurida ning ta v ib varsti keerukaid rakendusi m ista ja m ningase kogemuse tekkimise j rel ka neid kokku panna. Sellise lesehitusega raamat kuluks igakeelsele lugejale. Eriti mugav on seda kasutada ppet abimaterjalina, kus on v imalik raamatus k sitlemata j nud segased teemad l puni selgeks r kida ning antud p hja peale omapoolne anal siv rakendus ehitada. Kuid nii nagu pealkiri tleb, eelk ige on "Samoutsitel Java" ikkagi m eldud s venemisv imelisele ja kohusetundlikule ise ppijale. veebikursus: materjalid ja anal 1999. a. s gisel pidas k esoleva t autor TP s esimest korda veebiprogrammeerimise kursuse. Eesm rgiks v eti koostada siinsete ppurite jaoks v hemalt sama sobiv kursus, kui selle oli T jaoks loonud Jaanus P ial. Et enamik ppijaist olid tulevased arvatavad pedagoogid, ei v inud silmaringi koomamale t mmata. Lisaks tuli tervikliku pildi saamiseks sisse v tta teemad (nt. Javaskript), mis T i TT s leidsid k sitlemist eraldi ainetena. Eesm rkide saavutamiseks polnud v imalik olemasolevate materjalidega piirduda, vaid tuli koostada uus sobiv ppematerjal/konspekt. Otsustati luua olemasolevatele napis nalistele m nalistele materjalidele k rvale v imalikult ladusalt jutustav tekst, mida annaks m ista ka ilma ppej upoolseid seletusi kuulamata ning ilma laialdasi teemakohaseid eelteadmisi omamata. Otseseks t ukeks igaks loenguks konspekti loomiseks sai vastavateemaline lubadus TP ppivale pimedale noormehele, kes suutis arvutis olevat teksti lugeda. Sellelt kursuselt j i Javaga edaspidi tihedamalt seotuks Charles Roos, kes j rgmisel aastal koostas suvepraktika raames Java alg petust l bi viiva programmi "Java alused" [57] ning hiljem ise servlettidep hist Java algkursust pidades koostas materjali ja metoodika taolise petuse tarbeks, kaitstes selle ka proseminarit na [58]. Materjali koostamisel ning kirjutistesse jagamisel kaalus k esoleva magistrit autor mitmeid v imalusi. Uues pedagoogikas soovitatakse probleemip hist l henemist, m nes raamatus keskendutakse algoritmidele, m nel pool aga l htutakse kirjutamisel keele vahenditest. Mitmekuulise v imaluste kaalumise ning v rdlemise tulemusena leidis autor, et ppijale kasulik oleks l bi viia praktikumid probleemip hiselt, loengud aga keskendada algoritmidele ja konkreetse keele pakutud v imalustele, v imaluse ja vajaduse korral k rvaljooksvaid seoseid kommenteerides. Sellisel juhul j b praktikumitundides aega avastamiseks ning isetegevuseks, loengumaterjali poolt aga tuleb kindel skelett, millele on p rast kergem toetuda ning ettetulevale probleemile h lpsamini lahendus leida v i avastada lahenduse puudumine. Selle tagam ttega saidki loodavad konspektid ja n ited jagatud keelte ja tehniliste vahendite j rgi, lesannete kogu aga koostatud valdavalt probleemip hisena. ikide loodud konspektide p hjal on ka tegelikkuses petatud. Java p hikursuse konspekti peat kke on kasutanud paarik mne grupi ppurid, Java j tkukursuse konspekti j rgi on ppinud kaks gruppi ning Javaskripti materjalid on l pitud seitsmel korral. Igal puhul on ppej ule j nud ka tagasiside kas siis kirjalikus, suulises v i kognitiivses vormis. ppijaiks on olnud nii koolilapsed, pilased kui t iskasvanud. Java p hikursuse konspekt Loodud konspekt (Lisa 1) on m eldud nii ise ppijatele kui ka abimaterjaliks pilastele ja petajatele. Kasulikke soovitusi v i ideid peaksid siit leidma nii algajad kui ka kogenumad koodikirjutajad. Ise ppijailt eeldatakse varasemat kasv ikest kokkupuudet programmeerimisega, kuid lisamaterjalide v rvalise abi toel peaks olema v imalik selle materjali abil ka p ris algusest alustada. Teoreetilise suunitlusega inimesed saavad hakata esimesest peat kist alates lugema ning teemad on p tud nii j rjestada, et saab liikuda lihtsamalt keerulisema poole. Kel aga on soovi kohe n puga j rele proovida, kuidas midagi t le panna ja edaspidi juba t tavat programmi oma soovide ja huvide j rgi kohandada ning sealtkaudu ppida, siis v ib julgesti alustada raamatu l puosast. Installeerimise juures on seletustega piltkirjas ra toodud etapid, mille abil on v imalik programmi koostamiseks vajalikud vahendid Internetist enesele salvestada, oma masinas t korda s ttida ning nende abil lihtne programm koostada ja t le panna. J rgnevate tutvustusn idete juures alustatakse sellest samast l hikesest programmist ning lisatakse tasapisi v imalusi, p des siiski programm j tta l hikeseks, lihtsaks ja kergesti m istetavaks. Kes on need n ited m ttega l bi lugenud, l bi proovinud, v ikseid ja suuremaidki muudatusi sisse viinud ja edukalt eri programmide osi hendada suutnud, need peaksid hakkama saama mitmete tavaelu lihtsate abiprogrammide koostamisega ning samas on suutnud enesele ehitada aluse, kindlustunde ja usu endasse, millele edasisi keerulisemaid teadmisi kinnitada. Ka koolitunnis v i arvutiringides on soovitav alustada lihtsatest t tavatest n idetest, millega m ngides ei k i programmeerimine le j u. N ited pakuvad petajale 1) k llaldaselt v imalusi tagamaade seletamiseks (mida v ib kasv i siitsamast eelnevatest peat kkidest lugeda); 2) lasevad nii n rgematele kui tugevamatele j ukohaseid lesandeid jagada; 3) tutvuda teooriateemadega. M istmise s gavus lihtsalt oleneb ppimisv imest ning p hendumusest, kuid l hikese valmisn ite juures suudab iga ks juhendaja juuresolekul midagi muuta v iendada. Tutvus programmeerimiskeelega Keelega tutvumise peat kis on seletatud olulisemad k sud ning toodud m ned n ited, mille abil on v imalik edaspidi palju tarvilikke ning tunduvalt asjalikumaid programme kokku panna. Kel varem m ne programmeerimiskeelega kogemusi, see peaks keele peat ki abil saama aimu enam ette tulevatest k skudest ja konstruktsioonidest ning suutma traditsioonilises programmeerimises ette tulevad arvutavad ja kirjutavad programmid kokku panna. Sedasorti programmid v ivad k ll keerukamaks minna algoritmide poolest, kuid keeleliselt on k ik oluline olemas, mille abil saab ka n iteks ol mpiaadidel ette tulevaid lesandeid lahendada. Sisendist on j etud vaid k surea parameetrid, mida on k ige lihtsam kirja panna. Kui piisab, et kasutaja saab programmile algandmed anda, siis neist parameetritest t iesti jagub. Kasutaja poolt jagatavate andmete puhul on enamasti v imalik kogu teave algul ette anda ning siis p rast arvutamist tulemust vaadata. Faili sisend-v ljundit ning klaviatuurilt vooga sisendit k sitletakse voogude ja failide peat kis. Need on teemad, mis ldjuhul ka tekstip histe programmide juurde k ivad. ne juurde on pealtn ha loogikavastaselt sisse toodud StringTokenizeri abil lausete t keldamine - teema, mida teiste programmeerimiskeelte pikus ldjuhul nii algusse pole nihutatud. Kuna aga tegemist on tekstip histe programmide juures k llalt sageli ette tuleva operatsiooniga, siis on lause t keldamise n ide koos seletustega esitatud siin; osalt ka seet ttu, et s nede tarvis mujal terviklikke l ike pole koostatud ning nii on kasutajal parem otsida hest kohast. Kui tulevikus k sitleda s nesid laiemalt, siis v iks ka lause t keldamine olla eraldi vastavas peat kis koos StringBufferi, regulaaravaldiste ning muude s tlusega seotud vahenditega. Arvutamise juures on tutvustatud klassi Math k sklusi, lisaks ka t isarvulise juhuarvu loomist. Enamasti suudavad tudengid, olles nende vahenditega tutvunud, k iksugu valemid ilma suuremate raskusteta kirja panna, kui nad on j udnud need juba paberil oma programmi tarbeks v lja m elda. Abiinfo tutvustamine aitab loodetavasti otsida soovitud k sklusi ning petab kirjapandut m istma. API dokumentatsiooni lugemine on algul paljudele k llaltki vaevaline toiming, kuid paari klassi k skluste l hema l biuurimise j rel suudetakse paremini m ista, mida nud klassidegi omadustelt oodata on. Struktuursed andmet bid n uavad algul rohkem l tlemist, kuid nendest ei saa suuremate programmide puhul enam le ega mber. Varem programmeerimisega tutvunutele ei tohiks v hemasti massiivid kuigi suuri raskusi valmistada; esimesi kordi nende poole p rdudes aga tuleb ise hulgaliselt harjutusi l bi teha, et sedapidised lahendused tuttavate ja usutavatena tunduksid ning nende abil oleks tahtmist ja julgust uusi ja keerulisemaid rakendusi kokku panna. N itena on sisse toodud ka kolmem tmeline massiiv, et kahem tmeline ei tunduks kasutajale keerukuse tipuna, vaid et ta n eks, et tegemist on htlase s steemiga ning julgeks vajadusel v hemalt kahem tmelise omadusi ilma pelguseta tarvitada. Siia peat kki on paigutatud ka klassi m iste ja lihtne omakoostatud andmet p: Pascalit ppinutel tekiks seos kirjega ning selguks, et ise he t bi kokku panemine ei olegi kuigi keerukas. Tegu on objektorienteeritud l henemisele pinna ette valmistamisega. Samas l petatakse peat kk kohas, kus autor arvab, et oleks kasulik neil enesele piir t mmata, kes tahavad tavaliste programmide koostamisega hakkama saada, kuid ei taha objektidega seotud peensustesse s veneda ning selle peale suuremat aega kulutada. Klassi sees oleva alamprogrammi kasulikkuse n itamiseks on ka konstruktor siia peat kki sisse v etud, kuid samas ei ole tegeldud isendimeetodite v lja kutsumisega ehk teadete saatmisega. Julgesti on k situd ja paigutatud isendite v ljadele v rtusi. Ehkki see on objektorienteeritud m ttelaadiga vastuolus, saab siin veel piirduda Pascali/C kirjete m ttemalliga, kus v ljade v rtuste p rimiseks ja m ramiseks ei kasutata meetodeid. Kuna konstruktor on hekordseks v rtuste omistamiseks, siis ei hakka ka see tekitama taunitud segatud olukorda, kus osa andmeid v rtustatakse t igus meetodite, osa otsese kopeerimise abil. hidalt on l bi m ngitud olukord, kus kaks osutit n itavad samadele andmetele ning selle tulemusena avaldub he osuti poolt p hjustatud muutus ka teise osuti kaudu k situd v rtustes. Ehkki siin on n ide l hidalt kirja pandud, tasub tunnis teemat l bi v ttes v i ka ise materjali uurides see l hemalt l bi m elda ning arutleda, millised j reldused sellel on ning mis erinevused on lihtt pide ning struktuurt pidega programmeerimisel. Nagu m ne aasta pikkused kogemused n itavad, omandatakse ja m istetakse selline algne s ntaks k llalt kergesti, eriti kui ollakse varem m ne keelega (TP puhul Pascaliga) tuttavad. Pikemat aega k ll aetakse segi termineid (kiputakse nii ploki, ts kli kui valiku kohta tlema ts kkel), kuid sisuliselt saadakse aru millega tegu, ning osatakse vahendeid igesti kasutada, mis ongi ehk k ige t htsam. Samuti kipub segamini minema, et Pascalis on s nede liitmiseks (sidurdamiseks) koma (tegelikult funktsiooni parameetrite eraldaja), Javas aga plussm rk. Kui aga kompilaator j rjekindlalt teatab, mis ige mis vale, siis p rast paari esimest segadusekorda tuleb kirjutajal juba ise meelde milles asi, ning edasisi programmikoostamisi erinevus enam oluliselt ei h iri. Keelega tutvumise peat kis tundub sobimatu olevat arvus steemide l ik, kuna algsel omandamisel kipub ta olevat liialt abstraktne ning m istetamatu. V hemasti mitmed kogemused algajatega on n idanud, et kahend-, kaheksand- ja kuueteistk mnends steemi vajaduse m istmine nnestub edukamalt alles siis, kui neid ka tegelikult vaja l heb. Et aga vastavad teemad on aastaid kuulunud programmeerimisse [37][36], on nad ka siinses ppematerjalis paigutatud algtaseme muude oskuste juurde. Seoses informaatika nihkumisega rangelt matemaatikaga seotud teadusharust pigem (multi)meediumi poole tuleb t oliselt vastav l ik tulevikus viia andmetega seotud peat kki. Objektid programmeerimisel Peat kis on p tud seletada ning n idete p hjal l bi proovida objektorienteeritud programmide koostamisel kasutatavad l igud, pannes t htsamad teemad ettepoole ning harvem ette tulevad taha. Objektorienteerituse m istmisel peaks olema kergem aru saada nii programmide lesehitusest kui kuvatavatest veateadetest. Samas peaks olema raamatu materjale v imalik m ista ning programme kokku panna ka ilma siinset peat kki l bimata, kuid sel juhul tuleb arvestada, et programmide kirjutamine p hineb mitmelgi juhul analoogial ja intuitsioonil ning koodi kirjutaja pole v imeline alati p hjendama, miks tema loodud rakendus nii k itub, nagu see v lja paistab. Lihtsaima klassi loomine on paigutatud juba eelmise peat ki l ppu struktuursete andmet pide alla, siin minnakse teemat pidi p hjalikumaks. Peat ki algul kirjeldatakse objektide kasutamise peamisi vajadusi. P hjalikumad eestikeelsed seletused selle tarvis on olemas. Siin on he objektiga k llalt lihtne n ide ning kohe asutakse objektidega seotud j rgmiste teemade juurde. ppides aga tasuks sellelgi teemal pikemalt peatuda ning p da ise mitmeid klasse kavandada, koostada ja katsetada. rides j tkatakse eelmise n ite pealt ning lisatakse sellele vaid ks meetod ja lihtsuse m ttes mitte htegi v lja. Kui edaspidi on p hjust pikut edasi arendada, siis oleks t oliselt vajalik ka v lja lisamine ette v tta. Eelmine n ide oli nii koostatud, et sellele oleks suhteliselt lihtne teha alamklassi: sinna oli paigutatud teise konstruktori k rvale ka parameetriteta konstruktor, mis alamklassi isendi loomisel vaikimisi v lja kutsutakse. Saanuks ka piirduda sootuks ilma konstruktoriteta klassidega, kuid autorile tundus, et praegune algv rtustamisv imalusega lahendus on parem. See hoolitseb, et ei tekiks ebasoovitavat tava v ljadele ilma meetodita v rtuste omistamisel. Isendimuutujaid pole k ll private abil v ljapoolt n htamatuks muudetud, kuid seda pigem koodi l hidust silmas pidades. L hemat koodi on tunduvalt kergem haarata - nagu olen mitmel juhul t hele pannud - ja iga leliigne s na v i rida toob juurde inimesi, kellele just vastava rea t ttu m istmine m rgatavalt raskemaks muutub. rimisel tuleb juurde v imalus alamklassi isendit lemklassi t pi osutile omistada ning p rast algse objekti erimeetodite kasutamiseks tarvitada t bimuundust. Vaid ise ppijaile m eldud materjali puhul oleks siia t oliselt m istlik v hemasti ks sellekohane kommenteeritud n ide lisada, kus lemklassi osutist t bimuunduse teel alamklassi isend saadakse, kuid siin on piirdutud vaid s nalise kommentaariga ning muundus ja alamklassi meetodi k ivitamine sulgude abil l hiduse huvides hte lausesse paigutatud. Eraldi on koostatud n ide samast klassist p rinevate isendite paigutamiseks hte massiivi; see n itab v imalust muutujate hulka v hendada ning eriomadustest loobuda, kus selleks otsest tarvidust pole. lekatte ja liideste tarvis on koostatud omaette n idete perekond. Eelmises seerias kasutatud mitmesuguste punkti omadustel p hinevate n idete edasiarendusena oleks samuti v imalik olnud nende juurde minna - m nedes pikutes on ka sama aluse pealt pea k ik toimingud seletatud - kuid siin otsustati omaette grupp luua, et oleks v imalik n iteid l hikestena ja kergelt haaratavatena hoida. Nagu petamisest saadud kogemused n itavad, saavutati nende peat kkide puhul soovitud tulemus. Piiritlejate ja lisaoskuste sissetoomisel peatutakse p gusalt. Koostatud materjalide p hjal tunde pidades on v imalik sihtr hmaga arvestada ja vajadusel teemad p hjalikumalt l bi arutada ja n idete kaudu proovida, kuid pikus on - v hemalt praeguses versioonis - teemadest k llalt kergesti le libisetud, p des sealjuures t htsamad pidepunktid anda, mille k lge edaspidisi kogemusi kinnitada. Sama lugu on ka sisemiste klassidega. Paari n ite kaudu peaks nende kasutamine m istetav olema, kuid peenemaid ette tulevaid olukordi ning kaudsemaid v imalusi pikus l bi ei m ngita. Komponendid ja oad on j nud sisse lihtsalt tutvustavate l ikudena. Erindid Erindid on v ike teema, kuid samas vajalik t kindlate programmide loomiseks. L hem kirjeldus ja soovitused asuvad Java j tkukursuse konspektis. Siinsete tekstide l tamise tulemusena peaks kasutaja paremini m istma tekkivaid veateateid ning suutma adekvaatselt reageerida vastavalt vea t bile. V iks tekkida ldine ettekujutus, mille tarvis on valmist bid loodud ning kus tuleks enesel hakata uusi erindit pe looma. Graafika Graafikaosas on toodud v lja vaid p hilised vahendid ja seletused. Esmase kokkupuute v iks kasutaja saada tutvustusn iteid uurides. Siinsed tekstid on rohkem m eldud v imaluste tutvustamiseks ning p tete seletamiseks. Kuna aga tegemist on k llalt t htsa valdkonnaga, siis edasiarenduse puhul tuleks mitmed siinsed teemad ning komponendid pikemalt lahti kirjutada, et ka neil ppuritel oleks v imalus n puga j rge ajades m istetava ja kasuliku tulemuseni j uda, kel petaja jutust v ksikute n idete n gemisest ei piisa. Paigutamine on Javas n iteks v rreldes Visual Basicuga k llalt keeruline ning siin pole liialt p hjalikuks mindud teadlikult, et koodikirjutajad ei hakkaks kujundust toimimise k rval liialt t htsaks pidama. Kuularite puhul on p tud j tta p hiline toimemehhanism l bipaistvaks ning arusaadavaks. Alustatase hest lihtsast ning m ningase m tlemise peale m istetavast n itest ning siis liigutakse edasi mitmesuguseid kuulareid tutvustades. Nende abil peaks olema v imalik enamik tavarakendustes ettetulevaid ideid realiseerida. Samuti peaks vaadatud kuularite abil olema m istetav ka teiste dokumentatsioonist loetavate kuularite eesm rk ning toimimisp te. Tulevikus oleks t oliselt vajalik kirjutada n itena isekoostatud teadete saatja ( mmargune nupp), samuti s ndmusi laiali jagav isend (paaris- ja paarituarvulised hiirevajutused) koos korraliku skeemiga, et lugejal oleks l hem ettekujutus s ndmuste tekkimisest ja liikumisest. Hulknurka n itav graafikakomponent on kokku pandud ning selle abil saab mitmed t htsamad teemad ja toimimismehhanismid l bi vaadata. Joonistamise ning liikumisega seotud teemad tuleks tulevikus tihedamalt l bi v tta. J tkukursuse seas on k ll veidi graafikap tteid kirja pandud ning samuti on koostatud liikumist illustreeriv j rgult arendatud sirelasem ng, kuid ammendatuks ei saa teemat veel pidada. Arvestades, et v rkeeltes on sel teemal kirjutatud mitmeid vajalikke raamatuid, kuluks meilgi sellele teemale veidi rohkem p henduda. Asjalikud seletused leiab siiski J ri Kiho raamatu 13. peat kist (mullivann), samuti on t htsamad graafikaga seotud l igud k sitletud T tarkvaraseminaride materjalides (mida k ll 2002. kevadel kahjuks ei nnestunud enam veebist leida). Vood, failid Voogude ja failide juures on p hjalikumalt ette v etud Java andmevahetusskeem. K sitletakse voogude muundamist ning baidi- ja tekstivooge. Alustatakse loodetavasti k llalt lihtsalt m istetavate k skluste ja p tetega DataInputStream'ist ja FileInputStream'ist. Eeldatakse, et peat kki lugema asudes on p rimisega seotud p tted selged ning need aitavad omistamiste m istmisel. Kuigi tekstis p takse r hutada Java mitmekihilist andmeedastusskeemi, kus ldjuhul alumine kiht tegeleb andmetega vaid ksiku baidi/baidimassiivi tasemel, kuluks pikusse ometigi ra t helepanu t mbav v ibolla isegi karikatuurne joonis, mis suudaks selle teadmise kinnitada ppija m llu t htsa ning s ravana. Toru on toodud sisse vaid tutvustamise m ttes. Et l imedega tegeldakse l hemalt tagapool, siis edasiarenduses sobiks sinna p hjalikumalt l imedevahelist torude abil andmevahetust tutvustav traditsioonililne tootja-tarbija mudel. Usinamate otsijate jaoks on k ll t iesti korralik selleteemaline n ide olemas Jaanus P idla loengumaterjalides [54]. Samuti kuluks reaaleluga seostatav n ide vooge hendava SequenceInputStreami juurde. Juhup rdusfaili on samuti vaid tutvustatud. Kui m nes (eriti C ja Pascali) kursuses kulutatakse m rkimisv rselt vahendeid tutvustamaks fikseeritud suurusega kirjefailidega opereerimist, siis siin on p tud j da voogudep hiseks. Samas on tegemist siiski k llalt t htsa teemaga, mis vajaks l hemalt k sitlemist j tkukursuses. Failide ja kataloogide andmete p rimine erineb k llaltki palju failide sisu k sitlevast osast ning suurema lahtikirjutusastme korral n uaks omaette peat kki. Siiski v iksid nad siin veel eelmainitud osaga kokku sobida. Toodud on paar lihtsat kommenteeritud n idet, mille m istmisel on v imalik m rkimisv rne osa failidega ette tulevatest lesannetest kombineerimise teel lahendada. Alamkataloogide hierarhiasse tungivad kommenteeritud n ited v ib lihtsama kursuse puhul vahele j tta. Samas need pakuvad edasij udnutele k llalt n itlikku ning arendavat m tlemisainet ning loodetavasti ratundmist, et samu v tteid v ib olla kasulik tarvitada p ris paljudes valdkondades. Samuti tundub failis steemi abil rekursiooni tutvustamine v hemalt siinsele autorile palju m ttekam ning elulisem kui faktoriaali puhul, kus hariliku iteratsiooni kaudu on lesannet silmn htavalt tuttavam lahendada. lesande lahendamiseks k rvutatakse kaks teed, mis kasutavad sama tulemuse saamiseks kaht t iesti erinevat loogikat; m lema p tte j rgi on v imalik enamik selliseid operatsioone n udvaid lesandeid lahendada. Peab lihtsalt suutma lesande taandada vastavale mudelile ning siis kaalutleda, milliseid ressursse millises koguses kasutada on. Suurema rvilise pinna leidmiseks graafikas n iteks rekursioon enamiku keelte ning interpretaatorite puhul ei sobi, sest ksteisesse sisenevaid alamprogramme tuleb nii palju, et arvuti ei suuda neid v lja kanda. Andmete salvestamiseks on k ll n ites senitundmatu vahendina sisse toodud nimistu, mille kasutamine peaks paarikordse l bilugemise j rel t iesti m istetav olema. Samuti peaks kord kohatud nimistut kasutav n ide soodustama ka tagapool tuleva Java Collections Framework'i vahendite m istmist. Internet Selles peat kis on tasapisi keerukamate lahenduste juurde minnes p tud lihtsate n idete varal seletada v rguprogrammide t tamisp tteid. P rast teema l tamist peaks kasutaja m istma v rguprogrammide ehitust ja ettetulevaid probleeme ning suutma koostada interaktiivseid klient-server rakendusi. rgu tehniliste k lgede juurde pole konspektis mindud, seda on siinse taseme programmide koostamise oskamiseks juba eesti keeles mitmel pool tutvustatud (viited). Samuti on esitatud vaid v rguprogrammide koostamist tutvustavates kirjutistes toodud j reldusi ilma s gavamatesse arutlustesse laskumata. Alustatakse ehk lihtsaima ning kergesti m istetava veebiprotokolli - kellaaja k simise - kasutamisega, p des kinni ning tr kkides ekraanile serverist saabunud rida. Voogude peat kist saadud teadmised peaksid aitama siin seoseid luua ning kirjapandut m ista ning rakendada. Kahepoolse henduse n iteks on toodud finger-teenus, samuti lihtne ning kergelt/h lpsasti/ m istetav protokoll. llalt kiiresti liigutakse serverprogrammide ning sealtkaudu ka l imede juurde. Praktilisema suunitlusega kursuse puhul v ib nendel teemadel pikemalt peatuda ning mitmeid valmislahendusi kokku panna. L imed tunduvad v rguprogrammide juures loomulikuna ning siin on nende seletamine l inud libedamalt ning tulemuslikumalt kui n iteks liikumise juures l imedega alustades. N ide, kus tuleks Kadrioru sularahaautomaadi juures pikalt oodata, kuni keegi Raplas oma arveldustega hele poole saab, paneb iga he m istma, et suuremate s steemide puhul v ib paralleelprogrammeerimine h davajalik olla. Selline ratundmine aga suurendab v hemalt m neks ajaks pimotivatsiooni ning pealtn ha k llalt raskest l imede teemast saadakse m mne minutiga algne arusaamine ja loomisoskus k tte. Edasised n ansid ja eriolukorrad v ivad ppimise ja tegutsemise indu k rpida, kuid tekkinud p hja peale on j rgmistel tundidel juba kergem uusi teadmisi ning konkreetseid rakendusi ehitada. ppijate imestust ratab lihtsalt kokkupandav jututuba ning loodud p hja peale ehitatavad tekstip hised v i graafilised kestad. On juhtunud, et graafilise v rgurakenduse kokkupaneku n iv lihtsus on meelitanud ppureid mitmeid graafikateemadest segaseks j nud l ike enesele selgeks tegema. N itena lisatud Trips-Traps-Trulli m ngu p hjal on t ienduste abil v imalik juba m rgatav kogus v rguprogrammide tarbeks tekkivaid ideid realiseerida. Peat ki l petab veebip hine s nkroniseerimist vajav oksjoni n ide. Teoreetilisemas kursuses on selle p hjalt v imalik seletada m rkimisv rne osa histe ressursside kasutamisel tekkinud probleemide lahenduste teid ning nende v rdlusi ja realisatsioone. HTTP server Nimetatud peat kk v iks eelmisega peaaegu et kokku kuuluda - tegu on lihtsalt Interneti osa j tkuga - siin aga vaadeldakse vaid ht osa sellest. Kui eespool alustati protokolli loomist nullist, siis siin eeldatakse juba t tavat veebiserverit ning uuritakse, mis sellega seondub. Suur osa piirdub tutvustava jutuga ning on toodud paar illustreerivat servletti. Samal teemaga seotud on ka j tkukursuse konspektis m ned l igud, kuid teema vajaks p hjalikumat l bikirjutamist. L hemalt tegeldakse servlettidega Charles Roosi [58] kursuse ning proseminarit raames, kuid arvestades mitmetes keeltes selleteemalisi terviklikke raamatuid, oleks v hemasti ise ppija tarbeks ja petajate koolitamisel vaja nii mitmek lgsemaid kommenteeritud n ited, andmebaasiteooriaga seotud l ike kui turvalisusega seotud kirjutisi. V hemasti l hiaastatel tundub veebiserverite programmeerimine ha hoogustuvat ning paljud suuremad s steemid on valinud aluseks Java platvormi. Mitmed loodud kirjutised (Alo Linntam, Kaja Trees, Aulis Sibola) on suutnud algtaseme tarbeks k llalt h id materjale kokku panna. Eesti infotehnoloogiaga maailma esirinnas p simiseks kuluksid ka keerulisemad ppematerjalid marjaks ra. Mingist tasemest alates tuleb t oliselt nagunii v rkeelsete uudismaterjalidega piirduda, sest k iki lihtsalt pole m istlik t lkida. V hemalt m ned k mned lehek ljed selleteemalist tutvustavat ning anal sivat teksti kuluksid selles valdkonnas maakeelsena ra. Need aitaksid ka eesti keelt korrastada ja s ilitada ning oleksid h ppelauaks veebis ja mujalgi leiduvatele v rkeelsetele materjalidele. imed ppija tutvus teemaga varjatult ning k llalt suurel m ral v rguprogrammide juures. Siin aga p takse anda l imedekohane teoreetiline taust ning seletada v rguvaldkonnast eemal olevaid l imi vajavaid olukordi. Liikumisn itena toodud pallide p rkamine sarnaneb k llaltki J ri Kiho mullivanniga, kuid on v hemate v imalustega ning loodetavasti selle t ttu ka lihtsam m ista. Ootamise juures on sisse toodud monitori/luku m iste ning tutvustatud, kuidas selle abil on v imalik t rg soovitud s ndmuseni (n iteks nupuvajutuseni) peatada. ib juhtuda, et edasiarenduse korral on teema m istlik le viia j tkukursuse materjalide hulka, v ttes p hjalikumalt l bi nii l imede ja andmete paralleel- ning j rjestikt tlusega seotud probleemid, samuti tutvudes l hemalt Java virtuaalmasina sees t tavate l imedega, nende lesannete ning kasutusv imalustega. kkimine Tegemist j llegi v ikese teemaga, mida v iks vajadusel paigutada graafikapeat kki. Peensustesse laskumata on tegemist k llalt lihtsate vahenditega, mille abil on v imalik paljudele vajalik toiming teostada. Lihtsa tr kkimisv imaluse leidumine v rreldes sellise v imaluseta keelega muudab keele omandamise atraktiivsemaks - v hemasti olen seda mitmel korral ppurite k est kuulnud. Muusika Muusika all k sitletakse nii valmis helil ikude esitamist ning nendega oma rakenduse illustreerimist kui ka MIDI lesehitust ning selle lihtsamaid v imalusi. Peat ki l bimisest peaks piisama tavalisemate rakendusprogrammide muusikaliseks illustreerimiseks. Rakenduse kaunistamine klippidega on piisavalt lihtne ning see ei koorma liialt p hikursuse materjale. K skude keerukus on samas suurusj rgus nt. Multimeedia Toolbook'i omadega, mida petatakse edukalt ilma suurema arvutialase ettevalmistusega inimestele. MIDI juures on l bi k idud vaid lihtsamad ja t htsamad teemad, mille abil v ib rakenduse panna helisid v ljastama vastavalt kasutaja k itumisele. Veidi suuremat (kuid siiski p hikooli ppekava piiridesse j vat) muusikalist ettevalmistust n udvad teemad (akordid, intervallid, helistikud, saateharmoonia) on j etud j tkukursusesse. Samuti j i sinna kvanditud digitaalheliga seonduv. Meelep rast ja vajalikku teemat julgustas mind p hikursuse sisse panema nii Habibullini venekeelses kui Ivor Hortoni inglisekeelses raamatus ettev etud muusikateema. Graphics2D Graphics2D teemad aitavad programmeerijat h stidisainitud rakenduste koostamisel, kuid p tte poolest keerukaid ning ppija anal si- ning algoritmide loomise oskust arendavaid probleeme ette v etud pole. Samas on piisavalt allikmaterjali, mille peal loovate lesannete abil vaimu teritada ning kauneid v pseid kujutisi ja animatsioone luua. Kursuse puhul peab petaja hindama pilaste loovuse- ning vastuv imet ning vastavalt sellele kavandama tunni k igu. Silmn htavaid v imalusi pakuvad selleks Graphics2D vahendid rohkesti, olgu siis tegemist mustrite, v leminekute v i kujundite konstrueerimisega. Swing Tegemist suures osas samuti faktilise materjaliga. Loodut v ib pigem tarvitada k siraamatu ning n idete koguna, mille abil oma loodavaid rakendusi paindlikumaks ning kasutajas bralikumaks muuta. Samuti peaks kirjutatu olema h ppelauaks ametliku API dokumentatsiooni juurde p rdumisel, mis muidu kipub lugemiseks liialt abstraktne olema. Kommenteeritud n idete abil on tunduvalt lihtsam m ista, mida konkreetsete k skude kirjeldamisega m eldud ning mida analoogilistelt kirjeldatud k skudelt oodata v ib. Ennistamise n ite juures v iks kasutajal tekkida levaade, kuidas oleks s stemaatiliselt v imalik luua tagasiv etavate sammudega programme, ppides k rvalt, millised valmisvahendid selle tarvis on juba kokku pandud. Puu abil saab kaudselt seletada, kuidas on les ehitatud osutitel p hinevad d naamilised andmestruktuurid. Siin on lisaks teoreetilisele seletusele v imalik silmaga vaadata, mis mille juurde kuulub ning kuidas hendatud on. Samuti tuleb failis steemi graafilise puuna n itamise lesande puhul l bi k ia rekursiivse andmestruktuuriga seotud teemad ning eneselegi teadmata selgeks ppida hulk algoritme, mille eraldi omandamine v ib m nigikord t tu, vaevan udev ja m ttetu tunduda. Nii Swingi kui Graphics2D seletused ja n ited sobiksid kirjutiste mahtude teistsuguse paigutuse puhul pigem j tkukursuse materjalide juurde. Sel juhul sobiks sinna lisada ka mitmeid siin mainimata teemasid. Graphics2D juures tuleks kindlasti juurde juht- ja otspunktide abil joone koostamine. Samuti kujundi jagamine osadeks ning nendega omaette toimimine. Swingi puhul tuleks oma komponendi loomise kaudu l bi m ngida mitmed kasutatavad mehhanismid, mis ka olemasolevates komponentides varjatuna t tavad. Andmed Javas Tegu on suurema peat kiga, kuhu on koondatud mitmed algsest keeletutvustusest v lja j nud keerulisemad, kuid tarvilikud andmete hoidmise, liigutamise ning t tlemisega seotud l igud. M lupuhver ning andmete vedamine on graafilise kasutajaliidesega harjunud inimesele nii enesestm istetavad, et oleks patt vastavad olemasolevad teemad k sitlemata j tta. Massiivis sortimine on sageli vajalik. Loodud Comparator v imaldab andmeid kergesti j rjestada vastavalt kasutaja soovidele ning sortimise m istmine ja l biproovimine lihtsustab ka tutvumist j rgnevate Java Collections Frameworki v imaluste ja rakendustega. Klassidest ja meetoditest on mul m ne muu kogumiteemalise pikuga v rreldes antud k llaltki l hike levaade, kuid kogemused on n idanud, et siinses k sitluses seletatud teemad tunduvad loogilised ning v etakse k llaltki kergesti ja kiiresti omaks. Loetud materjal sobib k siraamatuks ning teadmisi kollektsioonidest saab hiljem ikka uuesti ja uuesti ha keerulisemate rakenduste komponentidena kasutada. Java head andmestruktuuridega mberk imise v imalused v riksid l hemat eestikeelset lahtikirjutamist. Jaanus P ial on oma loengumaterjalides kasutanud HashMap-i, siinse autori poolt on koostatud n ited nimistu koostamiseks ning Dictionary tarvitamiseks. K llalt p hjalik inglisekeelne selleteemaline k sitlus on [11], mida ka Inga Petuhhov on oma andmestruktuuride kursuses kasutanud. Dokumenteerimine Dokumenteerimine on vajalik oskus, mis ppeprogrammide juures kipub ikka ja j lle ununema ning mille puudumine hiljem iseseisvate t kkide hendamisel kurjasti k tte maksab. Peat kis tutvustatakse Javadoci lihtsat klasside ja meetodite kommenteerimise v imalust, mille abil nnestub kerge vaevaga t iesti loetav dokumentatsioon luua. Installeerimine Samm-sammult k iakse l bi installeerimise etapid alates Internetist sobiva faili leidmisest kuni lihtsaima omaloodud programmi abil installeerimise nnestumise testimiseni. Kodus levinuimate Windows 95/98/Me operatsioonis steemides peaks toiming v lja n gema sna samamoodi. Windows NT/2000 puhul tuleb keskkonnamuutujate s ttimiseks otsida Control Paneli alt Environment Variables ning seal vastav muudatus sisse viia. Et vastavad operatsioonis steemid leiduvad enamjaolt juba kogenuma kasutaja installeerimisalas, siis eeldatakse, et ta suudab seda kaasatuleva dokumentatsiooni abil teha. Sama lugu on Linuxi ja muude os-idega, et administraator enam eeldatavalt nii ksikasjalist juhendit ei vaja. Lihtsa programmi kompileerimise n idis on toodud peat kki arvestusega, et oleks v imalik j rjest n puga j rge ajades omale k ivitamise nnestumise ahhaa-elamus saada ning seel bi tutvustusn idete kaudu uue maailma saladustesse tungida. Tutvustusn ited Tutvustusn ited on k ige vastutusrikkam peat kk. Nii nagu inimese elu m rab suuresti tema lapsep lv, nii j vad koodi kirjutamisel alguses tekkinud tavad k lge aastateks. Eriti, kui on tegemist esimese pitava programmeerimiskeelega. Olen seda kogenud nii enese, oma pilaste kui ka koolikaaslaste juures. K igepealt t le hakanud koodi loogika ja kirjapilt s bib alateadvusse, hilisemat on v imalik sellega vaid v rrelda. Nii otsivad algselt Basicus kirjutanud poisid kas v i maa alt v lja goto lause ning juhivad sellega oma programmivoolu. Samuti tundub algul staatilise main-meetodi abil kujunduse loonutele, et tegemist on ainuv imaliku lahendusega ning hilisem konstruktori v i rakendi init-meetodi selleotstarbeline kasutamine v ib neile tunduda suisa v gistamisena. Siinsed tutvustusn ited on k mnekonna katse ning paarik mne erit bilise n ite seest v lja valitud v imalikult v he tupikteid sisaldav j rgnevus, millele saaks iga ks toetuda oma edasiste programmide koostamisel ning mis sobib nii algajale samm-sammult liikumiseks kui edasij udnule kiiremaks keelest levaate saamiseks. Mitmetes pikutes traditsioonilise "Hello world" asemel on siin valitud esimeseks n iteks pealkirjaga aken. P hjuseks on Java tekstiekraanivahendite suhteline keerukus ning puisus - v rreldes n iteks selles vallas levinumate Pascali, Basicu ning ka C-ga. M ne l hema kirjapildiga keelt n inule v ib tunduda piinana, et kohe alguses tuleb luua klass ja meetod, println-i ette System.out kirjutada. See v ib saada p hjuseks Javast eemale hoidmiseks. Kui aga peaaegu samasuure vaevaga nnestub ekraanile luua toimiv raamaken, mille pealkirja liiatigi nnestub t iesti arusaadavalt ise m rata, siis tekitab see rahulolutunde. Alustades tundub iga liigne s na arusaamatu m istena ning takistab tervikprogrammi haaramist. Seet ttu on p tud kood hoida v imalikult tillukesena. Korraga k sitletava 7 (5-9) osani ei nnestu koodi l hendada (mis n iteks Basicu print "Tere" algajatele v ga atraktiivseks teeb). Esmaste seletustega nnestub m ned k sud ja s nad grupeerida, nii et maksimaalselt k mnekonna minutiga suudab enamik ppureid m ista, millistest osadest programm koosneb. Tavalisest kirjutamisest erinevalt on ra j etud isegi s na public nii meetodi kui klassi eest, et m istmist lihtsustada ning maagiliste t hekombinatsioonide hulka v hendada. Uues versioonis tehtavate muudatuste t ttu v ib virtuaalmasin vajada ka vaikimisi nimetus paketis klassi k ivitamiseks, et nii klass kui selle meetod oleks avaliku juurdep setavusega ning seet ttu tuleb ehk sellest lihtsustusest tulevikus loobuda. Ka on v lja j etud raami asukohta m rav setLocation - ikka lihtsustamiseks ning esimese n htud koodi m istmise ja k ivitamise nnestumiseks. Teises n ites on esimest muudetud k llaltki v he, kuid arvestades, et sealjuures tuleb peale lisatavate k skluste ka n ite muutmine ppida, peaks olema tegemist just paraja lisandusega. Nimelt tundub paljudele harjumatu, et kirjutamine ja kompileerimine k ivad sootuks erinevate programmide abil. Samuti, et kompileerimine pole mitte hekordne tegevus, vaid tuleb ette v tta igal korral p rast koodi muutmist. Eraldi tekstiredaktori ning kompilaatori tarvitamine on hea ning soosib m istmist, et (Java) programmifailid ei ole he kindla arenduskeskkonna p rusmaa, vaid kompilaator on eraldi programm ning sinna ette antavad tekstid on tavalised tekstifailid, mille loomisega peaks igasugune tekstiredaktor hakkama saama. rgnev liikumise n ide pakub konkreetsete operatsioonide staadiumis pilastele t htsa algmaterjali, mis v imaldab m nikord mitme tunni v ltel huvitavate lesannetega tegelda. Teistelgi on tegemist k llalt k itva ning kaasakiskuva, kuid samas lihtsasti ja kiiresti m istetava toiminguga. Kuna k llalt ruttu tekib m nele idee oma t vaeva v hendamiseks, siis nnestub enamasti selle koha peal ts kkel kergesti selgeks saada. Samuti selgineb muutuja m te ning katsetamiste tulemustena ilmneb, mis erinevus on ksteisele j rgnevatel v ksteise sees olevatel ts klitel. Sinna juurde paigutatud v rvim ng pakub noorematele tutvujatele palju. Teoreetilisemat laadi kursuses on j nud see n ide pigem kiirematele lahendajatele ning suurem osa seltskonnast sellega ei tegele. Joonistamise puhul on osutunud kasulikuks v hemasti esialgu teha kogu joonistust alamklassi paint-meetodi sees, olgugi, et see ei pruugi olla l him l henemine. Nii soovitab ametlik dokumentatsioon ning nii tekib v hem seletamatuid probleeme. Samuti olen avastanud, et joonistusoskusega akna ning selle k ivitamise k sud on olnud kasulik paigutada eraldi klassidesse, sest sel juhul tuleb selgemalt v lja klassist eemal tehtud objekti kasutuselev tt. Alles j rgmise n ite juures pannakse need teemad hte klassi kokku. Edaspidi on loodud konteinerisse paigutatav komponent (rakend) ning see toodud n htavale loodava raami sees. Sellist l henemist on edasisel ppimisel soositudki, kuid teiste sarnaste petuste ning n iva l hiduse t ttu on raami alamklassi koostamine esiotsa sisse j etud. T oliselt tuleb p rast m ningaid katseid loobuda raami alamklassist selles staadiumis, sest kuna on tegemist esimese Javakeelse graafilise programmi kirjutamise malliga, siis kipub see m llu j ma ning edaspidi on k llalt raske harjuda konteineri sisse paigutatavaid /uusi, muid/ komponente looma. Samuti v ib konkreetseid operatsioone arvestavas kursuses kaheks klassiks jagamise etapi vahele j tta. Sel juhul teoreetilist arusaamist enamikul alguses nagunii ei teki ning kord mitme ning siis taas he failiga toimetamine lisab pigem segadust kui selgust. Veebilehel oleva rakendi etapi v ib vastavalt kasutajate omandamiskiirusele siit v lja j tta. Aeglasema taipamisv imega grupi puhul sobib rakendi juurde p rdumine pigem tutvumisn idete l pus - siis kui keelega on j utud enam harjuda. Kasutaja andmete j rgi ringide joonistamise n ide v iks j da mitme tunni aluseks. Vaid p ris kogenud programmeerijate puhul v etakse see teadmiseks ning suudetakse teiste keelte pealt saadud analoogiate p hjal edasi minna. N d, kus lihtsamad arvutamise ning joonistamise oskused olemas, v ib nende p hjal k llalt keerukaid ja arendavaid jooniseid koostada, ilma et otseseid arvutik ske peaks oluliselt juurde ppima. Nii v ib harjuda mitmesuguste algoritmide koostamisega. Keerulisemate jooniste puhul v ib tulla rohkem sisendandmeid ning sellega seoses ka tekstiv lju. Funktsiooni graafikute joonistamisel v ib kasuks tulla loodud alamprogramm. M ne aja p rast hakkavad mitmedki tundma, et t iesti kasutusk lblike programmide koostamine v ib juba j ukohane olla. Ka hiire teadete p dmise juures on esitatud v imalikult lihtne ning samas kergesti edasi arendatav n ide. Kuularite seletamise jaoks pole sisemise klassiga n ide hea, kuid kuna l hem anal s on nagunii teooriaosa sisse j etud, siis peaks tutvustamise jaoks just siinne olema sobiv. Tekstiekraani n ide on pandud muudest eraldatuna l ppu. Iseenesest aga sellise lihtsa sisend-v ljundn ite ning eelnevate katsetuste tulemusena peaks olema v imalik ka k sureal m rkimisv rne osa vajaminevatest lihtsamatest abiprogrammidest kokku panna. Kel aga tahtmine t sisemate rakenduste koostamise juurde asuda, see peaks siirduma raamatu algusse ning s vendatumalt ppima hakkama. Java j tkukursuse konspekt Java j tkukursuse konspekt (Lisa 2) on ppevahendiks ja abimaterjaliks kogenenumatele programmeerijatele. Ei pretendeerita levaate andmisele k igele Javaga seonduvale. Mitmetel teemadel on lugeja p tud aidata tasemeni, kus ta suudab keskmise raskusastmega programme ise kokku panna ning edasi juba m ista dokumentatsiooni ja keerulisemaid ppematerjale. J tkukursuse teemad on suhteliselt iseseisvad ning ldjuhul ei eelda j rgnev teema eelnevaga tutvumist. Seet ttu saab otsida sisukorrast sobiva peat ki ning see omandada, soovitavalt n iteid arvutil k ivitades ning oma fantaasia j rgi edasi arendades. K ll aga ei seletata enamasti le p hikursuses k sitletud m isteid ja teemasid ning kui taust tundub segaseks j ma, siis tasuks uurida nii p hikursuse konspekti kui p da omale mujalt abimaterjale otsida. Raamatu esimene pool on p hendatud mitmesugustele joonistamise ja graafikaga seotud teemadele. Lisapakettidest on tutvutud vaid Java3D-ga. JMF (Java Media Framework) ning JAI (Java Advanced Imaging) on j nud puutumata. Sellegipoolest peaks siinse petuse ning ametliku dokumentatsiooni najal olema v imalik lahendada enamik graafikavallas ettetulevatest probleemidest. Graafikaga seotud arvutuste p hjalikumaid petusi v ib leida raamatust[40]. Kirjutise teises pooles on l bi vaadatud v rgu- ja andmebaasiprogrammide koostamine ja nendega seonduvad teemad ning seal on graafikat kasutatud minimaalselt. Autoril on mitmegi sinna ossa sobiva peat ki jaoks juba n idete kogu koostatud v i lihtsalt vastav teema kirjutamisvalmina meeles m lkumas. RMI k rvale sobiks universaalsem CORBA koos seletustega, kuidas Javakeelseid programme muukeelsetega hendada. Laiemat tutvustamist vajaksid J2EE spetsifikatsiooni p hjal loodud vahendid, samuti arutlus, millal on neid m istlik ja millal m ttetu kasutada. Ka laieneva kasutusega XML-i teemad kuuluksid raamatu siia ossa. Kuna vastavad vahendid on v etud JDK 1.4 standardse API koosseisu, siis see justkui soosiks nende kasutuselev ttu. Samas staatuses on ka JCE ehk kr ptograafiavahendid, kus nii DES-i, RSA kui muude algoritmide abil andmed salastada ning sobiva v tme leidumisel taas lugeda. Kirjutise l petab muusikaosa, mille m istmiseks ja edukaks rakendamiseks tuleks meelde tuletada kooliajal nii f sika- kui laulutundides pitu. Java3D Kolmem tmelise graafika peat kis on ette v etud Java3D standardne lisapakett ning tutvustatud nii sealseid lihtsamaid kui veidi keerulisemaid kujundeid ja p tteid n idete varal. L puks on selle abil kokku pandud kosmoses liikumist imiteeriva keerulisema programmi s da, mille peale on juba iga hel v imalik oma oludele sobilik rakendus ehitada. Rekursiivne joonistamine Rekursiivse joonistamise juures tutvustatakse iseennast korduvalt v lja kutsuva alamprogrammi rakendamist jooniste loomisel ning reaalsust imiteerivate programmide koostamisel. Sellest peat kist v iksid kasu saada nii graafilise kujunduse koostajad kui ka inimesed, kellele rekursioon huvitava ja vajalikuna tundub, kuid tavaline andmep hine l henemine on kuiv v i raskesti arusaadav tundunud. Maatriksarvutused Maatriksarvutuste peat kis v etakse l bi tasandil ja ruumis nihutamise ja keeramise puhul kasutatavad tehted. N idatakse, kuidas suure punktide arvuga kujundi korral v ib masina arvutusvaeva oluliselt v hendada ning seel bi programmi t d kiirendada. N uab veidi enam matemaatilist p hendumist, kuid v hemasti alates keskkoolist peaks iga hele t sisema s venemise korral arusaadav olema. Joonistamine Joonistamise peat kis tuletatakse meelde Java graafikakomponentide t te ning joonistamisel vajalikud k sud. Edasi vaadeldakse kshaaval Java teekide poolt pakutavaid filtreid ning petatakse neid valima ja kasutamisel omadusi m rama. Peat kis pitu peaks sobima nii fotode v ikeseks iluraviks kui uute piltide kombineerimiseks ja s nteesiks. Pildit tlus Edasi minnakse pildit tlusse veel s gavamale ning petatakse ksiku pikseli kaudu andmeid k sima ja m rama. Ehkki n ited on koostatud lainetuse loomise kohta, saab siin omandatud oskusi kasutada nii pildiandmete anal si (nt. kirjatuvastus), arvutitevahelise lekande kui mitmesuguste animatsioonide loomise juures. Koos ekraanipildi kopeerimisega v imaldavad siin peat kis omandatud oskused koostada rakenduse, mis anal sib m ne teise programmi tegevust ning vajadusel suunab v i testib seda. Turvalisus Turvalisuse alla on kokku koondatud mitmed Java standardvahendite selleteemalised osad. Avaliku v tme kr ptograafiaga seotud toimingud on sarnased nii kaasatulevate vahendite abil arhiivi signeerimise kui ka otseselt baidijadale digitaalallkirja andmise puhul. Samuti vaadeldakse peat kis, kuidas kindel olla, et k ivitatav programm ei saaks ei kohalikule masinale kurja teha ega ka v rgu kaudu minna ebasoovitud toiminguid sooritama. Andmebaas Andmebaasi juures n idatakse kommenteeritud piltkirjas, kuidas luua lihtsaim hendus MySQL-andmebaasimootoriga ning selle kaudu andmeid vahetada. Samuti petatakse servleti abil andmebaasile lihtsat veebiliidest koostama. JSP puhul j tkatakse veebiserveri programmeerimist ning alustades lihtsatest paarirealistest lehtedest j utakse andmete hoidmiseks ning arvutust deks m eldud oani. hiteemad RMI-st on toodud ks terviklik t tav n ide, mille p hjal on v imalik vajadusel tunduvalt suuremate oskustega kaugkasutatavaid objekte luua. T lkimise, atribuutide ning numbriformaadi juures piirdutakse samuti l hidalt, sest informaatika seisukohalt on teemad lihtsad. Kui rakenduste koostamisel vastavad vajadused tekivad, siis peaks siin toodud n idete p hjal analooge konstrueerides suutma iga ks enamiku oma soovidest rahuldada. Erindite puhul on tegemist p hikursuses alustatud teema j tkuga. Kui seal piirduti olemasolevate erindite p dmise ning programmide koostamiseks h datarviliku lihtsama t tlusega, siis siin luuakse ja lastakse lendu ka ise erindeid ning tutvutakse v hemlevinud reageerimisv imalustega. Muusika Muusika puhul on samuti tegemist p hikursuse materjalide j tkuga. Siia on j etud pikemat m tlemist vajavad teemad. MIDI saateautomaat v iks huvi pakkuda ka muusikaga t sisemalt tegelevale inimesele. Seal on tutvustatud nii etteantud duuride j rgi taustaakordide koostamist kui ka igal korral uuena k lavat rahvaliku viiuli saatepartii s nteesi. Kvanditud heli m istmine v ib algul veidi aega n uda, kuid p hisisu tabamisel ei tohiks sealt soovitud suunas edasiminek enam liialt raske olla. ppet ki edukalt omandanu peaks suutma koostada heliredaktoreid ja luua heli salvestavaid ning lihtsamal moel anal sivaid rakendusi. Javaskripti konspekt Konspekt (Lisa 3) on m eldud kasutamiseks p hiliselt abimaterjalina loengute ja praktikumide juures, kuid sellest peaks kasu olema ka ise ppijatele. Terviklikku levaadet pole taotletud, sest eesti keeles on ilmunud mitmeid selleteemalisi raamatuid [39] [61] ning veebilehti [8]. Pigem on p tud anda levaade teemadest, mis on seni puutumata j nud v i millest kergelt le libisetud. Alustuses on l hidalt tutvutud peamiste tarvilike k skluste ning konstruktsioonidega. Varasema programmeerimiskogemuse v rvaliste seletuste abil peaks nende kaudu omandama oskuse lihtsamate programmide kirjutamiseks, vajadusel n idetest analooge abiks otsides. Pildid Piltidele on p hendatud vaid paar lehek lge, kuid sealt saadud tehniliste oskuste abil ning lesannetest v i oma peast ideid otsides peaks saama kokku panna p ris mitmek lgseid graafikalahendusi nii m ne teema tutvustamiseks, protsessi j ljendavaks interaktiivseks mudeliks v i lihtsalt silmailuks. Rohkem graafikaga tegeleva kursuse puhul tasuks punktpiltide p hjal panna kokku nii n itlikustavaid jooniseid, animatsioone kui simuleerivaid mudeleid ja m nge. P hikooli arvutiringis pusimiseks piisab vaid piltide teemast mitmeks kuuks. Objektid Sisseehitatud objektide peat kis on seiluri standardvahendite levaade. Sealt peaks kasutaja avastama enese jaoks skaala, mida on p hjust asuda ise kirjutama. V rreldes m ne muu keelega (n iteks Javaga), on kaasatulevate oskuste kogum suhteliselt v ike, kuid kuna nii k sklused kui objektid on k llalt paindlikud, siis saab nende abil sooritada enamiku vajaminevatest toimingutest. P rimist ning objektorienteerituse muid n ansse ei pruugi v iksemates Javaskripti programmides kuigiv rd vaja minna, kuid siinne kokkupuude loob kogemuse, et p rimine ei pruugi sugugi alati vaid klassidega seotud olla. Isenditega tegelev programm pakub petajale v imaluse tutvustada objektorienteeritud andmebaaside t tteid ning nendele esitatavaid n udmisi. L hemalt tutvutakse massiiviga ning selle abil lehek lje muutujates asuvate kasutaja silma eest peidetud andmete v ljastamisega p ringu peale. Isendite juures k iakse s stemaatiliselt l bi Javaskripti objektide loomise ja kasutamisega seotud teemad. pitu peaks aitama nii m ista olemasolevate objektide toimimist kui ka aidata enesele sobivaid objekte koostada. Samuti v iks peat kk laiendada edasij udnute objektorienteerituse alast silmaringi, n idates nii Javast kui C-st p tteliselt erinevat klassideta p rimist. Regulaaravaldised hemalt on le vaadatud regulaaravaldised, mis teistes samateemalistes pikutes kipuvad j ma t helepanuta, kuid samas on k llalt t husaks abivahendiks kasutajalt saadud tekstide anal sil. Need lihtsustavad m rgatavalt vormist serverile saadetavate andmete mustrile vastavuse kontrollimist (n iteks, kas kasutaja on sisestanud korrektse kuup eva). Arvestades, et versioonist 1.4 on ka JDK standardpaketti lisatud regulaaravaldised, aitab nendega siin tutvumine kergendada edaspidist s tlust. Kihid Keerulisema ning kasutajast s ltuva kujunduse puhul ei saa le ega mber kihtidest. Need on h davajalikud nii men de loomisel kui mittetekstiliste animatsioonide koostamisel. hes kihtidega on n idatud ka hiire teadete p dmine ning selle realisatsioon nii Netscape Navigatori kui Internet Exploreri puhul. Ka kihtide juures tuleb vahetevahel seilurite erinevust arvestada. Andmed puossa on koondatud mitmed andmetega seotud toimingud. K psised on h datarvilikud, kui tahetakse serveriprogramme kirjutamata talletada v rtusi kasutaja j rgmise sisenemise tarbeks. Andmete lugemine aadressireal v imaldab Javaskripti abil kokku panna taolisi teenusehek lgi, mis muul juhul j vad vaid serveriprogrammide p rusmaaks. Edasiarendusv imalused Konspektist on puudu veel mitmed teemad, mis terviklikkuse m ttes sinna v iksid kuuluda ning mida eesti keeles pikemalt lahti seletatud ei ole. K llalt t htis oleks raamide ja akendega seonduv, mis v imaldaks sobival ajal vajalikke andmeid aknas n idata ning aknaid paigutada ja sulgeda. Ka vormi elementide s stemaatilisem levaade oleks vajalik, et kasutaja teaks, mida millestki oodata v ib ja kuidas omadusi m rata. Samuti kuluks k sitleda serveris programmeeritud veebilehtede ning Javaskripti koost d, et nnestuks v imalikult optimaalselt veebilehestik koostada ning k ik kliendi juures tehtavad t d ilma aegan udvalt uusi lehti avamata sooritada. Veebiprogrammeerimise lesannete kogu Koostatud lesanded (Lisa 5) on kavandatud abiks nii petajale kui ise ppijale, pakkudes mitmesuguseid lahendust n udvaid probleeme ning andes mitme taseme t ttu he v imaliku tee lahenduse poole liikumiseks. Kuna korduvalt on autor kuulnud petajate nurinat v heste kokkupandud arvutialaste lesannete le, siis siinne kogu v iks seda l nka veidi t ita. Kogu pole sugugi ammendav ning n iteks andmebaaside teemal sobiks hulga p hjalikum komplekt lahendamiseks, kuid nii algajad kui ka m rkimisv rne osa edasij udnutest peaksid leidma omale sobivaid edasiarendamist v riva n iteid. Osa lesannetest v ib sobida mitmel pool otse kasutada, kuid soovitav on v tta leitud idee aluseks ning vastavalt pitud taustale lahendusteed lihtsustada v i sellele n ansse juurde m elda. Ideed on enamasti k llalt universaalsed ning sobivalt kohandades peaksid lahendamiseks sobima mitmesuguse ettevalmistuse korral. Mitmelgi puhul on pakutud enam v imalusi kui lihtsamaks oskuste harjutamiseks tarvilik. Kui lesanne liialt keerulisena tundub, siis ei pea seda mitte k rvale j tma, vaid tuleb vaadata, kas nnestub m ne punkti eemaldamise v i lahtiseletamise abil probleem ppijatele suup raseks teha. Enamik siin toodud lesandeid pole seotud konkreetse keelega, vaid samu lahendusi on v imalik saavutada keelest s ltumata. rgatav osa lesandeid on jaotatud kolmeks alapunktiks, kus iga j rgmine peaks eelmisest paar-kolm korda keerulisem olema. Tegevused on p tud jagada n nda, et nii esimene punkt eraldi kui kaks alguspunkti koos annaksid terviku ning sinna pidama j des ei tekiks poolelij mise tunnet. Koostamise ajal on p tud nii arvestada, et likooli 90-minutilise praktikumipaari ajal j uaksid k ige tugevamad lahendada kogu kolmest punktist koosneva ploki. Enamik saaksid selle ajaga hakkama kahe astmega ja m ned neist j uaksid raskeima taseme l bi m elda. Ning ka k ige n rgemad v i lihtsalt pilased, kel sel korral pea lahti pole, peaksid v hemasti esimese tasemega hakkama saama. lesanded, kus on rohkem alapunkte, on m eldud kas alg ppeks v i siis v ga erisuguse tasemega ppijate r hma tarbeks. Esimesel juhul on teemad v imalikult v ikesteks osadeks jaotatud, et iga hel nnestuks tunni jooksul v hemalt ks v i kaks eduelamust saada. Teisel juhul on arvestatud, et tugevamad v ivad m ne alumise taseme l bi katsetamata j tta (eeldusel, et nad m tetes sellest le on) ning siis raskemate etappide kallale asuda. idete koostamise ja esitamise p tted. idete hulk, pikkus ning osakaal programmeerimis pikutes k iguvad suurel m ral alates t isteoreetilisest jutust ning tegelike rakenduste ja kasutusv imaluste vihjete t ielikust puudumisest kuni ksikute kommentaaridega v ljatr kitud l htekoodi v i toimuvate s ndmuste ksikasjaliku kirjelduseni [38]. S ltuvalt inimt bist ning ainevaldkonnast v ib kasu olla nii m lemast rmusest kui tasakaalustatud keskosast. V ib isegi juhtuda, et lihtsam on lugeda teooriat hest ning katseid teisest kohast kui et p da nende hitatud kujust selget pilti saada. Puhas teooria on enamasti kirjutatud k llaltki loogiliselt ning kokkuv tlikult, nii et sealt on v imalik n puga j rge ajades k igepealt tted selgeks saada ning siis tasapisi s gavamale minema hakata. N nda v ib k ll otseste probleemide lahendusteni j udmiseks hulga aega kuluda, kuid samas - olles kord lalt l henedes alla v lja j udnud - saab sarnaseid olukordi eelpool kogetud teadmiste abil juba h lpsamini lahendada. Kui ldpilt selge, on ka kergem otsustada, kas ksikjuhtudele lahendusi leidub v i mitte. L henemise puuduseks on aga, et kui otsese lesande tarvis on vaja l bi k ia mitmeid valdkondi, siis kulub palju aega tete omandamise peale ning m ni suhteliselt v ike osa v ib j da komistuskiviks edasise t tkamisel. Ka v ib m nele inimesele ldistuste tegemine ja nende j rgimine osutuda tunduvalt raskemaks kui otseste n idete omale vajalikuks kohendamine. Praegu kiirelt arenevas arvutivaldkonnas mitmedki ldisena n ivad arusaamad ei pruugi m ne aasta p rast enam samasugused olla. Sarnaste olukordade lahendamiseks v ib leiduda tunduvalt paremaid v imalusi ning praegused tavad v ivad pakkuda vaid ajaloolist huvi ning kogemusi uute vahendite loomisel, mitte aga ainuv imalikku lahendusteed. tavast n itest alustades v ib alati kindel olla, et v hemalt etteantud kitsendavate tingimuste korral lahendus toimib. Seda polegi nii v he. Kaugelt ja k rgelt l henedes tuleb m nikord enne kurja vaeva n ha kui kasv i midagi pisikest t le hakkab. Kui aina proovid ning p ad k ike ha lihtsamaks teha, aga ikka ei nnestu, m jub see halvasti ning tekitab tahtmise kogu loole k ega l a. N idet muutes saab pidevalt kontrollida, millisest hetkest alates enam tulemus ei vasta oodatule. Nii on v imalik pisiosi muutes s steemi tundma ppida ning omandatud p tete alusel edaspidi tarvilikke tulemusi saada. Puuduseks j b muidugi, et tehtud lihtsustused v ivad j vad liiga suurteks ning omandatud teadmisi pole v imalik muutunud keskkonnas kasutada. Kui kahte l henemist v rrelda, siis need sarnaneksid tee otsimisele v ras linnas. Teoreetilise l henemise puhul tuleks ette v tta linna ldplaan, selgitada j e, raudteede ning suuremate t navate paigutus ning alles seej rel asuda aadressi j rele iget paika otsima. N idetele aga ehk vastaks kergelt ekslev teeleasumine oletatava sihtkoha l hedasest paigast teadmisega, et l htekohta v ib alati tagasi minna ning sealt saab uuesti teises suunas otsinguid alata. V ib tunduda, et esimene viis on palju parem, kuid salap rases paigas hoovi peal asuva kingsepa leidmiseks v ib ekslemisest hulga enam kasu olla kui ebat pse kaardi uurimisest. hikesed n ited ite juures pean t htsaks, et see oleks piisavalt l hike ning haaratav, kuid samas terviklik ja t tav. Sellise l henemisega ppijaid on mitmeid, kuid sellegipoolest kipub enamik arvuti pikute koostajaid n iteid kas tervikluse hinnaga l hendama - lootes, et ppurid kerge vaevaga puuduvad osad juurde m tlevad ja tulemuse t le saavad - v i ilu- ja viisakusvahendeid lisades tahtmatult pikendama, raskendades tunduvalt v imalust n idet korraga haarata. Raamatu autorile iseenesestm istetavad k ivitamiseks tarvilikud read v ivad ppija jaoks osutuda pea letamatuks raskuseks, kui talle pole veel tekkinud harjumust ja korrap ra, millised s nad millises j rjekorras millist sisu t hendavad. Kuigi v ib tegemist olla pealtn ha lihtsate asjadega, suudab inimene siiski omandada parimal juhul paar-kolm uut m istet tunnis ning kahju kui sisuni j udmiseks tuleb enne ekselda tehniliste murede r gastikus ning abi nende lahendamiseks ei paista ka kusagilt tulema. petajal tekib paratamatult kiusatus n ited lisaks heale sisule panna ka v lja n gema. On ju v rratult ilusam n idata ekraanil korralikult joonistatud ning pealkirjastatud ja m tmisandmetega varustatud kuupi kui lihtsalt mingit hmast udukogu, eriti kui selline tulemus on v imalik saavutada v hem kui minuti kl bistamisega. ppijale aga on sisu ning kujundamise osad programmis htviisi udused ning vajaliku koha les leidmise aeg v ib kasvada m rgatavalt. Inimene suudab korraga meeles pidada ja anal sida viit kuni seitset (erijuhtudel 3-9) tema jaoks eraldatavat tervikut; nud andmed tuleb paigutada aeglasemalt t tavasse p llu ning sealt k tte saamiseks tuleb nad uuesti meelde tuletada. Ka ise olen n idete koostamisel l inud m nikord kaunistuste ja korra teed, kuid enamasti olen m rganud selle tee m ttetust. ppijate hulgas leidub ikka keegi, kellele just need paar-kolm kaunistamise tarvis loodud lauset komistuskiviks saavad ning keda sealt le aidata tuleb. Paremal juhul nnestub neil siis sisust aru saada, kui k leliigsed (sisusse mitte puutuvad) laused maha kustutada ning j tta alles vaid kriitiline mass, mille puhul rakendus veel oma loodud eesm rgile vastab. Kui sellest surnud punktist on le saadud, siis v ib ta ise juba rahumeeli sinna kaunistusi lisada, saades k igest toimuvast aru. K ll aga tuleb m nikord sootuks paralleelne n ide kirjutada ja kasutajaliides otstarbekaks ning meeldivaks muuta, et oleks midagi k itvat tahvlile n idata ning ka ppijal tekiks korralikuma t gemise harjumus. idete seeriad Kui n ited tehakse samast t vest, siis peaks olema kergem ka helt j rgmisele edasi minna. Enamasti piisab t htsamate vahendite katmiseks kahest-kolmest n itest, kuid m nikord on ka viiel korral sama teed j rjest edasi arendatud. Kord hes meeldivas ning ladusalt loetavas v ljamaa pikus oli sama n idet edasi kasvatatud kaheksa korda. [5] Paberi peal kulutab selline tr kkimine ohtralt ruumi, eriti kui pikki l ike korduvalt tr kkides seal vaid ksikuid ridu muuta. Arvuti puhul mure v heneb, sest tekst v tab andmekandjal suhteliselt v he ruumi ning m mnerealisi n iteid mituteist korda sarnaselt tr kkida pole kuigi kulukas. Kui n ide panna viitena avanema k rvalaknas, siis p seb sinna kergesti hiirevajutuse abil ning teksti ldine kude j hkumata. Paljude lisav imaluste puhul on m istlik mitte neid kshaaval olemasolevale juurde lisada, vaid lihtsa p hja peal ksikult esitada ning l puks k ik kokku panna. Kui l igud on lihtsad, siis p rastine tuttavate s ltumatute k skude kokkupanek pole enam raske. Kommentaarid idete koostamisel tundub ahvatlev l a kaks k rbest he hoobiga, lisades l htekoodi sisse pikad kommentaarid algoritmi toimimise ja tehniliste vahendite kohta. Nii aga koodi kompaktsus kaob ning pikki tehnilisi ja autori iguslikke seletusi lugedes on algajal k llalt raske j uda tuumani, kuidas toimib programm. Koodis olevad p hjalikud kommentaarid on otstarbekad koodi dokumenteerimise juures, kui programmeerijal on mugav k hes kohas kirja panna ning lasta hiljem javadoc-il v i muul sarnasel programmil dokumentatsioon loetaval kujul vormistada. idete valimine Suurema n idete hulga puhul l heb lahendamise aluseks sobiva algmaterjali leidmine k llaltki keeruliseks. Kui nnestuks ettev etavad teemad hte loogilisse ritta paigutada, ka siis ei nnestu enamasti teema igale osale n idet koostada ilma, et see muudest n idetest m rgatavat osa ei kordaks. Et teemad kipuvad omavahel samuti l bi p imuma, siis see lubab ka n idetel osaliselt kattuda, teisalt aga peaaegu et kaotab lootuse teha iga teemal igu kohta ilus mmargune terviklik l hike arusaadav piiritletud n ide, mida ka kerge lugeda oleks. pikutes on olukord lahendatud mitmeti. Kord on toodud lehek lgedepikkune tervliklik n ide ning seej rel asutud keerulisemaid ja eeldatavasti raskemini m istetavaid ning teema jaoks tarvilikke kohti selgitama. Selline l henemine sobib edasij udnutele tuttava teema seletamisel, kus lugeja on kohe v imeline ldpilti haarama ning lesehitusse soovi korral kas v i ise osi lisama v i sealt eemaldama. Sellisele lugejale piisab m nikord suisa paljast ksikute abistavate kommentaaridega l htekoodist. Edasised seletused v iks ta vajaduse korral ning kontrolliv imaluse olemasolul ka ise valmis kirjutada. Nende l bilugemine v ib koodi uurimise k igus tekkinud arvamusi kinnitada ja ldistada v i valearvestusi avastada. Vastasel juhul ilmenvad need alles masinal katsetamisel. Eelmises l igus k ne all olnud tekst sobib ka teemaga v hem tuttava, kuid muidu usina ning lahtise peaga ppuri tarvis. Tema saab esialgsest koodi uurimisest parimal juhul uduse ldpildi v i lihtsalt aimu koodi ligikaudse pikkuse ning v ljan gemise kohta. Masinas rakenduse n gemine ja kasutamine veenab, et tegu pole mitte lihtsalt kokku kirjutatud ridadega, vaid et masin nende p hjal soovitud t id ette v tta m istab. Teemat v hem tundva usina kasutaja tarvis on korralikud seletused m rava t htsusega. Need avavad raskemad kohad, millest pole olemasolevate teadmiste abil ilma lisamaterjalideta v imalik aru saada, samuti seovad n ited eelnevalt teatuga. Kasuks tulevad teadmisi kinnistada aitavad kokkuv tvad laused. Kui ta n d uuesti esialgse tervikliku l htekoodi l bi m tleb, siis peaks m istmine olema ligikaudu samal tasemel kui esimest korda koodi lugeval teemaga tuttaval inimesel. idete k ttesaadavus Kui n ited l hevad rohkem kui lehek lje pikkuseks, siis tavatsetakse need m nikord lisadena l ppu kirjutada. Arvan siiski, et kui n idet kasutatakse vaid he peat ki piires ning mujal sellega enam ei tegelda, siis tuleks n ide teksti vahele kirjutada, nii et see lugedes silma alla j ks. Vaid harva viitsitakse raamatu l ppu lapata ning keskelt seletusi lugedes l pus n puga j rge ajada. Paar lehek lge edasi-tagasi vaadata on tunduvalt lihtsam. Ehkki paberile tr kitud kujul on koodi mugavam lugeda kui arvutiekraanilt, tundub m nikord m istlikum n idete lisadesse kirjutamise asemel need kettaga kaasa anda, et kasutaja saaks neid siis lugeda, k ivitada, veenduda t tamises, n idete v imalusi muutmise teel kontrollida ning mujale sobivaid l ike kopeerida. Paberile tr kitud n ited on asendamatud rahulikult suvel metsas kuuse all istudes keele v imalustesse ja ehitusse s venemiseks, ent k llalt sageli on just "elavatest" n idetest kasu. Sama n ite mitmekordsel kasutamisel tuleks t htis l ik ikka uuesti jutu juurde kopeerida, olgu v hikeselt ja v ikeses kirjas. Kui kord on juba terviklik kood le vaadatud, siis muutub v ljatoodud osade sobivasse paika asetamine lihtsamaks, seletuste juures t tava teksti silmitsemine aitab hoida kontekstist liigselt kaugenemast ning v ltida m tete uitamist muremaale, kus tekib pelgus, mida on v imalik t ide saata ning mida mitte. Kui eelnevalt t tavana n htud k sud on silme ees, siis j llalt suur t osus, et tekstis sinise v rvi asendamisel rohelisega muutub ka ekraanil sinine roheliseks ning t iendavaid probleeme muutusega koos ei teki. Kirjeldusega kaasneb ikka oht - eriti kui lugeja materjalist tugevalt le ei ole - et autor j tab m ne segase asjaolu mainimata v heb tal midagi k rvust m da ning pealtn ha lihtne t iendus ei lase kogu s steemil enam uuesti t le hakata ning peab taas hakkab algusest uurima, et mis on mille jaoks ning kus viga tekib. iteks l ik t tavat koodi Kasutajale n idatav programm v i teksti kopeeritud v ljund peab olema sama n ide, mitte selle ilustatud koopia. T tava n itega kaasneb peale paari tutvustatava koodirea veel palju muudki: kogu k ivitamiseks ja kasutamiseks vajalik taust. Olen ise kurja vaeva n inud paarirealise servleti t le saamisega, sest n ide oli tehtud k llalt lihtne, selle vaatamiseks esitatud koopia aga sisaldas eneses veel vahendid teistele lehtedele siirdumiseks ja abiinfo tarvis; need aga muutsid v ljundis n puga j rje ajamise v imatuks. Rida-realt algvariandi ning oma t kontrollimise v imalus on v ga t htis uute vahenditega tutvumise algj rgus. Nii nnestub erinevused ning v imalikud vea p hjused avastada ning j uda suhteliselt kiiresti sobivalt t tava koodini, millesse muutusi viies saab seda tasapisi p hjalikumalt tundma ppida. R gitakse, et v ikestel lastel pidi j ljendamine olema k ige levinum ning tulemuslikum ppimise moodus, kuid arvan, et pea sama kehtib ka mujal uude maailma sisenemise puhul, milleks programmeerimisega alustamine ju on. Kui koodi sisse pandud ilustused muudavad selle lihtsalt kohmakamaks ning raskemini m istetavaks, kuid otseselt ei v lista veel rida-realt sisu j lgimist, siis samaeesm rgilise kuid teiste k skudega koostatud programmi juurest on juba k llalt lootusetu j lgida, mis millest kuhu tekkis. Seletava teksti vahele pikitud koodin ited peavad olema sinna t tavast programmist kopeeritud, mitte niisama sisse kirjutatud. Kuigi v ib tunduda, et lihtsate k skude kirjutamisel pole v imalik vigu teha, nnestub siiski pea igas k mnendas n itel igus unustada sisse m ni tarbetu rida v i kusagil t ht valesti kirjutada, nii et n ite m te h gustub ning kasutaja ei saa seda enam pidada ilusaks etaloniks, millesse uskuda ning mille j rgi oma tegemisi s ttida. Nii pikus kasutatud kui muul moel ppijat abistavad n ited olen p dnud koondada kokku, et neist koodi kirjutamisel abi v iks leida. Algselt koostatud k mnekonna p ite abil saab niidiotsa k tte suurema osa tavavahendeid sisaldavate programmide koostamiseks. Nende seast sobiva leidmisel ei teki loendi olemasolul kuigi suuri raskusi. paari minutiga nnestub j rele vaadata, kas valmiva t loomiseks on abi loota v i mitte. idete paigutamine veebis ppematerjali koostamisel kaetud teemade arv aegam da kasvas, samuti oli otstarbekas m ne t htsama l igu mitmest k ljest iseloomustamiseks teha rohkem kui ks n ide, sest m nele ppijale sobivad l hikesed ja kuivad, m nele lihtsamakoelised kuid pikemad n ited. N nda kasvas n idete arv tuhandeni. Sellises hulgas korralikult orienteeruda ei nnestu, tuli hakata koostama muid vahendeid, et otsimise aeg n itest saadavast kasust suurt osa ra ei kulutaks. ppet s andis hea tulemuse n idete jaotamine tundide j rgi. Uue teema algmaterjaliks vajalikud tunni n ited moodustasid he kataloogi. Enamiku vahendeid sai samast k tte. Kui aine koosnes m neteistk mnest praktikumipaarist ning k mnekonnast eraldiseisvast loengust, siis nnestus selline kapseldamine ilusti. Varem l bi v etud teema n ited leiti eelmistest kohtadest ilma suurema otsimiseta m lu j rgi les. Varasemat n idet uue teema alusena kasutades kopeerisin selle julgesti ka uue tunni kataloogi ning otsimise peale kuigiv rd aega ei kulunud. Kordavate lesannetega tunnis uut kataloogi ei loodud ning tuli eelmiste hulgast sobivad n ited leida. Selline jaotus t tas htlase tasemega algajate r hma puhul. Edasi udnutele sobisid temaatilised veebilehed. Suurima ja v hima ploki n idete arv erines rohkem kui kaks korda, kuid v hemalt oli enamik kohti n d loogilist jada pidi leitavad ja hele veebilehele seatud n idete arvu v is alamlehtedeks jagamise ning alapealkirjade abil kasutajale levaatlikus vahemikus hoida. M neteistk mne viite hulgast nnestub peale vaadates enamasti sobiv les leida. Kui aga lehel on n iteid le kahek mne, peavad need olema alapealkirjade v i muude eraldajatega k mnekonna n ite suurusteks loogilisteks gruppideks eraldatud. Siis paraneb otsitud l igu leitavus m rgatavalt. idete jagamine viie suure teema vahel ning otsingupuu kahetasemeliseks muutmine tegi struktuuri selgemaks ning kergendas sobiva koha leidmist nii otsimisel kui andmete lespanekul, kuid j ttis ikkagi lahtiseks mitme jaotisega seotud teemade leidmise. Paigutamisel seadsin teemad enese tarvis m ttes t htsuse j rjekorda ning kui n ites oli kasv i veidi puudutatud t htsamat teemat, siis paigutasin n ite sinna. Nii aga j id jaotisest v lja mitmed teemad, millega kaasnes l ike minu silmis t htsamatest teemadest. Nii n iteks l imede t on siin peaaegu alati seotud v rguvahendite v i graafikaga ning otsesesse l imede peat kki j nuks vaid paar terviklikku n idet, mis said seekord keele vahendite heks alateemaks pandud. Kui kasutaja on juba n idete paigutusega tuttav ning harjunud, nnestub tal t oliselt m ne aja jooksul enesele sobiv n ide les leida v i veenduda selle puudumises. Esimesi kordi n itesaidile sattudes aga v ib peajaotistest v lja j nud teemal n ite leidmine k llalt vaevaline olla v i tuleb sellest aja kokkuhoiu huvides suisa loobuda. Dubleerivad viidete lehed Eelpool kirjeldatud olukordade lahendamiseks tuleks n idete paiknemise puu k rvale luua lisalehed mitme ploki vahel jaotunud teemade tarvis. Nii on tehtud mitmetes otsingumootorites ning arvan, et selline teguviis peaks end ka n idete paigutamisel igustama. he lisalehena olen v lja toonud lihtsad n ited, et kasutaja ei peaks p dede ja -vahendite otsingul sadades pikkades ja keerulistes seletustes tuhlama. Sarnaseid lehti peaks aga esialgsel hinnangul olema k mmekond, v ibolla rohkemgi. Kui neid rohkem koguneb, on abilehedki ehk m istlik kuidagimoodi gruppidesse koguda. Siiski arvan, et peaks kindlalt eristama andmete paiknemise p hipuud ning lisalehtede "abipuud". Kui m nel inimesel on soovi p hipuud j rjest uurides k ik n ited le vaadata, siis peab tal see v imalus olema. Viiteid omavahel segades v ib samale n itele sattuda mitmest kohast ning ei anna selget levaadet, palju on l bitud, palju on ees. Otsilehtedes on suur osa automaatsel m na j rgi otsingul. Hoolimata koodin idete valdkonna spetsiifikast leian, et otsing sissetipitud s na j rgi annaks ka siin h id tulemusi, m nel juhul v iks kiirendada n ite leidmist v i puudumisest teada saamist mitu korda. Kui n idetest koostada andmebaas ning iga n ide varustada tema eri tahke kirjeldavate m nadega, siis nnestub kergesti silma alla saada kogu vastava teemaga seotud n idete kogumik ning leida neist omale sobiv v i veenduda selle puudumises. istekstiotsing Ka t istekstiotsing kuluks ra. Java loojad v ivad k ll kiidelda korraliku javadoc'i abil genereeritud pakettide, klasside, meetodite ja parameetrite kirjeldusega, mida igal keelel sellisel kujul olemas pole. Kui k skude juures olevatest seletustest v heks j b, pole katsetamisk lbulikke t tavaid n iteid kusagilt suurt leida. Muidugi v ib uurida pikuid ja lasta otsimootoritel vastavat k sku sisaldavad koodid silma ette rivistada, kuid sobiva piku ja sobiva n ite leidmine v ib v tta hulk aega ning pole kindel, kas vastava k su kohta n idet koostatudki on. Interneti pealt leitud vastavat s na sisaldavad failid aga ei pruugi ldsegi mitte t lbulikud programmid olla. Korrektse n itearhiivi piires aga peaksid k ik n ited v hemasti t le minema ning t tava k su puhul on juba kergem seda koodi t iendada, parandada ning uurida, kuidas nnestub leitud korraldus oma koodi sobivale kujule paigutada. Kokkuv Kokkuv tteks leian, et programmeerimise ppimisel on t tavad n ited t htsaks abivahendiks. S ltuvalt ppija t bist v ib n idete osa ppes olla lihtsast illustreerivast materjalist ja enesekontrollivahendist kuni kogu ppimise alustala ning p hilise toetuspinnani v lja. N idetele toetujale on v ga t htis, et t aluseks v etud n ited t taksid korralikult, et neid pole lihtsustamise huvides k ivitumisk lbmatuks muudetud ning ilustamise tarvis nende p hisisu liialt ra peidetud. Sobiva n ite leidmise lihtsus ja kiirus lubab keskenduda sisulisele ppimisele. N idete leidmist aitavad lihtsustada loogiline sisuline hierarhiline jaotus, abilehed sulanduvate teemade leidmiseks, otsing m nade ning t isteksti j rgi. pimudelid ning -teed Magistrit autor on programmeerimist petanud 5 aastat (alates 1997), sellest Java ning Javaskriptiga seotud kursusi pidanud 3 aastat. Selle aja jooksul on nii teadlikult andmeid kogutud kui spontaanselt tekkinud olukordi t hele pandud ja anal situd mitmek mne m nest p evast kuni poole aastani kestva kursuse jooksul. K ik j rgnevalt pakutud v imalused on testitud ja j rgnevalt anal situd v hemalt korra, m nda on saanud aga rohkem kui k mme korda l bida ja viimistleda. Java programmeerimiskeele alg petus Alg ppe eesm rgiks v ib olla nii huvi tekitamine programmeerimise vastu, ldise m istmisv ime kasvatamine kui inimese ettevalmistamine tulevase programmeerimist tegemiseks. Esimene v imalus on v ga t htis isiksuse arenemise ajal ning tekkinud huvi he ala vastu v ib edaspidi m rgatavalt soodustada inimese v imet teemadesse s veneda. Sellest konkreetsete operatsioonide pimudel. Kui eesm rgiks pole mitte lihtsalt programmeerimisega tutvuda ja valdkonna vastu huvi ratada, siis on aastate jooksul harjutud teemale s stemaatilisemalt l henema. Nii loodetakse, et kursuse l binud ppuritel tekib terviklik ettekujutus ning nad suudavad oma v imeid hinnata ning teavad, kust millisele probleemile lahendust otsima minna. Mitmete gruppide petamise kogemuse p hjal v in v lja tuua j rgevad kolm edukamat liini, mis paarik mnetunnilise ppimise j rel annavad ligikaudu samamahulise tulemuse. Nimetaksin neid liine: k sureamatemaatika, k sureagraafika ning mitmek lgsed rakendid. Liinid on algfaasides k llalt erinevad ning neid omavahel segades v ib keskmised ja n rgemad ppurid kergesti segadusse viia ning sellega tempos m rgatavalt (kuni kaks korda) kaotada. Grupid pole ldjuhul Javaga varem kokku puutunud, kuid on programmeerimisega poole aasta jooksul tutvunud. Imestusega v ib m rkida, et varem programmeerimisega kokku puutunud v i sellega mitte tegelnud gruppide puhul sobivad samasugused piteed. Esimesel juhul lihtsalt suudetakse samad etapid m nikord kiiremini l bida ning m nest kohast le h pata sama teemat s gavamalt k sitleva osa juurde. llatuslikult m jutab l pptulemust m rgatavalt enam grupi ldine motivatsioon ja nupukustase kui eelnevalt l bitud programmeerimiskursus v ppijate vanus. Konkreetsed operatsioonid Programmeerimiseks pole mitte keegi liiga noor, tuleb lihtsalt valida ppimiseks ja petamiseks sobivad meetodid. V ljamaal on populaarsust kogunud programmeeritavad m nguautod, mille k sustik piirdub k mnekonna korraldusega ning kus p seisneb raja ettevalmistamises ning testides, kuid mille kaudu v ib tekkida ka t iesti arvestatav esmane programmeerimiskogemus. Ligil hedaselt samat bilised oskused ja kogemused saab anda ka k skudega arvutit juhtides - programmeerimiskeele valik iseenesest siin liialt suurt t htsust ei tohiks omada. Javas k llalt h lpsasti k ttesaadavad graafikavahendid t iesti v imaldavad p hikoolis programmeerimishuvi tekitada. Seda on autor nii koolipraktika kui programmeerimisringi raames proovinud. Huvi s ilimiseks peab p helepanu olema soovitud tulemuse (t tava rakenduse) saavutamisel, keele vahendid j vad tugistruktuurina tahaplaanile ning nendega tuleb tutvuda vastavalt uuritava teema vajadustele. Esmaseks l htekohaks sobib mitmesugune paigutamine, liigutamine ja joonistamine. Vastavalt kujundite ja trajektooride keerukusele on p hjust uurida kooli matemaatika ning f sika/loodus petuse raamatutest nii pitud kui tundmatuid teemasid ning nende abil oma rakendusi t iustada. Nii nagu joonistustunnis saab teha hiseid pilte v i tehtut omavahel v rrelda, nii sobivad ka arvutil koostatud animatsioonid grupit ks v i omavaheliseks v rdluseks. Ts kliteni j utakse seet ttu, et m ne aja p rast tekib lastel idee oma t vaeva v hendamiseks, ning siis on nad vastavate n idete suhtes h sti vastuv tlikud. Samuti ollakse valmis meeldivate v rvide koostamiseks uurima RGB v rvimudelit v i sama tegevuse varieeruvaks kordamiseks kasutama muutujaid. Mitme elemendi samaaegne liigutamine petab tegevusi koordineerima. Iseenesest on sellisteks lesanneteks loodud LOGO nimeline programmeerimiskeel, kuid see ei t henda, et muul juhul vastav petus ei v iks nnestuda. Teiseks kaasakiskuvaks tegevuseks on arvutiga dialoogi pidamine. Lapsed soovivad v imaluse tekkimisel p ris keerulisi nii raamatutes/lehtedes ilmunud kui omam eldud algoritme masinale arusaadavaks teha, et edaspidi valikute abil loodud maailmas ringi liikuda. Sellise s steemi koostamise lihtsamaks teeks on h pertekst, kuid programm v ib tunduda vahel salap rasem. Eriti siis, kui lastakse n iteks juhuarvude abil olemasoleval s steemil veidi muutuda. Seitsmendas klassis on k llalt palju p nevust pakkunud ka "Osta elevant ra"-stiilis s ng, mida saab vastavalt oma fantaasiale edasi arendada. Kogu sellise petuse l htekohaks on: pigem v hem, aga paremini. K ll huvilised pivad soodsa keskkonna abil ise edasi ning suudavad saadud teadmisi ka edaspidi rakendada. Huvi t htsust r hutab ka waldorfkoolitus [78]. Hea klappimise ning esialgsetest nnestumistest tingitud huvi korral v ivad p hi- ja keskkoolilapsed hakata ka teoreetilisemas osas likooli keskmisest tunduvalt kiiremini edasi liikuma. Nii kasvavadki ol mpiaadi lesannete lahendajad, t ppisteaduste kooli pilased ning loodetavasti ka tulevased edukad programmeerijad ning oma isikliku elu v i muuteemalise t tarbeks programme koostavad inimesed. Siinsest materjalist sobivad sellise ligikaudu pooleaastase tutvumiskursuse tugimaterjaliks kolm-neli kuni m niteist tutvustusn idet. Oluliselt rohkem arvutialaseid ppematerjale taoline ring v i kursus ei vajagi, sest p hienergia peab olema suunatud originaalsete ideede loomisele ja nende kaunile teostusele (v i vahetevahel ka teostatavuse t estamisele). V ga suur osa on petajal, kes peab oskama kiiret ja asjatundlikku n u leida ja anda. Konkreetsete tegevuste abil ppimine ei pea olema mitte ainult kainikute p rusmaa, ehkki ps hholoogide m rangute j rgi on selline suundumus vastavas vanuses tugevaim. Ka likoolis on m nel programmeerimise vallas n rgemal tudengil kergem ja arukam ppida selgeks konkreetsed toimingud ning nende p hjal edasises ppet s tarvilikke ning m nigikord mahukaid programmeerimist id teha. sureamatemaatika sureamatemaatika liinis k sitletakse Javat alustuseks kui traditsioonilist objektideta programmeerimiskeelt. P rast esmast teretava programmi k ivitamist sobib suunduda n iteks lesandeid genereeriva rakenduse koostamisele. Selle k igus tutvutakse ts klite, valikute, muutujate, massiivide, juhuarvude ning alamprogrammidega. Andmesisestuseks sobivad k surea parameetrid, kust on k llalt kerge s nesid k tte saada. Nii tutvutakse ka t biteisendustega. Edasi tulevad failid ning s tlus. ksikute teemadena sobib uurida keerulisemaid tingimuslauseid ning kahem tmelise massiiviga mberk imist teineteisesse sisenevate ts klite abil. Samuti v iks koos massiividega k ia java.util.Arrays'i sorteerimisv imalus ning dokumentatsiooniga l hem tutvumine. Koos failidega peab paratamatult t helepanu p rama erinditele, lisaks aga sobib seletada muidki eriolukordi ning nendega toime tulemist. Seej rel v ib rahulikult l bi v tta objektid, m ngides l bi klasside loomise ja isendite kasutamise kirjetena. Meetodite lisamisega saab isendite "arukust" suurendada. Selguse s ilitamisele aitab kaasa Java loojate soovitus hoida iga klass omaette failis. Siis v ib kataloogi sisu vaadates kergesti n ha, milliste klassidega tegemist on ning et iga klass on omaette s ltumatu ksus, mis v ib teistele abi osutada. Vastavalt kursuse mahule, kasutatavale ajale ning grupi ppimisv imele v ib ette v tta nii p rimise, lekatte, varje kui liidesed. Sisemised klassid tuleks j tta hilisemaks, sest need kipuvad objektide selget pilti h gustama ning v ivad takistada kindla s steemi loomist, millele edaspidi toetuda. N idete hulgas kasutatakse selle teema puhul traditsiooniliselt loomariiki ning sealset liikide hierarhiat. Objektidega hele poole saanud, j utakse selleks ajaks enamasti ka keele s ntaksi ja abiinfoga piisavalt harjuda ning edaspidi v ib juba rahulikult ning vabalt valitud j rjekorras vajalikke teemasid ette v tta kartmata, et m ni uus osa eelmised hullusti segi paiskaks. Sellise skeemi j rgi on kirjutatud nii J ri Kiho kui ka Ivor Hortoni pikud (m lemad viited). Kui siinseid materjale hakata lugema algusest, siis on p tud ka l hedase raja peal p sida. sureagraafika Siin asutakse nii keele lesehitust kui k ske tutvustama graafikavahendite kaudu. P ris algus v ib olla k llalt sarnane konkreetsete operatsioonide liiniga, kuid ppijatelt eeldatakse k rgemat ldistusv imet ning anal sioskust. Kui esmane tutvus sobib teha main-meetodis liigutatava loodud standardraamiga, siis v hemasti teisest-kolmandast tunnist tuleb asuda sobivat raami alamklassi kokku panema. Liigselt kaua staatiliste meetodite k ljes p simine v ib tekitada halva harjumuse k ike objektiv liselt lahendada, mis aga k ib vastu Java ideoloogiale ning tekitab hiljem raskusi v hemasti s ndmuste ja kuularite juures. rgnevalt tasub algoritmide koostamise oskusi treenida jooniste koostamisega, lubades kasutajal m ned parameetrid ette anda. Lihtsamaks treeninguks on soovitud suurusega lihtsa kujundi koostamine. Edasi aga v ib pakkuda n iteks soovitud korruste (ja trepikodade) arvuga korrusmaja koostamist (kahekordne ts kkel), samuti tulpdiagrammi loomist ning maailma- ja ekraanikoordinaatide ja m tkava arvestamist ning skaala joonistamist. Erinevalt veebis v pikutes levinud n idetele, kus oma programmid luuaks Frame alamklassina, olen paremaks pidanud Panel'it v i Applet'it. Sel juhul on loodud klassidest isendeid kergem hiljem muude konteinerite sisse v i veebilehele paigutada. K skude arv sellest oluliselt ei kasva, sest mis muidu tehakse Frame konstruktoris, sellest tuleb osa lihtsalt main-meetodisse le kanda. neteisenduste harjutamiseks piisab kahest tekstiv ljast - ks sisestuse ning teine tulemuste jaoks. Mitmesuguste s nevahendite katsetamise puhul on otstarbekas selguse huvides pea iga he tarvis eraldi klass teha. Siiani piirduti ActionListeneriga, n nnestub kuularitest laiem levaade anda ning lisaks lihtsale toimimise konstateerimisele v ib seletada ka t tamisp tet. Samuti on ppurid juba piisavalt vastuv tlikud enamike graafikakomponentide tegevusala m istmiseks ning suudavad ka paigutamisega ilma suuremate probleemidega hakkama saada. Koos hiirekuulariga annab koostada liikumist n itavaid rakendusi, samuti nnestub k llaltki lihtsate vahenditega kokku panna graafikaredaktor, mis kasvatab ppurite enesekindlust ja usku pitavasse keelesse. K rgema motivatsiooniga aga liigub k ik libedamalt. Mahukama kursuse puhul v ivad liikumise juurde sobida ka l imed ning isegi topeltpuhverdus. Ka omaloodud graafikakomponendi koostamine on k llaltki arendav teema, kuid selle juures peab hoolega silmas pidama, et ppurid aru saavad, mida nad teevad, muul juhul v ib segadust enam olla kui tulu. sureagraafika on alg ppeks k llalt universaalne l henemine ning ka siinsete materjalide puhul on tutvustusn idete juures seda suunda silmas peetud. Kuna siinsel juhul ei pea suhtlema seiluriga, on ks lisaprogramm ning koos sellega tehniline probleem v hem. Samuti pole vaja luua lisaks HTML-faili. Ometi on enamik graafilise osaga alustanud pikuid hakanud peale pigem rakenditest kui k sureaprogrammidest. Mitmek lgsed rakendid Rakendite puhul on sageli motivatsiooniks interaktiivsete veebilehtede loomine. Veebim nge ja muid rakendusi ollakse n inud ning nende koostamist tahetakse ka j rele proovida. Mitmel kursusel on inimesi, kes on juba ette palunud et petataks veebilehe applettide tegemist. Flash ja muud vahendid on veebilehtede programmeerimisel arvestatavatena rakendite k rvale tulnud, kuid rakendeid peetakse endiselt k llalt v imsateks ja t htsateks. Ehkki edasine rakendite kaudu ppimine on k llalt sarnane k sureagraafika omaga, vaadatakse neid kui t iesti erinevaid maailmu ning katsed kohe algul eri pooli hendada on v hemasti n rgemate ppijate puhul l ppenud segadusega. Rakendi puhul tundub rakendik ituris oleva intepretaatori olemasolu arusaadavam kui k sureaprogrammide puhul, kus ollakse harjunud arvama, et vaid vastava operatsioonis steemi jaoks kompileeritu (windowsis nt. .exe) on " ige programm". Eriti tugev oli selline algarvamine heksak mnendatel, kui Java v hem tuntud oli. Rakendi puhul tuleb juurde HTML-i fail, mis lisat kina algset arusaamist ja t kkide s stematiseerimist kipub raskendama. M ne tunni jooksul veebilehtedega tutvust tehes ning siis lisades sinna he komponendina rakendi, p seb komistuskivist m JSP p hine Lihtne alustada, sest korralikult ettevalmistatud keskkonna puhul pole vaja eraldi kompileerimist, HTML-i sisse saab k sud kirjutada lihtsasti. JSP sobib n iteks Javaskriptiga kokku puutunutele lihtsaks veebiserveri programmeerimise tutvustuseks ning ka Java keele n itamiseks. Lihtsast paaritunnisest tutvustusest ei tasuks algajatel kaugemale minna, sest saabuvad veateated tulevad vahepealse servlettideks kompileerimise t ttu k llalt arusaamatud ning h irivad. Lihtsamaks ja kiiremaks veebiserveri programmeerimise ppimiseks sobib PHP v i ASP paremini. JSP juurde v ib hiljem ringiga tagasi tulla, kui servlettide t tetest on arusaamine tekkinud ning samuti osatakse eraldi teov imelisi abiklasse koostada, et neid siis JSP juures ubadena t le panna. Servlettide p hine Enamasti j utakse servlettideni kursustes v pikutes alles p rast pikemat muude teemadega tutvumist, samas ei pruugi algajale servleti loomine ja k ivitamine sugugi keerulisem tunduda kui harilikust interpretaatorist v ljundi vaatamine. Tulevaste andmebaasiprogrammeerijate koolitamisel alustati katsena hes kursuses kohe servlettidest ning tulemused olid t iesti lootustandvad [58]. M rkimisv rne osa ppijaist ei olnud varem kuigi palju programmide kirjutamisega kokku puutunud. Kui on ppej u abiga le saadud esimestest tehnilistest raskustest (mis on paratamatud ka k surealt t tava interpretaatori korral), siis brauseriaknaga on m nigikord lihtsam andmeid vahetada. J vad ra DOS-i akna puhul tekkivad kooditabeliprobleemid ning HTML-vormist andmete p rimine pole samuti liialt keeruline. Nagu kogemused n itasid, v is k llalt julgesti edasi minna lihtsamate andmebaaside juurde ning saavutada h id tulemusi. R hutada tuleb sealjuures, et tegemist oli valitud seltskonna ning k rge motivatsiooniga grupiga. Edasij udnute koolitus Samas grupis olevate algajate puhul v etakse ldjuhul k igiga l bi suhteliselt sarnased teemad. hed j uavad teemadega s gavamale kui teised, kuid m ned aluskohad peavad omandama k ik, kes soovivad vastava ainega edasi minna. Mida kaugemale on j utud tetega, seda rohkem v ib iga ks enesele spetsialiseerumist lubada ilma, et l ngad m ne koha peal v iks edasisele ppimisele v le oluliseks takistuseks saada. Pigem on kasulik, kui iga ks enesele vajalikus v sti nnestuvas valdkonnas p hjalikumad teadmised saavutab, nii et v ib nende abil omale v etud lesandeid paremini lahendada. Spetsialiseerumise soodustamiseks olen leidnud j rgnevalt kirjeldatud v imalused. Grupiviisiline probleemilahendus ppijad jagunevad 2-4 liikmelistesse r hmadesse ning iga r hm valib/saab enesele lesande. Neljalise r hma puhul v ib tekkida segadusi, kus ks ei tea mis teine teeb. Viieliikmelises seltskonnas on juba v ga raske hoolitseda, et keegi t st v lja ei langeks. R hmas lesannete jagamisel on v imalik arvestada osalejate erip raga. Sageli leidub keegi nupukam, kes meeleldi v tab enesele raskemate algoritmide kokkupaneku, j ttes suhteliselt t tu kujundusliku t teistele. Samas on m nigi nnelik, kui tal nnestub m ne monotoonsema (kuid enamasti siiski ka m tlemist n udva) t ga teistele kasulik olla ning samas ka ise arenduskeskkonnas p sida. Iga ks grupist peaks k igest koostatust aru saama ning vajadusel suutma k ikjale t iendusi teha. Tegemist on Extreme Programming'us olulise printsiibiga, mis v imaldab arendajatel oma kavandavat t d vastavalt avastatud (tehnilistele) v imalustele ja takistustele kohandada. imitud materjal Kui ppijaiks on kogenud programmeerijad, kes vajavad vaid vastava keele v i teema suhtes t iendkoolitust, siis soovivad nad l hikese ajaga ammutada v imalikult suurel hulgal ning k rgel tasemel enesel puuduvaid teadmisi ning seoseid. P rast esimese tervitava programmi k ivitamist tundub neile igusega enamik tavaprogrammidest juba l bitud teena ning nende s stemaatiline l biarutamine ajaraiskamisena. Sellisel puhul aitavad l imitud teemadega n ited ja lesanded. Eks mingid teemad ristuvad omavahel alati, kuid edasij udnud programmeerijate puhul pole vaja h beneda n iteks sama p hja peal seletada ja ppida nii kasutajaliidese koostamist, andmebaasi hendust kui v rguk sklusi. Kel m ni neist osadest pulkadeni tuttav, saab piiluda k rvale veidi tundmatuma maa poole. Kui aga k sitletav teema juhtub ka kogenud programmeerijatele tundmatu olema, siis kehtivad samad reeglid mis algajatelegi, st. korraga tuleb tutvustada ainult ht tundmatut teemat ning see v imalikult lihtsalt v lja tuua. M nedki ppevahendid kipuvad selle lihtsuse p tte vastu eksima ning see tasub kusagilt kurjalt k tte. Kui materjal j ppijale korraga haaratavaks, siis ei pea edasij udnute puhul liialt lihtsustamisega tuumikut nudima. Mitmetasemelised lesanded Koos ppivate inimeste arvutialased teadmised, oskused ja vilumused erinevad enamasti v ga suurel m ral. Ehkki hindamisskaalal ritatakse k ik positiivsed tulemused paigutada 50 ja 100% vahele, erineb tavalises klassis keskmiste pilaste ppimisv ime paar-kolm korda ning rmuste vahe v ib kergesti olla v hemalt heksa korda. Kes on j udnud oma m ttet rgmisele abstraktsioonitasemele, selle produktiivsus v ib h ppeliselt t usta kolm korda, m nedel juhtudel isegi terve suurusj rgu v rra. Minu hinnagul pole kooli lesandeks mitte pilasi arukuse j rgi selekteerida, vaid iga hele kohast arenguv imalust pakkuda, siis pean sobivaks jaotada lahendatavad lesanded mitmesse tasemesse. Enamasti olen jaganud heksak mneminutilise praktikumipaari kolme alam lesande lahendamiseks, kusjuures iga j rgmine on eelmisest ligikaudu kolm korda mahukam. lesanded on p tud koostada nii, et k ige nutikamad ja t kamad j uavad praktikumipaari jooksul napilt lahendada kogu kolmest osast koosneva suurema lesande; enamik j uab kolmanda osa lesande alguseni ning ka k ige n rgemad saavad (v ikese k rvalise abiga) esimese osaga hakkama. Selliselt k sitlen ppijate hulka sisuliselt kui liitklassi, mis aga pakub igale v imaluse t ie pingega kaasa t tada ning praktikumi jooksul maksimaalselt ppida. Sarnast s steemi on kiitnud Johannes K is juba 1935. aastal [35]. Veebiprogrammeerimise kursuste komplekte Tahtes anda ppijatele mingi taseme lesannete sooritamiseks terviklikku pilti, tuleb ksikute teemade ja keelte pet omavahel kombineerida. Siiski tundub v hemalt esialgu, et on lihtsam ppida ksikute rohkem v hem temaatiliste kursuste kaupa kui p da k ike korraga selgeks saada. Allpool on v lja toodud m ned j releproovitud ning suhteliselt h sti nnestunud komplektid. Kliendirakenduste programmeerija sureamatemaatika + HTML-kujundus + Javaskripti lahendused Sellises j rjestuses pitakse peamiselt staatilisi meetodeid kasutavate programmide peal selgeks korrektsete programmide kirjutamine ning algoritmide koostamine. Java range s ntaks sunnib arvestama muutujate t pidega ning ei lase naljalt l lejala kokkupandud programme. Esimese osaga ei taotleta s rava tulemuse saavutamist, kuid v etakse l bi enamik teemasid, mis on vajalikud arvutustega seotud programmide koostamiseks. Lahendatakse hulga m tlemist n udvaid lesandeid. rgnevalt asutakse veebilehti koostama ning tutvutakse veebikujunduse printsiipidega. Algul tasapisi, hiljem ha suuremal m ral lisatakse lehtede interaktiivsemateks muutmisel Javaskripti koodi. Kursuste komplekti l bimine ei n ua osalejalt liialt suurt taiplikkust, k ll aga p sivust korrektse koodi loomisel ning veidi h id ideid veebilehtede kokkupanekul. Komplekti l binu peaks suutma koostada asjalikke ning meeldivaid veebilehti ning lisada sinna nii n itlikustavaid kui arvutust id teostada aitavaid programme. Samuti peaksid komplekti l binud saama hakkama oma edasises koolit s vajalike mitmeastmeliste arvutust de automatiseerimisega. Sellise j rgnevuse on l bi teinud TP matemaatika eriala pilased. Laia profiiliga veebiprogrammerija Tutvus Javaskriptiga (+ JSP) + k sureagraafika + veebitehnoloogiad eldud veidi rohkem arvutihuvilisemale ppegrupile ning tulemusena loodetakse laia silmaringiga veebiprogrammeerijaid, kes saavad hakkama nii graafiliste kui andmebaasip histe veebirakenduste koostamisega. Ka programmeerimise poolest n rgemad sellest grupist peaksid suutma programme projekteerida ning ideede teostatavust anal sida. imalikud veebilehtede struktuurid arutatakse l bi kogemuse baasil. HTML-iga tutvutakse l hemalt Javaskripti kaudu. JSP-ga antakse semestri l pul v ike levaade veebiserveri programmeerimise ideoloogiast. K sureagraafika abil tutvutakse p hjalikumalt graafilisi v imalusi n udvate programmide koostamisega. Ehkki alustati graafikaga, v etakse ettetulevate lesannete k igus l bi k ik Java p hikursuse teemad, kaasa arvatud failid, andmet tlus ning v rgu pistikliides. Graafika pakub piisavalt alust ning n itlikkust andekate algoritmide koostamisega harjumiseks. Veebitehnoloogiad v etakse ette vastavalt tehnilistele v imalustele, kuid andmebaasip histe s steemide ehitamist vaadeldakse soovitavalt PHP ja/v i servlettide n itel. Taas ringiga tagasi tulles uuritakse ka JSP pakutavat lahendust. V rreldakse sarnaste programmide koostamist ASP ning PERLi abil. Silmaringi laiendamiseks v idakse tuttavaks ppida pea k ik Java j tkukursuse teemad - seda nii pildit tluse kui v rgurakenduste ja turvalisuse poole pealt. Sellise j rgnevuse on l bi teinud TP informaatikatudengid. Andmebaaside veebiliideste programmeerija Servletid + k sureamatemaatika + veebitehnoloogiad rreldes eelmise jaotisega on v lja j etud pea k ik graafikaga seonduv. Keskendutakse andmehulkade ning andmebaasidega seotud programmeerimisv tetele ning keerukamate algoritmide koostamisele. Seet ttu saavutatakse t leasumiseks k lbulik tase v hem kui aastaga ehk poole rutem kui eelmisel juhul. Servlettidega alustamine n uab algul suuremat t helepanu, kuid kuna nendega tuleb vastavatel ppuritel tulevikus enam tegemist, siis tasub pingutus end Veebilehtede koostaja Veebiredaktorid + HTML-nipid + lihtsad skriptid + kohandamine + PHP Tegemist lihtsama j rjestusega, kus usin, arvutiga kokku puutunud, kuid programmeerimisv ras inimene suudab ldjuhul saavutada igap evat s vajalike meeldiva v ljan gemisega veebilehtede kokkupanekuks tarvilikud oskused ligikaudu neljak mne tunniga. Usinamad suudavad koostada ja kohandada lihtsamaid skripte ning aru saada veebiserveri programmeerimise v imalustest ja v imatustest. N rgemad piirduvad edaspidi staatiliste lehtede kokkupanekuga, kuid suudavad m ista Javaskripti v imalusi ning ligikaudu hinnata selleteemaliste tellitavate t de mahtu. ppematerjalide kasutajad informaatikatudengid Enamik kirjapandud teemasid leiab hel v i teisel viisil kasutust Tallinna Pedagoogika likooli informaatikakursustes. Eelk ige on konspektid ja n ited koostatud pilaste jaoks. Valikkursuste tarbeks tuleks m nda teemat s vendatumaltki k sitleda, kuid sellega kaasneb oht muuta materjalid raskesti haaratavaks. Tekste on loengute j lgimisel hea k rvalt vaadata, t htsamad kohad alla joonida ning vajadusel m ned seletused ning uued v imalused juurde kirjutada. Samuti peaks neist konspektidest olema v imalik keerulisemate n idete juures n puga j rge ajada ning segased kohad enesele selgeks teha. Ka tudengid, kes pole saanud loengust osa v tta, peaksid materjalide abil iseseisvalt t tades suutma aine tempoga kaasas p sida. Informaatika k rvalainena Kasutatavad materjalid s ltuvad ppekavast ning valitavatest ainetest. Informaatikat k rvalainena ppivatele tudengitele on Java p hikursuse ja Javaskripti teemad olulisemad kui j tkukursuse omad. Kuna enamasti on tegemist inimestega, kel programmi kirjutamine pole igap evane tegevus, tuleks j lgida, et nende silme ette ei satuks liialt palju h irivaid k rvalv imalusi. K igepealt tuleb omandada p hi, millele toetuda, ning alles siis suunduda lisadele, kust usinamad v ivad t iendavaid teemasid hankida. Selle r hma pilasi aitavad eraldi v lja toodud lihtsamad n ited ning nende seletused. Eesti ldhariduskoolid Logifailide j rgi paistab, et v rku riputatud materjalide vastu on huvi tundnud sageli m neteistk mne, harvem aga mitmek mne ldhariduskooli kasutajad. petajad teavad, et nii arvutitundides kui vabal ajal katsetavad huvilisemad koolipoisid mitmeid n iteid ning p avad nende j rgi omale meeldivaid rakendusi koostada. Tundub, et materjalide m ningase kohandamise ning koolide arvutihuvi kasvu puhul v ib siinsete materjalide j rgi ppijate ring m rgatavalt laieneda. petajate soovituste j rgi tuleks lisada detailsed juhised lihtsamate programmide k ivitamiseks ning "puust ette ja punaseks" selgitused ja KKK. Lisaseletused kuluksid ka muudele algajatele ppijatele, kuid varem programmeerimisega mitte kokku puutunutel ning eriti juhul, kui ka petaja end selles vallas tugevalt ei tunne, on sellised t psed n ited lausa asendamatud. Samas on k llalt keeruline kirjutada algtutvustuse konspekti, kus osataks ette n ha k ik olulisemad takistused ning jutt ei j ks tervikuna haaramiseks liialt pikaks. Siinjuures peab arvestama asjaolu, et koolipoisid asuvad seletustest abi otsima alles viimases h das. Kui h dasolijal seal midagi raske leida ja arusaamatu lugeda on, kipub usk juhenditesse sootuks kaduma. Arvutifirmad ja programmeerijad nelgi korral on siinsetest ppematerjalidest abi leidnud kutselised programmikirjutajad. Kui inimesed tegelevad mitme keelega, siis ei j uta he keele peensusi enesele alati selgeks teha. T aluseks sobilik algn ide aga suudetakse h lpsasti oma oludele kohandada. Niisuguste kasutajate jaoks kirjutades pole vaja keerukust karta. Konteksti tundes suudavad nad m tte enamasti lennult haarata, vajadusel kiiresti muudest allikatest abiteavet hankides. Materjali paremaks leidmiseks kuluks n idetele lisada otsingus steem, kus nnestuks k sku sisaldavad koodil igud kiiresti silmade ette manada. Eesti teised likoolid ning rakendusk rgkoolid Alates 1998ndast aastast on Java keele t htsus programmeerimise petamisel kiiresti kasvan ja m istmiseks v imalikult selged ning tundub, et v hemasti lihtsamate teemade juures on see ka keskmisest paremini nnestunud. Sellegipoolest on kohti, mis esmakordsel lugemisel arusaamatusi tekitavad ning mida oleks v imalik selgemalt kirjutada ning jooniste/n idetega varustada, nii et omandamine ladusamalt l heks. Lihtsa alustuse kirjutamine on ka maailmas levinud materjalide juures probleem. Algajatel tekib s ltuvalt tema kogemusest arvutiga ning kasutatavast riist- ja tarkvarast k mneid ja sadu probleeme, millele kompaktset kirjeldust ja lahendusi pakkuda pole h lpus. Abimaterjalid l hikursuslastele Piisava hulga materjalide olemasolul saab koostatud konspektidest vastavalt vajadusele sobivaid alamtervikuid luua. Paarik mnetunnise t ienduskursuse tuumikuks sobib m mnelehek ljeline tekst pluss kuni samapalju n iteid, mille abil teemaga tutvuda ning mille pealt tarvilikke rakendusi ehitada. Siin esitatud materjalide p hjal peaks v ikeste t ienduste abil saama lisaks kolmele suuremale jaotisele kokku panna j rgmised l hikursused: Veebilehtede koostamine Javaskriptiga programmeerimine Java algkursus Java graafikavahendid Java muusikavahendid Servletid ja JSP Java ja XML Materjalide koostajal enesel on k llalt lihtne sobivad l igud kokku otsida ning nende p hjal kuulajatele soovitud kursus pidada. Parema struktureerimise korral suudaksid ka muud petajad sealt h lpsamini vajaliku alamosa leida ning selle abil materjale t iendada v i tunde l bi viia. lismaised kasutajad mnekonnal korral olen saanud v lismaiste listide lugejatele m ne probleemi lahendamiseks pakkuda viite omakoostatud n itele. Logisid uurides selgub, et piiritaguseid lugejaid on rohkemgi - ka siis kui otsimootorid v lja arvata. Eestikeelsed seletused on vaid v rkeelt m istvatele inimestele kasutud, kuid koodin ited koosnevad peamiselt Javakeelsetest lausetest ning on samuti kasutatavad kui n ited muudestki allikatest. Sealjuures on n ited enamasti piisavalt l hidad, et neist oleks v imalik aru saada ka ilma kommentaarideta. Otsest kasu v lismaised lugejad Eesti haridustasemele ei too, kuid leian, et siit n idete leidmine v ib kergitada nende arvamust Eesti IT taseme kohta ning see omakorda suurendab siinsete ettev tete/programmeerijate v imalusi v lismaalt tellimusi saada. ppijad Ametliku koolihariduse k rval leidub alati inimesi, kes omal k el p avad m nda teemat enesele selgeks teha. Programmeerimisvaldkond on praegu k llalt populaarne ning see meelitab teemaga tutvuma inimesi teismelistest pension rideni. Nende vajadused on sarnased ldhariduskoolide pilastele, kuid mitmetel neist pole ka v imalik kooli arvuti petajalt n sida. Seda t htsamaks muutub ise ppimiseks tarvilik samm-sammult seletus, mille korralikuks koostamiseks peaks aga t eline meister olema. Kokkuv Magistrit igus valmis tervikliku veebiprogrammeerimise kursuse metoodika ja t tati v lja vastavateemalised ppematerjalid. Metoodika puhul leiti, testiti ja lihviti sobivad piteed mitmesuguse ettevalmistustaseme ning eesm rkidega ppuritele. Nii personaalse tagasiside kui metoodika piloteerimise k igus saadud tulemused annavad julgust ka edaspidi n iteid l hikeste ja lihtsatena hoida, hoolimata m nikord kaasnevast kesisemast "kaubanduslikust v ljan gemisest". petamise jooksul tehtud katsete k igus on selgunud optimaalsed programmeerimise alg petuse teed, millest k rvalekaldumisel v ppe tempo ning pitavast arusaamine m rgatavalt langeda. Valminud ppematerjalid on leidnud kasutust nii likooli kursustes kui v ljaspoolgi. Isikliku tagasiside tulemusena on nnestunud neid kohandada vastavalt ppijate vajadustele. Eriti Java p hikursuse konspektist on saanud multifunktsionaalne ppevahend nii p ris algajatele kui ka varem programmeerimisega tutvunutele. See v imaldab sobiva juhendamise puhul ppida mitmesuguste pistiilidega inimestel. lesannete kogu pakub j ukohast lahendamist nii algajatele kui edasij udnutele. N idete kogust leiab abi enamike veebiprogrammeerimises ette tulevate tehniliste probleemide lahendamiseks. dsest on eesti keeles veebiprogrammeerimise ppimiseks p hilised materjalid olemas ning materjali mahu ja kvaliteedi kasvatamine ei pruugi enam t hendada olulist h pet emakeelses veebiprogrammeerimise alases hariduses. Loomulikult tuleb neid materjale pidevalt kaasajastada; ka keerukuse taset ja haaret on v imalik ning p hjust t sta. L hiajal on pigem t htis olemasolevate materjalide v imalikult otstarbekohane ning intensiivne kasutamine ning mahuka ja kvaliteetse ppet tagamine. Summary The main goal of the master thesis "Holistic Approach to Web Programming" is to develop a holistic approach for learning/teaching web programming in Estonian language. This has been accomplished in four phases: To analyse existing web programming learning materials in Estonia, Composition of the web programming course, Elaboration of the principles for creating efficient code samples, Development of learning material (four textbooks) and code samples for middle level web programming. The textbooks composed are: Basic Java programming (127 p) Advanced Java programming (108 p) Javascript programming (47 p) Collection of web programming exercises (68 pg.) Programming code samples consist of 1000 units and cover most situations and algorithms used in middle level web programming. The code samples for mid-level problems are written in Java and/or in Javascript language. Samples covering basic level web-programming problems are also made in other languages like ASP, PHP, XML, VRML, PERL and HTML. In thesis there are developed and tested different possible ways to start programming in Java for: Practice-based programming, Mathematics based programming, Graphics based programming, development web applets. The methodology developed allow to compose special web-programming courses like for: development of web pages, development of client applications, development of web interfaces for a database, development of complicated web applications. As a result of the thesis the following hypothesis were stated: Effective code samples must be short and ready to run In the beginning learn programming is recommended to concentrate to one subject Kasutatud allikad Baldwin, R. Java and JavaScript programming. http://www.phrantic.com/scoop/toc.htm 04.2002 BERTHOU. JavaSide.com http://www.javaside.com/ Carroll, C LearnASP. http://www.learnasp.com/classic/ 04.2002 DevEdge Online. Documentation - HTML http://developer.netscape.com/docs/manuals/htmlguid/index.htm 04.2002 Duran, L, Wimpsett, K, Adams, M. Java 2 Complete. SYBEX Inc. 1999 Eck, D. J. Introduction to Programming Using Java http://math.hws.edu/javanotes/ Eesti Telefon. NETI. NETI: / ARVUTID JA INTERNET / WWW abivahendid. http://www.neti.ee/cgi-bin/teema/ARVUTID_JA_INTERNET/WWW/ Eesti Telefon. NETI. NETI: / ARVUTID JA INTERNET / WWW abivahendid / Java ja JavaScript http://www.neti.ee/cgi bin/teema/ARVUTID_JA_INTERNET/WWW/Java/ Fleming, Jennifer. Web Navigation: Designing the User Experience. 1998 Goodman, D. Dynamic HTML. 1998, Goodrich, M. T., R.Tamassia. 1998. Data Structures and Algorithms in Java. John Wiley & Sons. Grosso, P. XSL Concepts and Practical Use http://nwalsh.com/docs/tutorials/xsl/xsl/slides.html Haamer,L XML. TP , 2001 Habibullin, I. 2001. Samoutsitel Java. St. Peterburg. Hall, M. core SERVLETS and JAVASERVER PAGES. http://archive.coreservlets.com/ Hall, M. Java Programming Resources http://www.apl.jhu.edu/~hall/java/ Hallik, K. Perl. http://madli.ut.ee/~kaidoh/perl/perl_opetus.html Harold, E. R. Java Lecture Notes. Polytechnic University in Brooklyn http://www.ibiblio.org/javafaq/course/ 04.2002 Heinle, N. Designing with JavaScript. Web Review Studio Series. 1997 Hook, B. 1995. Building a 3D game engine in C++. Horton, I. 2000. Beginning Java 2. JDK 1.3 Edition. Wrox Press Ltd. IDG Communications Company. JavaWorld.com. http://www.javaworld.com/ 04.2002 INT Media Group. Active Server Pages 101. http://www.asp101.com/ 04.2001 INT Media Group. Learn How to Write Java Applets and Use Them On Your Web Site. http://www.webdeveloper.com/java/ 04.2001 Jaeger, A. HTML-juhend. http://madli.ut.ee/~ajaeger/fra31.html 04.2002 Java Advanced Imaging API Home Page. http://java.sun.com/products/java-media/jai/index.html JavaFAQ.nu. Absolute Java FAQ. Free book, tip, code, applets, tips, freeware. http://www.javafaq.nu/ rgenson, R. 1993 Programmitehnika. Tallinn. Kaasik, . Kiho, J. Koit, M. 1990. Kuidas programmeerida. Tallinn. Valgus. Kala, L. Mis on ASP. Tallinn, 2001 (referaat) http://postikana.ttu.ee/~leone/Referaat-ASP.doc Kiho, J. 2001. Java programmeerimise aabits. Tartu: Tartu likool. Arvutiteaduse Instituut. Kiho, J. Java programmeerimise aabits. http://www.cs.ut.ee/~kiho/progr/Aabits/ Kiho, J. V ike Java Leksikon. Tartu likool, arvutiteaduse instituut 2000 Kikkas, K. 1998. WWW ja HTML. TT is, J. 1992. Isetegevus ja individuaalne t viis. 2. tr kk. Toimetanud Ferdinand Eisen. Koolibri. Tallinn. Lepikult, T. Programmerimiskeel Java. http://www.math.ut.ee/~toomas_l/ProgrammeerimineJavas.html 04.2002 Leppikson, V. Programmeerimine C-keeles. Tln : EMI kirjastus, 1993 Linntam, A. Kuidas teha oma programme s steemile Windows '95 (ja 'NT): Visual C++ algajale : kahek sulisest programmist oma kalkulaatorini. Tallinn, 1997 Linntam. A. Interneti Kodulehek lje tegemine. Tallinn, 2001 Lyon, D, A. Image Processing in Java. Upper Saddle River : Prentice Hall PTR, 1999 Microsoft Developer Network. Active Server Pages Guide. http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/iisref/aspguide.htm Moncur, M. Teach Yourself Javascript in 24 Hours. 2001 Murulauk, M. Perl - Practical Extraction and Report Language http://www.tpu.ee/~marko666/perl Netscape Communications Corporation. JavaScript Documentation. http://developer.netscape.com/docs/manuals/javascript.html 04.2002 Norden, D. VRML. TP , 2001 O'Reilly & Associates, Inc. Online Catalog: Java in Nutshell. http://www.ora.com/catalog/javanut3/ O'Reilly & Associates, Inc. The Source of Perl. http://www.perl.com/ Peltom ki, J. Java-ohjelmoinnin peruskirja, Teknolit Oy 1999. PHP.ee http://www.php.ee/ 04.2002 PHP: Hypertext Preprocessor. http://ee.php.net/ 04.2002 Pori Korkeakouluyksikk , Tamperen Teknillinen Korkeakoulu. Loengud, 2000 ldoja, H. Cascading Style Sheets. http://www.tpu.ee/~hans/css/ 04.2002 ldoja, H. Veebisaitide kujundamine. http://www.tpu.ee/~hans/proseminar/ 04.2002 ial, J. Java leht http://www.cs.ut.ee/~jaanus/java/ ial, J. V rguprogrammeerimise elemente. http://www.cs.ut.ee/~jaanus/java/loeng/loeng7.html Robinson, M, Vorobijev, P. Swing. http://manning.spindoczine.com/sbe/ Swing. 04.2002 Roos, C. Java alused. http://www.tpu.ee/~charles/javaalus.htm Roos, C. Java kursus. Tallinn, 2001 Roosalu, M. Marc V: WEB. http://home.delfi.ee/~marc/WEB/ 04.2002 Sibola, A. WWW-liides Tartu likooli ppeaineregistrile. http://www.softronic.ee/~aulis/ 04.2002 Sinivee, I. HTML ja JavaScript. Tallinn, 2000. Smith, D. 1991. Concepts of Object-Oriented programming. Sun Microsystems Inc. Java 3D API Home Page. http://java.sun.com/products/java-media/3D/index.html 04.2002 Sun Microsystems Inc. Java Media Framework API. http://java.sun.com/products/java-media/jmf/index.html Sun Microsystems Inc. The Java Tutorial. http://java.sun.com/docs/books/tutorial/ 03.2002 Sun Microsystems Inc. The Source of Java Technology. http://java.sun.com/ 04.2002 Sun Microsystems. JavaTM 2 Platform, Standard Edition, v 1.4.0 API Specification. http://java.sun.com/j2se/1.4/docs/api/overview-summary.html Sun Microsystems. JavaTM 2 SDK, Standard Edition Documentation http://java.sun.com/j2se/1.4/docs/index.html Sun Microsystems. JDC Tech Tips. http://develope //www.w3c.org/ 04.2002 Trees, K. HTML- petus. http://liriel.org/doc/87. 04.2002 Trees, K. Soovitusi algajale veebiprogrammeerijale. http://liriel.org/doc/188 04.2002 ugu, E. Java Fenomen. http://www.ttu.ee/aa/1998/2/java.html W3C. XHTML Basic. http://www.w3.org/TR/xhtml-basic/ W3Schools Online Web Tutorials. http://www.w3schools.com/ 04.2002 Vabaduskasvatus. 1992. Rudolf Steineri pedagoogika. Pilte ja jutustusi rahvusvahelisest waldorfkoolitusest. Frans Carlgren, Arne Klingborg. Eesti ppekirjanduse keskus. Vain.J. Operatsioonis steem Linux. TCP/IP-v rgu k simusi. http://www.ise.ee/cdrom/cd2/linux/sisukord/9sisu.htm Wikla, A. Ohjelmoinnin perusteet Java-kielell , OtaDATA 1998 Wittenburg, T. 1995. Photo-based 3D Graphics in C++ . New York 1995 VRML Tutorial. http://xarch.tu-graz.ac.at/publ/tutorial/vrml/lighthouse/toc.html rk. V rk. http://vork.kolhoos.ee/ PAGE WTQNK roa^PMJ ~{mjgYVSPMJ ~yvheW xurol`] }zlifZWIF }zwifXUGz spda^[O }zwifXUG }yv}spmjvg}aYQ |tqnke]U wommmmmmmmmmmmmmmmmmmmmmmm @HP LaserJet 5MP \\COMPSCI\HP HPPCL5MS HP LaserJet 5MP HP LaserJet 5MP MSUDO HP LaserJet 5MP HP LaserJet 5MP MSUDO HP LaserJet 5MP @HP LaserJet 5MP \\COMPSCI\HP HPPCL5MS HP LaserJet 5MP HP LaserJet 5MP MSUDO HP LaserJet 5MP HP LaserJet 5MP MSUDO HP LaserJet 5MP bjbjt+t+ Tallinna Pedagoogika likool Jaagup Kippar Normal.dot Olev R Microsoft Word 8.0 Microsoft Word Document MSWordDoc Word.Document.8 Tallinna Pedagoogika likool Title _PID_GUID m$m0 Tallinna Pedagoogika likool Jaagup Kippar Normal.dot Olev R Microsoft Word 8.0 Z5 Tallinna Pedagoogika likool Title _PID_GUID @HP LaserJet 5MP \\COMPSCI\HP HPPCL5MS HP LaserJet 5MP HP LaserJet 5MP MSUDO HP LaserJet 5MP HP LaserJet 5MP MSUDO HP LaserJet 5MP MbP?_ MbP?_ bjbjt+t+ Tallinna Pedagoogika likool Jaagup Kippar Normal.dot Olev R Microsoft Word 8.0 Z5 Microsoft Word Document MSWordDoc Word.Document.8 Tallinna Pedagoogika likool Title _PID_GUID