JAVA Kreirali inženjeri tvrtke Sun Microsystems Prva verzija 1995. godine 1 2 JAVA JAVA Osnovne značajke jezika: objektno orijetiran neovisan o hardveru i softveru Kompajlirani Java kôd može se izvršavati na svakoj platformi (hardver + operacijski sustav) na kojoj je instalirana Java, npr. kôd kompajliran pod Windowsima može se izvršavati pod Linuxom i obratno uz jezik dolaze opsežne biblioteke (libraries) (*.java) omogućuju, između ostalog, jednostavno mrežno programiranje te programiranje grafičkog sučelja. Snaga jezika je upravo u tim bibliotekama koje programeru daju visoku produktivnost. omogućuje jednostavno korištenje višenitnosti operacijskog sustava siguran od vanjskih uplitanja 3 Primjena jezika: jezik opće namjene najznačajnija primjena programiranje za internet neovisnost o platformi omogućuje kreiranje izvršnog kôda na jednom računalu, a samo izvršavanje na drugom računalu 4 JAVA Vrste programa u programskom jeziku Java: aplikacija program koji se izvršava na vašem računalu, pod njegovim operacijskim sustavom aplet program namijenjen distribuciji preko Interneta i izvršavanju u web preglednicima (web browsers), npr. Internet Exploreru, Mozilla Firefoxu Objektno orijentirano programiranje 5 6
Objektno orijentirano programiranje = postupak izrade programa upotrebom skupa objekata koji međusobno razmjenjuju poruke Objekti Objekti u stvarnom svijetu (bicikl, automobil, mobitel, računalo, pas, stablo,...) svaki objekt ima dvije karakteristike: stanje (state) (bicikl: trenutna brzina, trenutni broj okretaja pedala, broj brzine) ponašanje (behavior) (bicikl: ubrzavanje, usporavanje, kočenje, promjena brzine, skretanje) 7 8 Objekti Objekti u softverskom okruženju = softverski entiteti sastavljeni od varijabli (promjenljivih, atributa) i pripadnih metoda modeli stvarnih (bicikl, računalo,...) ili apstraktnih objekata (događaj, greška,...) varijable (variables) stanje objekta metode (methods) ponašanje objekta (funkcije karakteristične za taj objekt) Objekti Objekti u softverskom okruženju mogu se zamisliti kao stanice, s jezgrom (nukleusom) od varijabli i vanjskim slojem od metoda koji formira sučelje (interface) između varijabli objekta i okoline 9 10 Enkapsulacija varijabli objekta (Encapsulation) Metode okružuju i skrivaju nukleus unutar objekta tako da se ne vidi i ne može direktno pristupiti izvana, tj. iz ostalih objekata Pakiranje varijabli objekta unutar zaštitnog sloja metoda naziva se enkapsulacija Enkapsulacija varijabli objekta Prednosti enkapsulacije za razvoj softvera: Modularnost (modularity) Objekt se može pisati i održavati neovisno o izvornom kodu za druge objekte Skrivanje informacija (information hiding) Objekti posjeduju javno sučelje za komunikaciju s drugim objektima. Međutim, objekt može sadržavati varijable i metode koje služe za njegov interni rad i nisu dostupne korisniku objekta. Stoga, ako javno sučelje nije mijenjano, varijable i metode mogu se mijenjati u svakom trenutku bez utjecanja na druge objekte ovisne o njemu 11 12
Poruke (messages) = mehanizam komunikacije (interakcije) objekata objekt A šalje poruku objektu B ako želi da objekt B izvrši jednu od svojih metoda Poruke Sastavne komponente poruke: objekt kojemu je poruka adresirana (vaš bicikl) naziv metode koju treba izvesti (changegears) parametri proslijeđeni metodi (lower gear) 13 14 Poruke Klase (class) Prosljeđivanjem poruka mogu se obaviti skoro sve vrste interakcija između objekata ponašanje objekata definirano je njihovim metodama Objekti ne moraju biti unutar istog procesa niti na istom računalu da bi slali poruke jedni drugima = predložak (skica) ili prototip koji definira varijable i metode zajedničke za objekte određenog tipa vaš bicikl je instanca od klase objekata bicikl Bicikli imaju stanja (trenutna brzina, trenutni broj okretaja, dva kotača) i ponašanja (promjena brzine, kočenje) koja su zajednička Međutim, svaki objekt bicikl ima jedinstveni skup stanja 15 16 Klasa i instance klase Varijable klase i metode klase (class variables & class methods) Klasa varijable instance Varijabla klase sadržava informaciju koja se dijeli između svih instanci klase Metoda klase je metoda koju je moguće pozvati bez postojanja objekta, poziv iz klase 2 instance 17 18
Nasljeđivanje (inheritance) = mehanizam pomoću kojega je na temelju postojećih klasa moguće definirati nove i proširene klase Subklase Superklasa Nasljeđivanje Svaka subklasa nasljeđuje stanja (deklarirane varijable) od superklase Mountains bikes, trkaći bicikli i tandemi imaju svi sljedeća stanja: broj okretaja pedala, brzinu kretanja i sl. Svaka klasa nasljeđuje metode od superklase Mountains bikes, trkaći bicikli i tandemi imaju jednako ponašanje: kočenje, promjena broja okretaja pedala i dr. Subklase mogu imati uz nasljeđene i nove varijable i metode Tandem bicikli imaju 2 sjedala i 2 volana; mountain bikes imaju dodatni skup brzina Subklase mogu i premostiti naslijeđene metode (override inherited methods) i realizirati specifične implementacije Npr. Ako posjedujete mountain bike s dodatnim skupom brzina možete premostiti change gears metodu tako da može upravljati dodatnim stanjima 19 20 Nasljeđivanje Sučelja (interface) Subklase osiguravaju specijalizirane funkcije na osnovi zajedničkih elemenata koji su realizirani u superklasi. Nasljeđivanjem se može ponovno koristiti kôd iz superklase. = skupovi definicija metoda i konstanti (bez implementacije!) svako sučelje je protokol ( ugovor ) komunikacije objekata koji nisu u strogo definiranom odnosu implementacijom svih metoda iz nekog sučelja klasa implementira to sučelje 21 22 Programeri pišu programe uglavnom u višem programskom jeziku, a računala izvršavaju instrukcije strojnog jezika Što računalo radi s programom napisanim u višem programskom jeziku? 23 24
compiling Tradicionalni jezici: Najčešće se prevode pomoću kompajlera, prevoditelja (compiler) (npr. C, C++, Fortran) = zasebni program koji prevodi (kompajlira) program iz višeg programskog jezika direktno u strojni jezik specifičan za dani operacijski sustav i hardver. OS šalje te strojne instrukcije na izvršavanje u CPU. Za izvršavanje na drugom računalu, potrebno ga je ponovno kompajlirati uporabom drugačijeg kompajlera, u odgovarajući strojni jezik Tradicionalni jezici: Umjesto uporabe kompajlera, koji odjednom prevodi čitav program, moguće je koristiti interpreter, prevoditelj (interpreter) koji prevodi instrukciju po instrukciju za vrijeme njihova izvršavanja Izvršavanje kompajliranih programa zapravo je brže od izvršavanja interpretiranih programa 25 26 izvršavanje Java programa Programi se u Javi kreiraju u nekom editoru (npr. Notepad, ConTEX) i spremaju s ekstenzijom java, npr. Prog.java Programi u Javi prevode se u strojni jezik (kompajliraju), ali u strojni jezik računala koje zapravo ne postoji, a naziva se Java Virtual Machine (JVM) Strojni jezik za JVM naziva se Java bytecode Kompajlirani program ima ekstenziju class, npr. Prog.class izvršavanje Java programa JVM ne postoji stvarno potrebna njegova simulacija. Simuliranje se obavlja pomoću interpretera (java.exe) koji čita bytecode i osigurava da instrukcije u njemu bude izvršene Java interpreter potreban za svaku vrstu platforme Java bytecode može biti izvršen na bilo kojem računalu na kojemu je instaliran Java interpreter 27 28 izvršavanje Java programa Usporedba prevođenja i izvršavanja Java programa i tradicionalnih programa Java program: Tradicionalni program: Java code code compiling interpreting Java Compiler Java Bytecode SPARC Power PC Pentium Pentium compiler Power compiler SPARC compiler Pentium Power PC SPARC 29 30
Hello world aplikacija! Hello world! * The HelloWorldApp class implements an application that * displays "Hello World!" to the standard output. 31 32 Hello world aplikacija! Hello world aplikacija HelloWorldApp.java * The HelloWorldApp class implements an application that * displays "Hello World!" to the standard output. public class HelloWorldApp{ public static void main(string argv[]){ System.out.println ( Hello World! ); javac HelloWorldApp.java HelloWorldApp.class javac 0xCAFEBABE... java HelloWorldApp Svi Java programi sastoje se od jedne ili više definicija klasa HelloWorldApp je primarna ili kontrolna klasa (primary or controlling class) Samostalne aplikacije zahtijevaju metodu main u kontrolnoj klasi Aplet ne zahtijeva main metodu 33 34 Definiranje klase Podebljana linija počinje blok definicije klase u Javi * The HelloWorldApp class implements an application that * displays "Hello World!" to the standard output. * The HelloWorldApp class implements an application that * displays "Hello World!" to the standard output. main metoda Kontrolna klasa definicija klase (kontrolna klasa) 35 36
Main metoda Mora biti static -> metoda klase (class method) Metode klase možemo pozivati bez instanciranja objekta klase Kada pokrenemo Java aplikaciju Java interpreter pronalazi i poziva main metodu u klasi čiji je naziv dan u liniji naredbe Komentari Tri vrste komentara: /* text Prevoditelj ignorira sve od /* do. documentation Ovo označava komentar za dokumentaciju. Prevodilac ignorira tu vrstu komentara. JDK javadoc alat koristi te komentare za automatsko kreiranje dokumentacije. // text Prevodilac ignorira sve od // do kraja tekuće linije 37 38 Oznake metode Oznake metode visibility(public,private,...) type(static, non-static) Oznake metode je skup informacija o metodi: naziv metode tip vidljivost argumenti tip return podatka public static void main(string[] args) return type method s name arguments 39 40 System i PrintStream klase Ova naredba poziva println() metodu klase PrintStream koja je referirana (pokazana) preko varijable out koja je varijabla klase System klase. 41