You are on page 1of 1136
O autoru Herbert Schildt je vodeci autor knjiga o programiranju. On je struénjak za jezike C, C++ i Java, i vrhunski programer za Windows platformu, Njegove knjige o programiranju prodate su Sirom sveta u vige od tri miliona primeraka i prevedene su na brojne jezike. Napisao je mnoge bestselere, ukljucujudi i: Java 2: A Beginner's Guide, C++: The Complete Reference, C++: A Beginner’s Guide, C#: The Complete Reference i C#: A Beginner's Guide. Schildt je magistrirao iz oblasti racunarskih nauka na Univerzitetu Hinoisa, Adresa njegove Web lokacije je www.HerbSchildt.com, CE eae te Java™ J2SE™ 5: kompletan prirucnik Herbert Schildt Preveli Miljenko Sucur Dejan Smiljanié Milorad Popovié [6] Mikro knjiga OSBORNE ® Java™ J2SE 5: kompletan priruénik Utednik (Olga Milaako Struéni saradnik Gojke Adie Redaktor ikoordinator projekta _ Aleksandra Stojanovie “Tehnigki urednik Natala Pavlov Korekior Vesna Dukie Dizajn kovica Milan Jovanovie Realzacifa rica Niatala Pavlov Prelom rekstafobrada ska Natale Pavlov Mica Decanski Sanja Tie Iedavad Miso kojiga, Beograd Direitor Dragan Tanaskoski Stampa Publikum, Beograd Ako imate pitanja ili komentar, ili ako elite da dobijete besplatan katalog, psite nam ii se javite: Mikro kaiiga Mikro kniiga Mikro ijiga fal 20-87 Teveejska bb Maksimirska 13 11030 Beograd "78000 Banja Luka 10000 Zagreb tel: 011/3540-544 tet: 051/220-960 tel: 01/2344-023, pismaénikrokniga-co.yu pi smaQmikroknj iga.ba pa@mikroknjiga.hr ‘Autorizavan prevod sa engleskog jezika knjige Java™: The Complete Reference, 2SE" 5 Edition. ‘Copyright © 2006 Mikro knjiga. Sve prava zadréana, Nije dorveljene da nijedan deo ove kajige bude reprodukovan ii emitovan me bilo koji nagin elektonsi ii mehanich, udjudujuei fotokopiranje, snimanie ili bilo koji drugi sistem za belevenje, bez prethodne pisimene dozvole indavaca; zvzetak su lisine! programa, koji se mogu uneti, Cuvat i izvrbavat na racunary, aise ne mogs objeviivas Original edition Copyright © 2005 The McGraw-Hill Companies. llrightsreserved. No part of this publication may be reproduced or dlstributed in any form or by any means, or stored in a database oF retrieval system, without the prior written permission of the publisher, with the exception that the program listings may be entered, stored, and executed in a computer system, but they may not be reproduced for publication, Tear aranorasumjay psu | apo Gudsmovena Cyne, coreg 04. a31AVA, (004. 42025E. 104-42:004.738.5 MINT, XepGepr Tava FRSE'S : kompletan pevudnik / Herbert Schiidt + preveli Milenko Suc Dejan Smiljanic, Milorad Popovig. ~ Beograd ‘Muto kayipa, 2008 (Beograd Publikum). — XVI, U25te : iasu, ; 2bom Prevod dela: Java | The Complete Reference, ARSE. - O autora: siz Ml. — Regist ISBN 86-7555-286-6 4) porpamcxat jeamx “IAVA b) Hacrepmer — Tiporpasupase ©) Anaaxaniaim nporpas "RSE COBISS.SR-ID 128366608 J 1V5/266160S054M10PO274K320K612 543.2 Dest 1 Sadrzaj Predgovor ... Jezik Java Istorija i evolucija Jave. Poreklo Jave. - Nastanak fave Za8to je Java vaina 7a Internet. Magija Jave: bajt kbd. ..... Pojmovi koji su oblikovali Javu. Evolucija Jave. . Revolucija zvana J2SE 5 Kultura inovacija. . Pregled jezika Java. .. Objektno orijentisano programiranje. Prvi jednostavan program . . Drugi kratak program. .... Dve upravljacke naredbe ...... Kori’éenje blokova naredaba. . Jezitka pitanja ...... Javine biblioteke klasa. Tipovi podataka, promenljive i nizovi Java je strogo tipiziran jezik Prosti tipovi. Celi brojevi. : Brojevi u pokretnom zarezu. Promenjive . ‘Automatska i izritita konverzija tipova . Automatsko unapredivanje tipova u izrazima . vi 4 Operatori.... 5 Upravijatke naredbe, 6 Uvoduklase...... 7 Blige upoznavanje sa metodama iklasama.......-...+ Sadriaj Nizovi : Nekoliko reéi o znakovnim nizovima.. Napomena C/ C++ programerima u vezi s pokazivaéima... 52 Aritmetigki operatori .......... Operatori nad bitovima Operatori poredenja . Logitki operatori. Operator dodeljivanja Operator ?:...... Prioritet operatora . Koriscenje zagrada . Naredbe uslovijavanja. . Naredbe ciklusa Naredbe skoka. . Osnovni pojmovi o klasama Deklarisanje objekata....... Dodeljivanje promenljivama referenci na objekte. Uvod u metode . Konstruktori ......, Rezervisana re¢ this Uklanjanje smeca iz memorije. Metoda finalize(). .... Klasa Stek. . Preklapanje metoda . Koridéenje objekata kao parametara . Detaljnije o prosledivanju argumenata. Objekti kao rezultat metode Rekurzija .. Uvod u upravijanje pristupom Rezervisana reé static Rezervisana reé final . Ponovo o nizovima....... Predstavljanje ugneidenth i unutrasnjth Klasa- Upoznavanje moguénosti klase String . Zadavanje argumenata s komandne linije . 8 Nasledivanje.... Osnove nasledivanja . Rezervisana reé super . iit ae 20 Pravljenje vigestepene hijerarhije..... 194 Pozivanje konstruktora. . - 198 Redefinisanje metoda...... a 199 Dinamiéko raztesavanje metoda pr 202 Koriséenje apstraktnih Klasa Modifikator final uz nasledivanje . Klasa Object. . 206 209 211 Paketiiinterfejsi.....-+seseeeee 213 Paketi .. eee ote : 213 Zastita pristupa . 216 Uvotenje paketa .... 221 Interfe} 223; Obrada izuzetaka......... 237 Osnove obrade izuzetaka ee 297 Tipovi izuzetaka .. 238 Neuhvaéeni izuzeci 238 Upotreba rezervisanih reéi try i catch . 240 Vise odredaba catch ...... Ugneddene naredbe try. Rezervisana re¢ throw. Naredba throws. Rezervisana ret finally Javini ugradeni izuzeci ..... Pravijenje sopstvenih izuzetaka Korigcenje izuzetaka 242 243 = 246 247 249 250 = 252 = 255 257 - 258 260 262 266 268 270 73 278 +. 285 291 ‘Videnitno programiranje. Javin model programske niti . Glavna programska nit. Pravijenje niti . . Pravijenje vige niti........ = Kori8denje metoda isAlive() i ee Prioritet izvréavanja niti.. Sinhronizovanje ... Komuniciranje izmedu niti . : Suspendovanje, nastavljanje i zaustavljanje niti. Kada treba raditi sa vige niti..... : Nabrojani tipovi, automatsko pakovanje i metapodaci (anotacije) .......-. 293 Nabrojanitipovi ........ .293 Omotadi prostih tipova ....... = 304 Automatsko pakovanje........+ 307 Metapodaci (anotacije). aie Sadriaj 43 14 Ulazno-izlazne operacije, apleti i druge teme. Osnove ulazno-izlaznih operacija .. Citanje podataka sa konzole. . Ispisivanje podataka na konzoli. Klasa PrintWriter Citanje datoteka i upisivanje podataka u njih . Osnove apleta ....... Modifikatori transient i volatile. Operator instanceof . Modifikator strictfp . Metode za rad sa masinskim kodom Operator assert . Generiéki tipovi. Sta su genericki tipo Jednostavan primer s generiékim tipovima . 360 Generiéka klasa s dva parametra tipa 367 Opiti oblik generiéke klase 369 Ogranigeni tipovi .. Upotreba déokerskih argumenata. Pravljenje generi¢ke metode . Generiéki interfejsi . -372 = 381 - 384 Sirovi tipovi i stari kod... - 387 Hijerarhije generi¢kih Klasa - 390 Brisanje . : 399 Gretke visemainosti... 403 Neka ogranigenja generitkih tipova - 405 Zakijuéak o generickim tipovima . -407 Javina biblioteka All = 412 414 414 -418 -419 423 = 425 Rukovanje znakovnim nizovima. Konstruktori klase String. Dudina znakovnog niza ae Posebne operacije sa znakovnim nizovima .. Pronalazenje znakova u znakovnom nizt Poredenje znakovnih nizova . Pretradivanje znakovnog niza . Menjanje znakovnih nizova. Konvertovanje podataka metodom valueO{() . . +428 Pretvaranje velikih slova u mala (i obrnuto) unutar znakovnog niza ..... 428 Ostale metode za obradu znakovnih nizova. . 429 Klasa StringBuffer....... 430 Klasa StringBuilder... . 438 16 a7 Paket java.lang. Omotaéi prostih tipova .. ee ado Klasa Void . .. Klasa Process . Klasa Runtime. Klasa ProcessBuilder. Klasa System . Klasa Object. . Metoda clone() i interfejs Cloneable. Klasa Class. .... Klasa ClassLoader Klasa Math... Klasa StrictMath Klasa Compiler Klase Thread i ThreadGroup i interfejs Runnable Klase ThreadLocal i InheritableThreadLocal . . Klasa Package. ........ Klasa RuntimePermission Klasa Throwable ..... Klasa SecurityManager . Klasa StackTraceElement . Klasa Enum ...... . Interfejs CharSequence Interfejs Comparable Interfejs Appendable. Interfejs Iterable . Interfejs Readable Potpaketi paketa java.lang Paket java.util, prvi deo: Javine kolekeije .... Pregled kolekcja. . Promene u kolekeijama koje je doneo J2SE5 . Interfejsi 2a rad s kolekcijama Klase kolekcija. Pristupanje kolekciji pomotu iteratora ‘Smestanje korisnitkih klasa u kolekeije . Rad s mapama.....ssseseseeeeeee Komparatori ....... Algoritmi za rad s kolekcijama Klasa Arrays. Cemu slude generitke kolekcije? ..... : Klase i interfejsi nasledeni iz ranijih verzija Jave .... an Zakljuéak o kolekcijama....sssseeseeeeeeeeceeeeeeeeeeeeeeeeeetseeeees 558 Sadriaj 18 19 24 Paket java.util, drugi deo: ostale Javine alatke . ee Klasa StringTokenizer. 559 Klasa BitSet ..... 561 Klasa Date . 563 Klasa Calendar Klasa GregorianCalendar 565 568 Klasa TimeZone .... 370 Klasa SimpleTimeZone. S71 Klasa Locale. 571 Klasa Random 572 Klasa Observable 574 Klase Timer i TimerTask Klasa Currency Klasa Formatter. Klasa Scanner. Potpaketi paketa java.util. . 579 +581 582 -. 597 +. 609 = 611 611 612 617 618 Ulazno-izlazne operacije: paket java.io . Javine klase i interfejsi za ulazno-izlazne operacije . Klasa File Interfejsi Closeable i Flushable Klase za rad sa tokovima Binarni tokovi Soe 616 Znakovni tokovi .. - 636 Korisvenje klasa za rad sa ulazno-idlaznim tokovima . 646 Serijalizacija. = 650 Koristi od tokova. . 656 Umrezavanje. .. 657 Osnove umrezavanja. 657 Javaimreza..... 659 Klasa InetAddress . 660 Klase Inet4Adadress i Inet6Address Kiijentska TCP/IP utignica. . Klasa URL ....... Serverske TCP/IP utignice Posrednitki HTTP server sa ostavom (keSom) - Datagrami . Klasa URI Nove klase dodate u J2SE5 ... 662 662 664 668 669 691 694 -- 694 695 = 695 - 697 + 698 Klasa Applet . Sta su apleti Arhitektura apleta Struktura apleta. . 23 24 Sadriaj xi Jednostavne metode za prikazivanje apleta Metoda repaint(). Statusni prozor ... HTML oznaka APPLET .... Prosledivanje parametara apletima Metode getDocumentBase() i getCodeBase() . Interfejs AppletContext i metoda showDocument(). Interfejs AudioClip() Interfejs AppletStub Prikazivanje na konzoli Obrada dogadaja ee ner Model prosledivanja dogadaja... Klase dogadaja.........- Izvor dogadaja . . . ee eee ees Upotreba modela prosledivanja dogadaja . Klase adaptera Unutrasnje klase . Upoznajte AWT: rad sa prozorima, grafitkim objektima i tekstom.... AWT Kase... . Osnovne o prozorima .. Rad s prozorima tipa Frame. Pravljenje prozora tipa Frame u apletu. Pravijenje programa sa prozorima . Prikazivanje podataka u prozoru. Rad sa grafickim objektima .. . Kori8éenje boj PodeSavanje regima crtanja Rad s fontovima . ae Doterivanje izgleda teksta pomoéu klase FontMetrics ... AWT kontroini objekti, rasporedivadi i meniji . Osnovno o kontrolnim objektima. Natpisi .. Dugmad.... Polja za potvrdu Grupe polja za potvrdu. Kontrolni objekti za izbor .... Liste... Trake 2a pomeranje sadréaja . Klasa TextField . ae ee ee xii Sadriaj Rasporedivadi ... -8lL Klasa GridBagLayout . 822 ‘Trake menija i meniji . 2.827 Okviri za dijalog ... + 833 Klasa FileDialog. . . ++ 839 2 BA Obrada dogadaja prosirivanjem AWT komponenata. Kontrolni objekti, meniji i rasporedivadi......... 25 Slike Formati datoteka. . ee ees Interfejs ImageObserver Dvostruko skladi8tenje . Klasa MediaTracker Interfejs ImageProducer. . Interfejs bnageConsumer. . Klasa ImageFilter. Animacija. .... ane Dodatne klase za slike - 848 - 849 +. 849 850 - 852 =. 853 = 856 - 860 - 862 - 865 - 880 -. 884 28 Alatke za paralelan rad.........+ + 885, Paketi u API-ju za paralelno programiranje. - 836 Kori8éenje objekata za sinhronizaciju. - 887 Upotreba interfejsa Executor =. 901 Nabrojivi tip TimeUnit .... 907 Klase kolekcija za paralelan rad. 908 Keenan - 909 Atomske operacije. . 912 Alatke za paralelan rad u odnosu na Javin prvobitni pristup . 913 27 NIO, regularni izrazi i drugi paketi 2915 Osnovni paketi Java API-ja . -915 Paket NIO ..... 000.05 917 Obrada regularnih izraza - 928 Refleksija ...... 00.2.0... = 937 Daljinsko pozivanje metoda (RMD +941 Formatiranje teksta 945 Bee i Projektovanje softvera u Javi 28 «Zrna Jave Sta je zrno’ Prednosti tehnologije zmna Jave. Introspekeija ........ Upotreba interfejsa BeanInfo. 953 953 954 - 954 956 Vezanai opranizena svojstva ... Trajnost . Program’ za prilagodavanje Aplikativni interfejs zrna Jave Jedno zrno Jave kao primer . +. 987 +957 958 = 958 960 151 965, - 966 967 = 967 ++ 968 +1970 972 29 Upoznajmo Swing... JApplet.... Klase JFrame i 1}component Ikonice i natpisi Pravilno rukovanje nitima Polja za tekst ....... Dugmad... Kombinovane liste . . +980 ‘Okna sa karticama. .. +982 Okna sa Klizagima +985 Stabla . 988 Istrativanje Swinga . +992 30 Servleti = 993 Pozadina. Zivotni ciklus servleta Razvoj servieta pomocu Tomeata . Jednostavan servlet ........... Aplikativni interfejs za servlete Paket javax.servlet...... Uéitavanje parametara servieta . Paket javaxserviet.http....... Obrada HTTP zahteva i odgovora. Upotreba koladi¢a......... Paméenje stanja sesije. .. 993 21994 994 =. 996 «998 998 1001 - 1003 1009 - 1012 1015 Deo lv Primena Jave 34 Finansijski apleti i servleti. Ieragunavanje rate za otplatu zajma Izraéunavanje buduce vrednosti investicije Izraéunavanje potetne vrednosti investicije koja ¢e imati zadatu buduéu vrednost. Izraéunavanje poéetne investicije koja daje feljeni anuitet. Ieracunavanje maksimalnog anuiteta za datu investiciju . Izraéunavanje preostalog duga tokom otplate zajma Pravijenje finansijskih servleta. Sta biste mogli pokulati . .. 1019 1019 - 1029 1034 1039 1044 1049 - 1054 1059 xiv 32 Pravijenje Java programa za preuzimanje sadrzaja sa Interneta A Upotreba dokumentacionih komentara u Javi Sadriaj Kako rade programi za preuzimanje sadriaja sa Interneta. . Pregled programa za preuzimanje sadréaja sa Interneta Klasa Preuzimanje : Klasa PrikazivacNapredovanja Klasa ModeTabelePreuzimanja Klasa UpravijacPreuzimanja . ee Prevodenje i izvréavanje programa 7a preuzimanje sadréaja sa Interneta Poboljgajte program za preuzimanje sadréaja sa Interneta Oznake programa javadoc .........- Opiti oblik dokumentacionog komentara . Kako izgleda rezultat programa javadoc. . Primer za dokumentacione komentare. . Spisak termina kori8éenih u knjizi Predgovor blioteke, kao i kroz novitete koje je donelo izdanje J2SE 5. Veéina Gitalaca zna da je JOSE skraéenica za Java 2 Standard Edition, Sto je Sunov naziv za Javin razvojni sistem, Dalde, J2SE oznaéava oblik i moguénosti Jave, a 5 je broj ajene najnovije verzije. J2SE 5 je Javi dodala mnoge nove moguénosti. Neke od njib, kao sto su generiéke kom- ponente, automatsko pakovanje i nabrojani tipovi, Java programeri prigeljkuju vee godi- nama. Ostale, poput metapodataka, predstavijaju napredne inovacije koje pokazuju put ka jo3 dalekoseZnijem razvoju u buduénosti. U oba sluéaja, novine koje je donela J2SE 5 menjajut natin pisanja Java koda. Mnoge tehnike na koje su se programeri ranije oslanjali | sada su prevazidene i zamenjene boljim i moénijim strukturama, Tokom razvoja izdanja J2SE 5, njegovo prikladno odabrano fabriéko ime bilo je »Ti- | gar“, Od pojavijivanja Jave pre desetak godina, nije bilo verzije Jave koja bi tako temeljno i ! duboko preoblikovala svet programiranja, Kao Sto je prvobitna verzija Jave revolucionisa- : la naéin pisanja programa za Internet, J2SE $ zna¢ajno menja naéin shvatanja i projek- tovanja tih programa. U ovoj knjizi obradeni su svi aspekti onoga Sto se zove ,nova Java‘ O va knjiga je sveobuhvatan vodié kroz programski jezik Java i njegove Kijutne bi- KNJIGA ZA SVAKOG PROGRAMERA Ova knjiga je namenjena svim programerima ~ kako potetnicima tako i iskusnim profe- sionalcima. Pogetnicima ée pomoci pailjive odabran tempo objasnjavanja i mnogobrojni primeri. Profesionalcima ée se svideti dubinsko razmatranje Javinih naprednijih mo- guénosti i biblioteka te objasnjenje mnogih noviteta koje je donela J2SE 5. Za sve pro- gramere, ona ce biti trajan udzbenik i podesan referentni priruénik. STA SE NALAZI U KNJIZI Ova knjiga obuhvata sve aspekte programskog jezika Java. Prvi deo predstavlja detaljan udzbenik za Javu. U njemu se poéinje od osnova, kao sto su tipovi podataka, upravijacke ] naredbe i klase. U prvom delu govori se i o Javinom mehanizmu obrade izuzetaka, pod- sistemima visenitnog rada, paketima i interfejsima, Naravno, detaljno su objasnjeni i no- viteti: generiéki tipovi, metapodaci, nabrojani tipovi i automatsko pakovanje, ] XV xvi Predgovor Drugi deo knjige bavi se standardnom Javinom bibliotekom. Kao to éete se i sami uveriti, veliki deo modi jezika Java nalazi se u standardnoj biblioteci. Teme obuhvataju aakovne nizove, ulazno-izlazne operacije, umrezavanje, standardne alatke, kolekcije, aplete, kontrole za graficka okruzenja i rad sa slikama. Nova biblioteka alatki za paralelan (konkurentan) rad (dodata u J2SE 5), razmotrena je u pogiaviju 26 U treéem delu knjige obradujemo elemente razvojnog okruzenja Jave. Razmatranje obubvata zrna Jave, servlete i biblioteku Swing Cetvrti deo sadrai dva poglavija s primerima Jave u akeiji. U 31. poglaviju razvijeno je nekoliko apleta za éesto potrebne finansijske proraéune, kao Sto su izraéunavanje iznosa perioditne otplate zajma ili minimalnog iznosa wlaganja koje ée dati Zeljenu mesetnu rentu, Pokazano je i kako se ti apleti pretvaraju u serviete. U 32. poglaviju razvijen je pro- gram koji nadgleda preuzimanje datoteka sa Interneta. Program moze da pokrene, pre- kine i nastavi prenos. Oba poglavija su preuzeta iz knjige The Art of Java, koju sam napisao zajedno s Jamesom Holmesom. NE ZABORAVITE: IZVORNI KOD NA WEBU Invorni kéd svih primera iz originalne knjige na engleskom, mofete besplatno preuzeti sa lokacije www.osborne.com. Predgovor —_XVii ZAHVALNICA Posebnu zahvalnost dugujem Patricku Naughtonu. Patrick je jedan od tvoraca jezika Java. On mi je pomogao da napisem i prvo izdanje ove knjige. Na primer, vecinu pocetnog, sirovog materijala za poglavlja 19, 20, i 25 obezbedio je Patrick. Njegovi saveti, struenost i energija umnogome su doprineli uspehu ove knjige. Zahvalnost zasluzuje i Joe O'Neil, koji je napisao pocetne verzije poglavija 27, 28, 29 i 30. Joe mi je pomagao pri pisanju vise knjiga i - kao uvek — cenim njegovu pomoe. I najzad, mnogo hvala Jamesu Holmesu za poglavije 31. James je izvanredan progra- mer i pisac. Zajedno smo pisali The Art of Java. On sam autor je knjige Struts: The Com- plete Reference. HERBERT SCHILDT 1. novembra 2004. Mahomet, Llinois OSTALE KNJIGE HERBERTA SCHILDTA Java Java 2: Beginner’s Guide The Art of Java Ct C++: The Complete Reference C+: A Beginner's Guide The Art of C++ Teach Yourself C++ C++ From the Ground Up STL Programming From the Ground Up ce C4: The Complete Reference C#: A Beginner's Guide c C: The Complete Reference Teack Yourself C DEO Jezik Java POGLAVLE 1 Istorija i evolucija Jave POGLAVUE 2 Pregled jezika Java POGLAVLIE 3 Tipovi podataka, promenljive i nizovi POGLAVUE 4 Operatori POGLAVUE S Upravljacke naredbe POGLAVUE 6 Uvod u klase PosLavue 7 Pogled izbliza na metode i klase POGLAVUE 8 Nasledivanje POGLAVLIE 9 Paketi i interfejsi POGLAVLIE 10 Obrada izuzetaka POGLAVUe 14. Vigenitno programiranje POGLAVUIE 12 Nabrojani tipovi, automatsko pakovanje i metapodaci (anotacije) Postavue 13 U/I, apleti i druge teme PosLavue 14 Generiéki tipovi POGLAVUJE Istorija i evolucija Jave njeno stvaranje, sile koje su je uobliéile i elemente koje je dobila u naslede. Slicno uspeénim programskim jezicima koji su joj prethodil, i Java je meSavina najboljih elemenata svog bogatog nasleda, kombinovanih sa novim koncepcijama neophodnim za njenu jedinstvenu misiju, Dok éemo se u narednim poglavijima ove knjige baviti praktit- nim aspektima Jave ~ njenom sintaksom, njenim bibliotekama i primenama - u ovom poglavlju éete saznati kako i zasto je Java nastala, sta je éini tako vaznom i kako se menjala tokom godina. Tako je postala nerazdvojivi deo mrednog okrudenja Interneta, treba istaci da je Java na prvom mestu programski jezik, PoboljSanje raéunarskih jezika i njihovo razvijanje nasta- ju iz dva osnovna razloga: A ko Zelite potpuno da razumete Javu, morate da razumete razloge koji su uticali na m Da bi se jezici prilagodili izmenjenom okruzenju i novoj primeni. m Da bi se u jezike ugradila poboljSanja i novosti na polju programiranja. Kao Sto éete se i sami uveriti, na razvoj fave uticala su oba ova elementa, u priblizno jednakoj meri. POREKLO JAVE Java je srodnik jezika C++, koji je direktan potomak jezika C. Veci deo svojih osobina Java je nasledila od ova dva jezika. Iz jezika C Java je preuzela sintaksu. Mnoge od objektno orijentisanih osobina Jave nastale su pod uticajem jezika C++. U stvari, vide karakteristika koje definigu Javu potiéu od njenih prethodnika ili su nastale kao odgovor na njih. Stavi- Se, nastanak Jave ima duboke korene u procesima poboljéavanja i prilagodavanja koji su se tokom poslednjih nekoliko decenija odvijali na polju programskih jezika. Iz pomenu- tih razloga, u ovom odeljku éemo prikazati redosled dogadaja i uticaja koji su doveli do nastanka Jave. Kao sto cete videti, svaka inovacija programskog jezika nastaje iz potrebe da se rei odredeni temeljni problem koji nije bio resiv u ranijim programskim jezicima. U tom pogledu ni Java nije izuzetak. Radanje modernog programiranja: C Pojava jezika C potresla je raéunarski svet. Njegov uticaj ne treba potcenjivati, posto je on iz osnova izmenio pristup programiranju i programerski naéin razmisljanja. Pojava jezika C ditektan je rezultat potrebe za strukturiranim, efikasnim jezikom visokog nivoa koji Deo I: Jezik Java moe da zameni asemblerski k6d pri pravijenju sistemskih programa. Kao sto mozda i sami znate, kada se projektuje raunarski jezik, éesto se prave kompromisi sligni sledecim: Wi lakoéa koriséenja u odnosu na moé WM moguénost pogresne primene u odnosu na efikasnost 1 strogost primene pravila u odnosu na prosirivost. Pre C-a, programeri su obigno morali da biraju jezik u kome je jedan skup osobina bio favorizovan u odnosu na drugi. Na primer, iako se FORTRAN moie koristiti za pisanje prilitno efikasnih programa namenjenih primenama u nauci, on nije sasvim dobar za pi- sanje sistemskih programa. Zatim, premda se BASIC lako uéi, on nije previie moéan, anedostatak strukturnih elemenata €ini ga nepogodnim za pisanje dugackih programa. Asemblerom se mogu napraviti veoma efikasni programi, ali se on tesko uéi i tesko efika- sno koristi. Stavise, otklanjanje greSaka u asemblerskom kodu mode da bude veoma kom- plikovano. Jo8 je gore sto prvi raéunarski jezici, kao Sto su BASIC, COBOL i FORTRAN, nisu pro- jektovani na osnovu strukturnih principa. Umesto njih, oslanjali su se na naredbu GOTO kao na glavnu programsku kontrolu. Zbog toga su se programi pisani na ovim jezicima lako preobrazavali u tzv. ,spagete — masu prepletenih skokova i uslovnih grananja koje gotovo niko nije mogao da razume. Jako su jezici kao Sto je Pascal strukturirani, njima efikasnost nije bila osnovni cilj, a nedostajale su im i odredene osobine koje bi ih uginile primenljivim za Sirok opseg razliditih programa. (Konkretno, ako uzmemo u obzir stan- dardne dijalekte Pascala koji su u to vreme postojali, Pascal nije bio jezik koji bi dolazio u obzir za pisanje sisternskih programa.) Dakle, pre nastanka C-a, nijedan jezik nije uspeo da razresi sukobljene principe koji su osujecivali ranije napore. Pa ipak, potreba za takvim jezikom bila je urgentna. Pogetkom sedamdesetih godina, kada je ragunarska revolucija pocela da se zahuktava, potraznja za softverom uveliko je prevazilazila moguénosti programera da ga isporuée. U akademskim krugovima Zustro su se lomila koplja u pokugajima da se stvori bolji programski jezik, Medutim, a to je mozda i vainije, pogeo je da se oseca i drugi uticaj. Ragunarski hardver se toliko rasirio da je dosegao ,,kritiénu masu‘s Ragunari vise nisu cuvani iza strogo zaklju- éanih vrata. Po prvi put su programeri dobili naizgled neograniéen pristup svojim magi- nama. To je donelo slobodu u eksperimentisanju i istovremeno omoguéilo programerima da pognu da prave sopstvene alatke. U predvecerje radanja C-a, raéunarska pozornica je bila spremna za kvalitativan skok u programskim jezicima, Jezik C, koji je stvorio Dennis Ritchie i ugradio ga na masinu DEC PDP-11 koja je ra- dila pod UNIX-om, bio je rezultat razvojnog procesa zapocetog na starijem jeziku, BCPL, koji je razvio Martin Richards. BCPL je uticao na jezik, zvan B, koji je stvorio Ken Thompson, a ovaj je zatim sedamdesetih godina doveo do razvoja C-a. Tokom vise godi- na, de facto standard jezika C bio je onaj koji se koristio na operativnom sistemu UNIX, a koji su Brian Kernighan i Dennis Ritchie opisali u knjizi Programski jezik C (The C Pro- gramming Language — Prentice-Hall, 1978). Jezik C je i formalno standardizovan decem- bra 1989, kada je Americki nacionalni institut za standardizaciju (American National Standards Institute, ANSI) usvojio standard za jezik C. Mnogi smatraju da nastanak jezika C oznagava poéetak modernog doba u ra¢unarskim jezicima, On je uspe3no pomirio sukobljene principe koji su toliko muéili njegove pret- hodnike. Tako je nastao modan, efikasan, strukturiran jezik koji se srazmerno lako uéi. On

You might also like