Anda di halaman 1dari 26
Agyhullam: Java Nem lenne meseszép, ha lenne egy kényv a Javérél, ‘ami szérakoztatdbb, mint sorba dllni, hogy megdjittasd a jogositvényodat? Ez persze sak élom. Kathy Sierra Bert Bates OVREILLY* A kiadvany a kOvetke76 angol eredeti alapjan készil. Head First Java™ Sec tion Copyright © 2005, 2003 by O'Reilly Media, Inc.All rights reserved! © Kiskapu Kft, 2011 Authorized translation of the English edition of HEAD FIRST JAVA™, 2° EDITION ISBN 978059609205 © 2005 O'Reilly ‘Media, Inc. This translation is published and sold by permission of O'Reilly Media, Inc., the owner of all rights to publish and sell the same. No part of this book, including interior design, cover design, and icons, may be reproduced or transmitted in any form, by any means (electronic, photocopying, recording, or otherwise) without the prior written permission of the publisher. ‘Trademarked names appear throughout this book. Rather than list the names and entities that own the trademarks or insert a trademark symbol with each mention of the trademarked name, the publisher states that itis using the names for editorial purposes only and to the benefit of the trademark owner, with no intention of infringing upon that trademark. Series Creators: Kathy Sierra, Bert Bates Editor: Mike Loukides Cover Designers: Edie Freedman Fordités és magyar valtozat © 2011 Kiskapu Kft. Minden jog fenntartva! A szer26k és a kiad6 a lehets legnagyobb koriltekintéssel jart el e kiadvany elkészitésekor. Sem a szerz6, sem a kiadé nem vallal semminemd felel6sséget vagy garanciat a kOnyv tartalmaval, teljességével kapcsolatban, Sem a szer26, sem a kiad6 nem vonhato felelésségre barmilyen baleset vagy kiresemény miatt, mely kézvetve vagy kézvetlenil kapcsolatba hozhat6 e kiadvannyal. Mas szavakkal, ha az Agyhulldm: Java barmelyik részét arra haszndlod, hogy mondjuk egy atomerdmiivet vagy légiiranyité rendszer itzemeltess, magadra vagy utalva. Lektor: Rezmaives Lasz16 Fordités: Rézmiives Laszlo Miszaki szerkeszt6: Csutak Hoffmann Levente Felel6s kiacl6 a Kiskapu KA. igyvezets igazgat6ja © 2011 Kiskapu Kft 1134 Budapest, Csing6 u. 8; Fax: (+36-1) 303-1619; huip://www.kiskapukiado hu/; e-mail: kiado@iskapuhu ISBN: 978 963 9637 795 Készillt a debreceni Kinizsi Nyomdaban Felel6s vezet6: Bord6s Jinos Az Agyhullam sorozat mas olyan kéteteirdl irtak, amelyeknek Kathy és Bert volt a tarsszerzdje gy érzem magam, mintha egy tonna konyvet emeltek volna le a fejemr.” — Ward Cunningham, a Wiki feltalél6ja és a Hillside Group alapitéja .Sirtam, nevettem, meghatédtam.” ~Dan Stemberg, a java.net f6szerkeszt6 Az els6 reakci6m az volt, hogy fetrengtem a fold6n a nevetést6l. Miutén dsszeszedtem magam, réébredtem, hogy a konyv nem csak szakmailag kifogistalan, hanem a legkOnnyebben felfoghat6 hevezetés a programtervezési mintak vilégiba, amelyet valaha olvastam.” = Dr. Timothy A. Budd, a szémit6gép-tudoményok docense az Oregoni Allami Egyetemen, és tobb mint egy tucat kényv, kétik a .C++ for Java Programmers” szerabje -Tokéletes hangvétel a kockafej, laza k6dguru sziméra, aki mindnydjunkban ott él. Tokéletes tandcsok a gyakorlati fejlesztési stratégidkhoz, amelyek a itjak be az agyunkat, hogy unalmas, fellengz6s, professzomyelven irt szvegeken kellene dtverg6dniink. Travis Kalanick, a Scour és a Red Swoosh alapft6ja, az MIT TR100 tagia .VEGRE! Egy Java-konyy, amit gy irtak meg, ahogy én is tenném, Komolyra forditva a sz6t, ez a konyv egyértelmtien lesépor minden més szoftverkOnyvet, amit valahas olvastam. ..J6 kOnyvet imi nagyon nehéz: nagyon sok id6be telik elémni, hogy a tartalomnak természetes, olvasobarst folyésa legyen. Rengeteg munka. A legtébb szerz6 nyilvanvaléan nem tud megfelelni a kihivasnak. Gratuldlok a Head First EJB csapatinak az elsGrangg munkaért!” — Wally Flint .El sem tudtam volna képzelni, hogy valaki vigyorogva olvasson egy informatikai tankonyvet. A Head First EJB anyagit felhaszndlva 91%-ot értem el, és 14 évesen én lettem a vilig legfiatalabb SCBCD-je.” — Afsah Shafquat (a vilég legfiatalabb SCBCD-je) A Head First Servlets ugyanolyan j6, mint a Head First EJB, ami megnevettetett, és 979%-ot értem el vele a vizsgan” — Jef Cumps, J2EE-tanécsad6, Cronos Az agyunknak, mert mindig kéznél van (bar a bizonyitékok nem egyértelmitek) Az Agyhullam sorozat megalkotoi Kathy jatéktervezdként toltott ideje ota érdekl6dik a tanulaselmélet irént (a Virgin, az MGM és az Amblin’ szdméra készitett jat@kokat). Az Agyhulkim formatu- ménak nagy részét akkor talilta ki, amikor az UCLA Extension Entertainment Studies programjan New Media Authoring eladasokat tartott. Az utobbi idében a Sun Microsystems mesteroktat6jaként dolgozik, arra, okitva a Sun Java-tandrait, hogy miként tanitsék a legdjabb Java-technol6gikat, valamint képesit6 vizsgikatailit Ossze a Sun sz4méra, Bert Batesszel egyiitt szorgosan alkalmazza az Agyhullim elveit a fejleszt6k ezreinek oktatéséra. Kathy alapit6ja a legna- gyobb Java-koz6sségi webhelynek, a javaranch.com- nak, valamint a Creating Passionate Users blognak. Ezen a kényvén kiviil Kathy tarsszerz6je volt a Head First Serulets, a Head First EJB és a Head First Design Patterns cimd koteteknek. Szabadidejében Kathy tj izlandi lovat dédelget, siel, fut, és a fénysebességet csodalja. hathy@wickedlysmart.com Bar Kathy és Bert igyekszik minél tobb e-mailre vélaszolni, Bett szoftverfejleszi6 és akinek az érdeklédését az évtizedes munka a mesterséges intelligencival a tanulaselmélet és a tehnol6gia alapa oktatas felé irinyitotta. Az6ta is programozist oktat az iigyfeleinek. Jelenleg a Sunnal kilinféle Jav: Ssszeallit6 csapatokat irdnyft Bert szofiverfejleszt6i karrierjének els6 évtizede sorin keresztil-kasul bejérta a vilégot, olyan miisorszolgalta- (6 digyfeleknek segitve, mint a Radio New Zealand, a The Weather Channel, valamint az Arts & Entertain- ment Network (A & E). Egyik kedvenc munkéja egy teljes vastiti szimuliciés rendszer épitése volt a Union Pacific Railroad szaméra Bert reményteleniil szenvedélyes go-jatékos, fgy nem csoda, hogy idétlen id6k 6ta dolgozik egy go-progra- mon, Elég j6l gitérozik; jelenleg a bendzson probalgat- ja az uijait. Ezenkival szivesen siel, fut, és izlandi lovat, Andit trenirozza (vagy tanul tle), Bert ugyanazoknak a kényveknek volt a tarsszerzéje, mint Kathy, és jelenleg is keményen dolgozik az. Gjabb koteteken (a legfrissebb hireket megtalilod a webnap- loja oldalain), Néha elesipheted az IGS go-kiszolgalojan Gackstraw néven). terrapin@wickedlysmart.com ek mennyisége &s az (ti beosztésuk megnehezt et. Alegjobb (és leggyorsabb) médja annak, hogy szakmai segitséget kapj a kétethez, ha elldtogatsz a nagyon aktiv kezd6knek s26l6 Java-férumra a javaranch.com-on. Tartalomjegyzék (attekintés) 1 fejezet*Ugorjfejest! 1 2 fejezet + Osztélyok és objektumok 27 3 fejezet + Primitivek és hivatkozdsok 49 4 fejezet A tagfiiggvények példdnyvdltozdkathaszndlnak 71 5 fejezet irjunk programot! 95 6 fejezet+lomerdmegaJavaAPl-t! 125 7 fejezet + Oroklés és tobbalakisdg 165 8 fejezet- Felilletek és elvont osztdlyok 197 Q fejezet + Konstruktorok és szemétgyiijtés 235 10 fejezet + Szdmok és statikus tagfiiggvények 273 11 fejezet Kivételkezelés 315 12 fejezetGrafikusfelilet épitése 353 1B fejezet*ASwinghaszndlata 399 14 fejezet Sorositas és dibeolvasdsikiirds 429 15 fejezet + Hélézatok és szdlak 471 16 fejezet+ Gyijtemények és dltalénosttasok 529 17 fejezet + Csomagok, befdttestivegek éskézzététel 581 18 fejezet + Tévoli telepités az RMI segitségével GO7 A fiiggelék + Az Utolsé Kédkonyha 649 B fiiggelék + Tiz tuti téma, ami majdnem bekerilt akényvbe... 659 Targymutaté (index) 677 1 Ugorjfejest! 1 gy makodik a Java 2 Ate dolgod a Javaban 3 A Java nagyon rovid trténete 4 A Java-kédok felépitése 7 Az osztilyok felépitése 8 Osctily, main tagfiigevénnyel 9 Mit mondhatsz el a main tagfiigevéayben? 10 Ismétl6d6 ciklusok ismétl6d6 ciklusok ismétl6d6.... 11 Feltételes eligazasok 13 Komoly tizleti alkalmazas k6dolisa 14 Frazisautomata 17 Kodmagnesek 20 Gyakorlat 20 Légy afordité! = 21 Gyakorlat 21 Java-keresztrejtvény 7.0 22 Gyakorlat~Megoldis 25 2 Osztalyok és objektumok 27 Székek héborija_ 28 Mia helyzet az amdba forgatiséval?32 Amikor megtervezel egy osztilyt, gondold végig, milyen objektumok jonnek maid létre az adott osztélytipusbél. Az alabbiakat kell ‘meghatéroznod: 34 Mia kilinbség az osztily és az objektum kézétt? 35 Az els6 objektumod 36 Movie objektumok létrehozasa és tesztelése 37 Gyorsan! Kifelé a main-bél138 A kitaldlés jaték futtatésa 40 Gyakorlat 42 Gyakorlat 43 Gyakorlat-Megoldis 46 int fo0.go(x); 3 Primitivek és hivatkozdsok 49 Valtoz6 bevezetése 50 .Egy dupla tejeskavét kérek — nem is, legyen inkabb egy int” 51 Nem szeretnéd, ha kicsordulna.... 52 Ela kezekkel att6l a kulessz6t6l! 53, A Kutya objektumod vezérlése54 Az objektumhivatkozasok is 55 sak valtoz6értékek, 55 Blet a szemétgydit6 kupacban 57 Blet és halél a kupacban 58 Atémb olyan, mint egy csészékkel tele tilea 59 Atémbok is objektumok 59 Dog objektumokbdl All6 tomb létrehozisa 60 Vezéreld a Kutyad! 61 Gyakorlat 63 Gyakorlat 64 Gyakorlat ~ Megoldas 68 A tagfiiggvények példanyvaltozokat hasznalnak 71 int void go(int z){ } Ne feledd: az osztdlyok azt irjék le, hogy mit tud és mit csinal egy objektum 72 A méret befolyasolja az. ugatist B A tagfiiggvényeknek dtadhatsz dolgokat 74 A tagfilgavényekt6l vissza is kaphatsz.dolgokat 75 Egy tagfiigavénynek tb dolgot is atadhatsz 76 ‘A Java érték szerinti dtadast alkalmaz 7 Gjratslive 78 Klassz dolgok, amiket a paraméterekkel és a visszatérési tipusokkal csinalhatsz 79 Betokoz4s 80 A GoodDog osztily betokozisa 82 Hogyan viselkednek a tmbdk objektumai? 83 PéldanyvaltozOk bevezetése és elOkésritése 84 Mia kdlénbség a példanyvaltoz6k és a helyi valtozdk k6z0t? 85 Valtoz6k (primitivek vagy hivatkozsok) dsszehasonlitésa 86 Gyakorlat 88 Gyakorlat 89 Gyakorlat ~ Megoldas 93 xi xii 5 {rjunk programot! 95 Epits torpedjatékot - Sink a Dot Com 96 Els6 Iépés: a magasszinti tery elkészitése 97 ‘Az ,Egyszerti Dot Com Jaték” — kiméletesebb bevezetés 98 Hogyan épithetsz fel egy osztilyt? 99 A tagfiiggvények megval6: 101 A SimpleDotCom osztaly tesztk6djinak megirasa 102 A checkYourselfO taghiigaveny 104 Csak az Gjdonsagok 105 A SimpleDotComGame osztily kédvazlata 108 A jaték mainO tagfiggvénye 110 randomO és getUserInputO ul Ss Még egy utols6 osztily: GameHelper 12 ‘Tovabbi tudnival6k a for ciklusokrél 114 Variaci6k ciklusokra 15 A tovabbfejlesztett for ciklus 116 z 7 Alaptipusok dtalakitisa 117 Gyakorlat 118 Gyakorlat 119 Gyakorlat -Megoldas 122 6 Ismerd mega Java APl-t! 125 Az €1626 fejezet filgg6ben maradk izgalmakkal ért véget — nem javitottunk ki egy hibat 126 Mi is torténik itt val6jaban? 127 Hogyan javitsuk ki a hibat? 128 Az els6 megoldas til ormétlan 129 Ebredj, és érezd a kOnyvtar illata! 132 Néhiny dolog, amit az ArrayList-tel csindlhatsz 133 ‘Az ArrayList és a normal tmbk Osszehasonlitisa 136 Javitsd ki a DotCom k6djat!138 ‘Az ti, tovabbfejlesztett DotCom osatily 139 . Epitsd fel az IGAZI jatékot — Sink a Dot Com 140 Mit kell médositanod? 141 Az igazi DotComBust osztily k6dvizlata 144 A DotCom osztaly végleges valtozata 150 Néhdny hasznos logikai kifejezés 151 A Konyvtar (a Java APD haszndlata 154 Hogyan jétszhatsz az API-vaP? 158 Gyakorlat 161 Gyakorlat ~Megoldis 163 Ordklés és tébbalakiisdg 165 Székek hiborija — visszaporgetve 166 Mia helyzet az. am6ba forgatésaval? 167 Agytorna 167 Az brdklés makddése 168 ‘Tervezd meg egy dllatszimuléciés program Sroklési fajat! 170 Tovabbi drdklési lehetdségek keresése 173 Melyik tagfiggvény hivedik meg? 175, Ordklési fa tervezése 176 IS-A és HAS-A 17 Var) csak! Tovébb is van! 178 Honnan tudhatod, hogy az érdklés helyes-e? 179 Mit szabad és mit nem szabad, amikor &r6k6lsz? 181 Akkor milyen el6nyei is vannak az drdklésnek? 182 ‘A szerzdés betartisa: a felilirés szabalyai 190 Tagfliggvény tilterhelése 191 Gyakorlat 192 Gyakorlat 193 Gyakorlat Megoldés 195 8 Feliiletek és elvont osztdlyok +197 Object © = al-get (id); Dog 4 = (Bog) oF dubark(); Elfelejtettiink valamit, amikor ezt megterveztik? 198 A fordité nem engedi, hogy példanyosts egy elvont osztilyt 201 Elvont vagy konkrét? 202 Elvont tagfiiggvények 203 Minden elvont tagfogavényt meg KELL valésftanod 204 A tobbalaktisig mikédés kézben 206 Miis ez az Object nevi ultra-szuper-megaosztaly? 209 Az Object tipust tébbalakii hivatkozasok haszndlatinak megvan az dra... 211 Amikor egy Kutya nem tigy viselkedik, mint egy Kutya 212 ‘Az Objektumok nem tudnak ugatni, 213 Lépj kapcsolatba a bels6 Objektumoddal! 214 Mi van, ha médosftanod kell a szerz6dést? 218 Felilletek: a felment6 sereg 224 A Pet feliilet meghatarozisa és megvalésitisa 225 Gyakorlat 230 Gyakorlat 231 Gyakorlat — Megoldas 233 xiti 9 Konstruktorok és szemétgyiijtés 235 ‘A Verem és a Kupac: ahol az objektumok élnek 236 Mia helyzet azokkal a helyi viltoz6kkal, amelyek objektumok? 238 Ha a helyi valtoz6k a veremben élnek, akkor hol élnek a példényvaltoz6k? 239 Az objektumsziletés csodaja_ 240 Hozz létre egy Kacsitl242 Uj Kacsa kezd6dllapotanak meghatérozisa 243 Konnyftsd meg a Kacsa létrehozasat! 245 Az alaposztilyok konstruktorainak szerepe egy objektum életében 254 Hogyan hivhatod meg egy alaposztily konstruktorit? 256 Létezhet a gyermek a sziil6k el6tt? 259 Alaposztdlybeli konstruktorok argumentumokkal 260 Tiilterhelt konstruktor meghivaisa egy masik talterhelt konstruktorbol 261 Most mar tudom, hogyan sziiletik egy objektum — de meddig €? 266 Gyakorlat 266 Mia helyzet a hivatkoz6 valtoz6kkal? 270 Gyakorlat ~ Megoldas 270 0 Szamok és statikus tagfiiggvények 273 A Math osztily tagfiggvényel: a leginkabb globstlis tagfiiggvények 274 Mia kilénbség a normal (nem statikus) és a statikus tagfiigavények k6z6tt? 275 Mit jelent az, ha egy osztdlynak statikus tagfliggvényei vannak? 276 A statikkus végleges valtoz6k Alland6k 282 A Math osztily tagfiigavényei 286 Primitivek beburkolasa 287 A Java 5.0 el6tt NEKED kellett elvégezned a munkat.... 288 Szimformazas 294 A formazas mikédése 295 A formaz6 karakterkinenak sajét nyelvtana van 297 Aformatumleirs 298, Miveletek datumokkal 302 A Calendar objektumok hasznélata 305 Gyakorlat 310 Gyakorlat - Megoldas 314 1 Kivételkezelés 315 Készits zenegépet! 316 Kezdjik az alapokkal!317 El6szir is kell egy Sequencer 318 Mi van, ha egy meghivni kivant tagftiggvény kockézatos? 319 A kivételek objektumok — Exception (Kivétel) tipustiak 322 Folyamatvezérlés a try/catch blokkokban 326 Finally: amit végre akarsz hajtani, ha torik, ha szakad 327 Emiitettik, hogy egy tagfiiggvény tb kivételt is dobhat? 329 Akivételek tbbalaktak 330 A catch blokkokat a szkebbt6l a b6vebb felé haladé rendben kell megadnod 332 Nagyobb Kosarat nem tehetsz egy kisebb kosir f6lé 333 Ha nem akarsz kezelni egy kivételt... 335 Valédi hangkeltés 340 Az els6 zenelejatsz6 programod 342 ‘Midi-esemény (dal-adatok) létrehozisa 343 MIDI-izenetek: a Midi-események szive 344 Uzenet médositisa 345 Gyakorlat 348 Gyakorlat ~ Megoldas 351 Grafikus felillet épitése 353 Minden egy ablakkal kezd6dik 354 Az els6 grafikus feliileted: gomb a keretben 355 Ertesiilés a felhasznaloi eseményekr6l 357 Figyel6k, forrasok és események 361 A rajzolisra visszatérve... 363 Enesiilhetek egy eseményrdl. 369 Probald ki KET gombball 372 Bels6 osztilyok: a felment6 sereg 376 A bels6 osztalyok példnyait kils6 osztdlyok példnyaihoz kell kapesolni 377 Hogyan hozhatsz létre példnyt egy bels6 osztilybol? 378 Bels6 osztdly haszndlata animacihoz 382 Nem grafikus felileti események figyese 387 Masodik valtozat: értestilés a vezérlGeseményekrél 390 Harmadik valtozat: rajzolds a zene ttemére 391 Gyakorlat 394 Gyakorlat ~ Megoldas 397 xvi 3 ASwinghaszndlata 399 Swing-dsszetevok 400 Elrendezéskezel6k401 Mi alapjin dont az elrendezéskezelo? 402 A Hiirom Nagy elrendezéskezel6 — keretek, folyésirany és dobozok 403 Jaték a Swing-Ssszetevkkel 413 ‘A BeatBox felépitése 419 Gyakorlat 424 Gyakorlat ~Megoldés 427 4 Sorositas és fajlbeolvasds/kiiras 429 Kapd el a ritmust! 430 Az dllapot mentése 431 Sorositott objektum fajlba irésa 432 Az adatok folyamokban mozognak egyik helyr6l amésikra 433 De pontosan mib6l is all egy objektum éllapota? Mit kell menteni? 435 Visszalejtés: az objektumok visszaillitisa 441 Mi torténik, amikor visszafejtesz egy objektumot? 442 A jdtékkarakterek mentése és visszadllitésa 444 A JatekKarakter osztily 445 Karakterlinc kiirisa szévegfajlba 447 A java.io File osztaly 452 Olvasas szivegfajlbol 454 QuizCardPlayer (k6dvazlat) 455 Feldolgozas a String splitO tagfigavényével 458, A serialVersionUID haszndlata 461 BeatBox-minta mentése 463 BeatBox-minta visszaallitasa 464 Gyakorlat 466 5 Hélézatok és szdlak 471 ValosidejG BeatBox-csevegés 472 Kapesol6dis, kiildés és fogads 474 Hal6zati csatolokapcsolat létesitése 475 ATCP-kapu csak egy sz4m:egy 16 bites szaim, amely egy adott programot azonosit a kiszolgal6n.476 Adatokat egy BufferedReader segitségével 478 olvashatsz egy csatolérél 478 Adatokat egy PrintWriter segitségével ithatsz egy csatoléra 479 DailyAdviceClient 480 A DailyAdviceClient kédja_— 481 Egyszent kiszolgal6 készitése 483 A DailyAdviceServer k6dja 484 Csevegdiigyfél készitése 486 A Javaban tobb szl is lehet, de csak egy Thread osztily 490 Mit jelent az, ha egynél tb hivasi verem van? 491 Minden szlnak van egy elvégzend6 feladata ~ egy tagfiigavény, amelyet a7 tj szal vermébe kell tenni. 493 Alhoz, hogy feladatot adj egy szlnak, meg kell valésitanod a Runnable feliiletet_ 494 A szaltitemez6 497 Szilak elaltatésa 501 A program kiszmithatobbé tétele a sleep segitségével 502 Ket szal létrehozasa és elinditésa 503 Ryan és Monica problémdja, kédban elmesélve 506 A makeWithdrawalO tagfiiggvényt atomi méveletté kell tenniink 510 Az objektumzarak haszndlata 511 Az ,Elveszett frissités” rettegett problémaja_— 512 Futtassuk ezt a kédot. 513 Tedd az incrementO tagfiiggvényt atomiva = hangold dssze!_ 514 Az Osszehangolas sétét oldala 516 Az Gj, tovabbfejlesztett SimpleChatClient 518 ‘A nagyon-nagyon egyszerti csevegokiszolgal6 520 Gyakorlat 524 Gyakorlat ~ Megoldas 526 xvii 6 Gyiijtemények és dltalanositasok 529 A Collections.sortO hozziadasa a zenegép k6djéhoz 535, Asort0 tagfiggvény deklaricidja 539 Altalénosités diohéjban 541 Altalanos OSZTALYOK haszndlata 542 Altalanos TAGFUGGVENYEK hasznilata 544 Az Gj, javitott, dsszehasonlithat6 Song osztaly 550 de> Egyéni Ssszehasonlit6 haszndlata. 552 A Collection API (egy része) 558 Mitesz két objektumot azonossi? 560 Amit tudnod KELL a fahalmazokrél.... 565 ‘Tobbalakti argumentumok és dltalinositésok haszndlataS69 e rep Helyettesité karakterek a felmenté sereg 574 Gyakorlat 576 Gyakorlat ~ Megoldas 578 beféttesiivegek és kézzététel 581 Az alkalmazas kézzététele 582 ‘A forraisk6d- és osztilyfajlok szétvalasztisa 584 Tedd a Java-kédot egy beféttestivegbe!585 A JAR futtatasa (végrehajtisa) 586 Tedd az osztilyaidat csomagokba! 587 A csomagnevek titkézésének megakadalyozsa588 Forditas és futtatas csomagokkal 590 A-d kapesolé még klasszabb, mint ahogy korébban, mondtuk591 Vegrehajthat6 JAR fail készitése csomagokkal 592 Es hova keriil a jegyzéktajl’ 593 Java Web Start 597 ‘A nlp fal 599 ‘A Java Web Start-alkalma kozzétételének lépés Gyakorlat ~ Megoldas 604 isok készitésének és 600 xviii 18 Tavoli telepités az RMI segitségével 607 A ,segédek” szerepe 612 A Java RMI biztositja az igyfél- és szolgdltatéssegéd objektumokat Mia helyzet a kiszolgal6i kisalkalmazasokkal? 625 Egy nagyon egyszerti kiszolgal6i kisalkalmazés 627 Csak a moka kedvéért: alakitsd kiszolgal6i kisalkalmazass4 a Frazisautomatat! 629 A servlet barat Frizisautomata kédja 630 Enterprise JavaBeans: a felpumpalt RMI 631 A végs6 triikk — egy kis Jini 632 Az alkalmazkod6 felderités mikédés kbzben 633 Ongyogyit6 halozat mokddés kOzben 635 Az utols6 projekt: az univerzalis szolgaltatasbngés26 636 fiiggelék « Tiz tuti téma, ami majdnem bekeriilt akényvbe... 659 J Taraymutats (index) 677 Hogyan hasznald ezt z Bevezetés konyvet? Nem hiszem el, hogy ilyesmit tettek egy Tava-programozési uk az éget6 kérdést: si Konyvbe?” Ebben a résaben meqvalaszolh “widrt bettek yest ay Java-prograno® xxi Kinek sz6l ez a konyv? Ha az alabbi kérdések mindegyikére igennel felelsz. Ez NEM referenciakényv. @ Progamons ma? Az Agyhullam: Java nem Java- @ Mog szoretnéd tanuni a Java hasmnélatét? aN ea eZee ee obban snorted az inspcl6beszlgetésoket vocsora MAMAS kézben, mint a széraz és unelmas iskolai elbadésokat? akkor ez a konyv neked sz6l. Ki tartsa magat tavol ettél a kényvtdl? Ha az alabbi kérdések bdrmelyikére igennel felelsz @ Aprogramozési héttered a HTML-re koriétozédlik, és a parancs- nyelvekkel kapcsolatban nem rendelkezel tapasztalatokkaf? (Ha mar haszndltil ciklusokat vagy if/then szerkt el fogsz boldogulni ezzel a konywel, de a HTML-cimkék ismerete Onmagaban nem elég.) @ Mené C++-programoz6 vagy, és referenciakényvet kereset? ® Fetse attéi, hogy kipr6balj valami Gjat? Inkébb vélasztandl egy gydkérkezelést, mint hogy kockéshoz cstkosat vegyél fel? Meggy6z6désed, hogy egy szakkényv nem lehet komoly, ha a memériakezelést egy kacsa képe illusztrélja? ™ akkor ez a konyv nem neked sz6l. csctdly meglegyzése:kivettekiaztarészt, hogy nyes hitelkartyéd, akko S mi van a yJava ajén xxii Tudjuk, mire gondolsz? -Hogyan lehetne ez egy komoly Java-programozisi konyv? -Minek ez a sok kép?” ~Tényleg lehet igy tanuln? -Tényleg pizza illatat érzem?™ Azagyad azt hiszi, hogy EZ fontos. Tudjuk, hogyan mikédik az agyad f Az agyad tjdonsigra vagyik: mindig a szokatlant keresi-kutatja. fgy épill fel, mert ez segit életben maradni, Ma talin nem valészind, hogy egy tigris ebédie leszel, de az agyad azért figyel. Soha nem lehet tudni Mit csinal az agy, ha szokvanyos, mindennapi dolgokkal talalkozik? Nos, bdrmit, amivel megakadélyozhatja, hogy ezek a dolgok megzavarjak az igazi munkajit — a fontos dolgok rogzitését. Az unalmas dolgok elraktérozaséra nem pazarolja az energi nem jutnak at az ,ez nyilvanvaléan nem fontos” szdirén. De honnan tudja az agyad, hogy mi fontos? Tegyiik fel, hogy kirdndulsz, és egyszer csak egy tigris ugrik eléd. Mi torténik a fejedben és a testedben? ; ezek Nagyszerd, Mar Felizzanak az idegsejtek. Felgyorsul a pulzus. Beindulnak a kémiai csak 637 szdraz reakciok. Aca és unalmas oldal. Innen tudja az agyad Wad azt hie; 5 Ez fontos! Jegyezd meg! Nemérdenee ca E2T aS De tegyiik fel, hogy otthon vagy egy kényvtarban iilsz, biztonsagos, -aroznia, meleg, tigrismentes kornyezetben, és egy vizsgira késziilsz, vagy valamilyen bonyolult maszaki tudast probalsz a fejedbe tmni, amir61 a fondk6d azt hiszi, hogy egy het, de legfeljebb tiz. nap alatt megtanulhat6. Csakhogy van egy kis bokken6. Az. agyad megprobil szivességet tenni neked, és gondoskodik réla, hogy ez.a nyilvdnvaléan nem fontos tartalom ne késsin le driga erGforrésokat és térol6kapacitas amelyet igazén fontos dolgokra fordithatnal. Példaul tigrisekre. arra, hogy milyen veszélyes a tiiz. Vagy hogy miért ne snowboardo: soha tObbé rovidnadrigban Az agyadnak nem mondhatod azt egyszertien, hogy .Hé, agy, kbsi szépen, de nem szémit, milyen unalmas ez a kOnyv, és mennyire hoz kézba, akkor is muszdj elraktéroznod.” xxiti | Az, ,Agyhullam: Java” olvasdirdl feltételezziik, hogy tanulni szeretnének si et atinz, mageannanvalamie 16z mes Ke ST aztin meg kell jeez Mt el ae sol, hogy ence omen 2 NON zee tadominyok, a neurobilOeia Atul nem so tern fat ras eee enn acerint tamil oka bbe ermal mint hogy clwasonk ey sve Mitudjuk, hogy mi villanyozza fel a2 agyad. egy tagtiiggvényt bell, hz Agyullam sorozat alapevel tabbek Kez6rt meghimia a szldn a kévetkez6k: ol av saolgatats Vizuéls élményt nyéjtunk. kepekcet sokkal konnyebb megieayezni, mint a szavakat einaygtkban, € sokkal batékonyabba teszik tanulist (az emlékezet teriletén véazer jjutatésok szerint kar 89% leet a javuls) j repel emellettéretdbe i teszik 2 dolwokas = Ha a ezivoget vellk kapcsoltban dé Képekbe vagy azok melié helyezz0k, He a rua wy yma a 2 AST ohet anna nem pei 2 gy az vaso wep ese megolan a rales oP vapcso- vont tegfiggvény >) odo feladatokat i lenei seivée, > WetkSanapi, szeméiyre szabott stiust pesmélunk. A legijabb vizsgatok kimutattsk, rt nines teste 7 hogy a tanul6k akas 40%-kal job tvmaiményt érnek el az ut6lagos teszzeken, ha A oy rata sls, haner Nekoanap nye, Konvetientl hozzijuk 826) rtekezés helyett torténetekre és laza, tarsalgasi stilusra van Eres ne aba tl woman vennl magni Or sz any haa bral estan 88) oadast halgatonie ‘as aasét mbiyebb gondokodésrakészetilk Hs 0 agysefreinket Achat abe, agynk akc kapeso, AZ Na Or re fel el hte sf Kell tn 2 Yet oa): na alain Ssatonbzni kel hay fades o/son ep wean eg vetkenetseetwonon le) es Nincs figgvénytarzs! Pact el Ehhez kihivasok, syakoratok, gondola Zardle pontosvesszévell. ebrest6 Ikerdések és olyan feladatok kellenek, ore Ra mega mince agyfecket & ameter erzekszervel igenybe VEST Mogragadk ~ é megtartuk — az ovas6 ayalmét. Mindnyajan smer a tenytes Mera ca, de el al wn aso M2 Sayan esak ata igyel, ami meg seen nos tins vagy wlan Ey neh A nat boncolgal Kony¥nek Se cok, Ges ie. az agyunk oka ora nl, Wa wh etmek hat. Mar tdi, hogy a2; howy Ha aersunkee valamire, nagyrésat az reli Kersdest6 pee na oto kink an a ee, tvs ksi sziviaesar Fi i, haem cyan zeke, mink HT eivancsiség, tent Meare meg mi a.) ay aa, ami ft Nonaka vagy amikor 2a eat hoy entialyokvagvunk me vk oun ey fladatt, amide mind Sy eka, meganultnk vlan am nee spndolta, hogy Behe, A ogy dan val it SS ere ob, a rendsaergizda eM ‘energy ey seat S fol Soprieoa 12 cad Vagy HAS-A kapesolat aes xxiv Metakognicié: gondolkodas a gondolkodasrol Ha tényleg tanulni szeretnél, mégpedig gyorsabban és alaposabban, figyelj arra, hogy hogyan figyelsz. Gondolkodj el azon, hogy hogyan gondolkodsz. Tanuld meg, hogyan tanulsz. Gyerekkorunkban a legtobbiink nem vett leckéket metakognici6bél vagy tanuléselméletb6l. Eludrtdk totiink, hogy tanuljunk, de nem igazin tanitottak ‘meg, hogyan kell tanulni a Mi azonban feltételezzziik, hogy ha a kezedben tartod ezt a kényvet, akkor tényleg meg akarod tanulni a Java haszndlatat ~ és val6szindleg nem akarsz tal sok id6t raszénni. Ha a lehet6 legtbbet szeretnéd kihozni ebbol a konyvbol vagy barmilyen knyvbél, illetve tanérab6l -, ra kell venned. az agyad, hogy erre dsszpontositson, Atk az, hogy az agyadat meg kell gyGznéd, hogy a megtanu- land6 anyag Tényleg Fontos. A j6létedhez elengedhetetlen. Olyan fontos, mint egy tigris. Maskiilénben folyamatosan harcolhatsz az, agyaddal, hogy ne kévessen el mindent annak érdekében, hogy a konyv tartalma ne ragadjon meg az emékezetedben Hogyan vehetem ré az agyamat, hogy a Javat egyenrangunak tekintse egy hes tigrissel? ‘Van egy lassabb, ffraszt6 médszer, és egy gyorsabb, hatékonyabb tit is, A lassi médszer lényege egyszertien az ismétlés, Nyilvan tudod, hogy képes vagy megtanulni és megiegyezni még a legunalmasabb anyagot is, ha tijra és Gjra begyOmészléd az agyadba. Ha elégszer ismétled, az agyad ezt mondja: Nem érz0dik gy, mintha fontos lenne neki, de tijra és tjra és tijra ugyanazt olvassa, tigyhogy biztos az.” A cél gyorsabb elérését bérmi segitheti, ami ndveli az agytevékenységet, kiilnésen ha az agyadat mas-mas médon dolgoztatja meg. Az el6z6 oldalon felsorolt dolgok nagy szerepet jatszanak a megoldasban, és bizonyitottan olyasmik, amik segitenek, hogy az agyad neked dolgozzon, A kutatésok azt mutatjék példaul, hogy ha egy szdveget egy hozza tartoz6 kép belsejébe tesznek (nem pedig az oldal mas részére, példaul egy abraalatrésba vagy a szdvegtérzsbe), az agyad megprobalja kitalélni, hogy a szavak és a kép miként kapcsolédnak ssze, ami tobb agysejtet izzit be. Tabb dolgoz6 agysejt = nagyobb esély az agynak, hogy megértse, hogy figyelnie és az olvasottakat valészindleg, rogzitenie kell, ‘A hétkéznapi nyelv is segit: a legtbb ember jobban figyel, ha beszélget, mivel a masik elvarja, hogy kGvesse, amit mond, és reagaljon ra. Az agyad azonban csodalatos médon nem feltétlentil t6rddik vele, hogy a ,beszélgetés" kézted és egy masik ember, vagy kézted és egy konyy kéz6tt zajlik. Ha az olvasott széveg stilusa ezzel szemben széraz és hivatalos, az agyad ugyantigy érzékeli, mintha egy eldadést hallgatnal egy teremnyi passziv hallgat kéz6tt — .ébrenlét nem sziikséges, kikapcs”. A képek és a trsalgasi stilus azonban csak a kezdet Vajon hogy tudném révenni az agyam, hogy emiékezzen erre a cuccra...? xxv Ezt tettiik MI: ‘Képeket haszndltunk, mert az agyad képekre van hangolva, nem sz6vegre. Ami az agyat illeti, egy kép valoban szaz sz6val felér. Amikor egy szévegrészhez kepek kapcsolédtak, a szOveget a képek belsejébe agyaztuk, mert mikddik, ha a széveg aban van, amire vonatkozik, nem pedig egy Abraaldirasban vagy elésva az oldal mélyén. Ugyanazt a dolgot tobbféleképpen, kiilénbéz6 érzékszervekre hato médon, tobbszér is elismételtik, hogy néveljtik az esélyét annak, hogy a tartalom az agyad Wb részén is rOgztljon, A fogalmakat és a képeket vératfan médon hasznaltuk, mert az agy az ijdonsagot szereti, és némi 6reelmi toltetet is vittiink beléjiik, mert az agy figyel az érzelmek biokémijara, Amivel kapesolatban érzéseink vannak, arra val6szintibb, hogy emlékezni fogunk, még ha csak annyirél is van s26, hogy nevettlink egy j6t, meglepédtiink, vagy valami felkeltette az érdeki6désiinket. Személyre szabott, térsalgési stfust haszndltunk, mert az agyad jobban figyel, ha azt hiszi, hogy beszélgetsz, mint ha tigy gondola, hogy passzivan hallgatsz egy el6adast. Az agyad akkor is igy mikédik, amikor olvasol ‘Tobb mint 50 gyakorlatot mellékeltiink, mert az agyad hatékonyabban tanul és emlékezik, ha esindlse valamit, mint ha csak olvasol r6la. A feladatokat Ggy terveztiik meg, hogy kihivast jelentsenek, de azért megoldhatok legyenek, mert a legtobben az ilyen feladatokat szeretik A tartalmat t6bbféle stflusban vilaltuk, mert vannak, akik a lépésr6l lépésre halads leirdsokat részesitik elSnyben, mig masok eldsz6r stfogo képet szeretnének kapni, és olyanok is akadnak, akik csak egy példat akarnak ltni, Attl figgetlentil azonban, hogy neked mi a kedvenc tanulisi médszered, mindenkinek a hasznéra valik, ha ugyanazt a tartalmat tbbféle tilakisban latj. Mindkét agyfétekére gondoltunk, mert minél jobban lekétjak az agyunkat, annél val6szintibb, hogy emlékezni fogunk a tanultakra, és annal hosszabb ideig tudunk 6sszpontositani. Mikézben az egyik agyfélteke dolgozik, a masik agyfélteke gyakran pihenhet, ami meghosszabbitja a hatékony tanulas idétartamat. Térténetekkel és t6bbféle nézbpontot bemutaté feladatokkal is szinesitettik a konyvet, ‘mert az agyad alaposabban tanul, ha arra kényszeriil, hogy elemezzen és értékeljen. Kibivésok elé fogunk llitani, egyrészt a gyakorlatokkal, masrészt olyan kérdésekkel, amelyekre nincs mindig egyértelmd valasz, mert az agyad akkor tanul, ha dolgozik. (Gondolj csak bele: a testedet nem tudod formaban tartani, ha csak nézed, ahogy masok gytimnak az edz6teremben.) Ugyanakkor mindent elkévettiink, hogy az agyad csak a megfelel6 dolgokra forditson energiit, és ne kellien egyetlen agysejtet sem arra dldoznia, hogy megfejtsen egy bonyolult példat vagy egy stilyos, szakzsargonnal teli, széraz széveget ‘A 80/20 megkizelitést kévettiik. Ha Java-doktori cimre pilyazol, val6szintileg nem ezt az egy kOnyvet fogod forgatni, ezért nem ejtink sz6t mindenrél, esak arrél, aminek tényleg hasznat fogod venni. xxvi @ Kutyaobjektum Kutya be Léay afordité! Ezitt Puzzleville jie Java~ lehull alepel OP vs bird az agyad: 1. Lassits! Min6l tbbet értesz meg, annél kevesebbet kell bemagolnod. Ne csak tigy olvass. Allj meg, és gondolkodj. Ha a kOnyv feltesz egy kérdést, ne ugorj egyb6l a valaszra. Képzeld tigy, mintha valaki tényleg kérdezne tOled valamit, Minél jobban rikényszerited az agyad a gon- dolkodasra, anal nagyobb az esélyed arra, hogy emlékezni fogsz a tanultakra. 2. Végezd el a gyakorlatokat és jegyzetel! A gyakorlatokat nem azénttettiik a kOnyvbe, hogy el is végezziik ket helyetted, mert ez olyan lenne, mintha edzésképpen valaki massal végeztetnéd a feliléseket, Ne csak nézd a gyakorlatokat, vegyél el6 egy ceruzdt. Rengeteg dolog tandsitja, hogy a tanulas kdzbent fizikai tevékenység noveli a tanulds hatékonységat. 3, Olvasd el a .Nincsenek hillye kérdések" részeket! Ugy értk, mindet, Nem kihagyhat6 labjegyzetek, hanem a lényegi tartalom részei! A kérdések néha hasznosabbak a valaszokndl. 4, Ne egy helyben olvass el mindent! Allj fel neha, nyGjt6zkod), sétalj, cserélj széket, dolgozz mésik szobaban, Ez segit az agyadnak, hogy érezzen, és elvilaszija a tanulast egy adott helyt61. 5. Lefekvés elétt ez a Kényv legyen az utols6 ~ vagy legalébbis a legkevésbé megterhelS dolog —, amit olvasoll Az agyad az utdn is tanul, hogy leteszed a kényvet (példaul ekkor tolti be a tanultakat a hossz6 tv meméridba). Az agynak a feldolgozashoz idére van sziiksége. Ha a feldolgozésra szant iddben valami mast syadba tomsz, az éppen megtanult anyag egy része kihullik a fejedb6t Reg Vad extn oda. do ragased ane Ezt teheted TE, hogy engedelmességre Mi megtettiik, ami tokink telt; a tbbi rajtad All. Az alabbi tippek csak a kezdolikést adjake meg — figyeld az agyad tizeneteit, és Allapitsd meg, hogy mi az, emia te e: mikédik, és mi az, ami nem. fs probalj ki 4j dolgokat! edben is 6. lgyal sok vizet! Az agyad akkor mikédik a legjobban, ha folyadékban lubickol. A kiszracis (ami jéval azel6ut bekivetkezhet, hogy szomjas lennél), csbkkenti a felfogképességet. 7. Besz6lrlal Hangosan! A beszéd az agy egy mésik részét kapcsolja be. Ha megérteni probalsz valamit, vagy ndvelni szeretnéd az esélyét annak, hogy késObb emlékezz r4, mondd ki hangosan. Még jobb, ha megprobdtod valakinek elmagyarizni. Igy gyorsabban fogsz tanulni, és olyan dolgokat is felfedezhetsz, amik olvasés kézben fel sem wintek. 8. Figyeld az agyad! Ugyelj ri, hogy ne terheld tal az agyad. Ha azt veszed észre, hogy csak felszinesen futod at a széveget, vagy elfelejted, amit éppen most olvastal, ideje pihendt tartanod. Egy bizonyos ponton tal mar nem tanulsz, meg tbbet, ha még tb informaci6t lapatolsz a fejedbe, sot a hatds akar ellentétes is lehet. 9. Erezzl Az agyadnak tudnia kell, hogy amit tanulsz, az fontos, Meriilj el a trténetekben. Gyarts sajat képalairdsokat a fotokhoz. Egy gyenge viccen kiakadni még mindig Jobb, mint semmit sem érezni 10. [rd be és futtasd a k6dokat! rd be és futtasd a példakédokat, igy kisérletezhetsz a kéddal, és javithatsz rajta (vagy ténkreteheted, ami néha a legjobb médja annak hogy kideritsd, mi t6rténik). A hosszi példak és készre f6z6tt kodok forrasfajljait letéltheted a wickedlysmart.com cimrél, xxvii Amire sziikséged lesz: Nem lesz sziikséged semmilyen mas fejlesztGeszk6zre, példaul egyesitett fejleszt6kémyezetre (Integrated Development Environment, IDE). Melegen ajanljuk, hogy ne hasznélj semmi mast, csak egy egyszert szvegszerkeszt6t, amig végig nem ragtad magad ezen a kényvin (de legalabbis amig a 16. fejezet végére nem értéb. Az egyesitett fejleszt6kémnyezetek fontos dolgokat rejtenek el eldled, ezért a tanulas szempontjéb6l jobb, ha csak a parancssort hasznilod, és esak akkor valtasz egy automatizalt eszkézre, ha mar érted, mi folyik. A Java iizembe helyezése ‘+ Ha még nem rendelkezel a Java 2 Standard Edition SOK (Software Development Kit, szftver- fejleszt6 csomag) 1.5-6s vagy annal Gjabb vatozatéval,szikséged lesz ré. Ha Linux, Windows vagy Solaris rendszert haszndlsz, ingyenesen beszerezheted a java.sun,com-él (ez a Sun cég webhelye a Jave-feleszt6knek). Ataléban elég ket kattntds, hogy a féoldalr6l a J2SE ltdltésioldaléra juss. Alegttissebb nem béta vatozatot talsd le. ‘Az SDK mindent tartalmaz, amire a Java leforditésshoz és futtatésahor szikséged van Ha Mac OS X 10.4 rendszert haszalsz, a Java SDK mr ott van a gSpeden, mivel része az operéciés rendszemek, vagyis semmi mast nem kell teed Ha az OS X ey kordbbi vtozatét futtatod, akkor egy régebbi Java-vltozatod van, ami a kOnyv példakédjainak 95% val elboldogu. Megiegyzés: Ez a kényv a Java 1.5-6s valtozin alapul, amelyet meghakkentéen Kids piaci okokbél a Sun rBviddel a kiadésaeléttdtnevezett Java S-re, mikGzben az .1.5°-dt megtartotta a fjlesz: csomag valtozatszémaként, Ha tehét azt tod, hogy Java 1.5, Java 5, Java 5.0 vagy . Tiger” (ez az 5-8s vltozat eredeti kédneve), az mind ugyanatjelenti. Java 3.0 vagy Java 4.0 soha nem létezett ~ a Java 1.4 utén egybél5.0-a ugrott, de sok helyen tovabbra is 1.5-nek hivdk 5 helyett. Hogy az ne kérdezd, hogy viecesebb legyen a dolog,a Java S-nek és a Mac OS X 10.4-nek egyarént a Tiger” kédnevet adték, ezért - mivel az OS X 10.4 az a Mac OS-véltozat, amelyikre a Java §futtatésdhoz saikség van — el6fordul, hogy azt mondjak: .Tiger on Tiger”. Ez csak annyittosz, hogy Java 5 az OS X10.4-en.) + AzSOK nem tartalmazza az alkalmazésprogramozés elle (API) dokumentécibiat, pedig sziksSged lesz rél A J2SE APLeirést ugyancsak a java.sun.com cimrél szerezheted be. Az APLIetéstltdltés nélkil, online is elérheted, de az elég fdalmas. Hidd el, megérletdlteni. + Svikséged lesz egy szivegszerkesztire. Lenyegében bérmolyiksima széveg szerkesztésére ‘akkalmas program (vi, emacs, pica) megteszi, az oeréciés rendszerek tdbbségchez mellékelt rafikusfeldletti szerkesztéket (Notepad, Wordpad, TextEdit stb.) is beleértve. Ezek mind mikédnek, ha agyelser, hogy ne biggyesszenck egy .txt” kiteresztést a forrskéd félnevénck végéro + Miutn letététed és kibontottad a (megfeelé véltozata és megfeel6 operéci6s rendszere készit) cesomagot, hozzé kell adnod egy bejegyzést a PATH komyezet vtozdhor, amely a f6 Java- kéinyvtéron belli in kényvtérra mutat. Ha a J2SDK példéul egy .j2sdk1.5.0° nev Kényvtérat helyez ela meghaitSdon, ebben a Kényvtérban kell megkeresned a .bin” akényvtérat, amelyben a Java binérs dlloményai (esckézei laknak. A bin KEnyvtérhoz vezet6 utat (PATH) kell megadnod, hogy amikor beitod @ javac Uutasitst a parancssorba, atermindltudja, hogy hol tala ajavac fordtéprogramot Megieayzés: ha gondjaid témadnak a teleptéssel, at javasoljuk, hogy latogass el ajavaranch.com oldatra, és csatiakozz a Java-Beginning forumhoz. Ez persze akkor is hasznos, ha minden flottl rmegy. Megiegyzés: a konyv példak6djainak nagy része hozzaférhet6 xxviii 4 Wickedlysmart.com cimen.

Anda mungkin juga menyukai