27
1 Uvod u programiranje i softverski paketi Univerzitet u Nišu Građevinsko-arhitektonski fakultet I čas Milan Gocić oktobar, 2014. - Uvod - Jezik Jezik predstavlja sredstvo komunikacije između ljudi. Jezik je sistem gramatike, znakova, glasova ili simbola, koji se koristi za prikaz i razmenu koncepata, ideja, značenja i misli. Jezik može biti prirodni i veštački. 2

Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

Embed Size (px)

Citation preview

Page 1: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

1

Uvod u programiranje i

softverski paketi

Univerzitet u Nišu

Građevinsko-arhitektonski fakultet

I čas

Milan Gocić

oktobar, 2014.

- Uvod -

Jezik

Jezik predstavlja sredstvo komunikacije između ljudi.

Jezik je sistem gramatike, znakova, glasova ili

simbola, koji se koristi za prikaz i razmenu

koncepata, ideja, značenja i misli.

Jezik može biti prirodni i veštački.

2

Page 2: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

2

Prirodni i veštački jezici

Prirodni jezici nastali su iz potrebe za međusobnim

sporazumevanjem ljudi radi obavljanja različitih aktivnosti.

Veštački jezici su nastali iz težnje za ostvarivanjem

univerzalne komunikacije među govornicima različitih

jezika, a na osnovu unapred definisanih pravila korišćenja.

Najpoznatiji veštački jezik, zvan esperanto stvorio je L.

L. Zamenhof. To je skup različitih elemenata različitih

jezika, a bio je zamišljen kao jezik koji bi trebalo lako da

se nauči.

Pisac Tolkin je tvorac jezika kvenija, dijalekat vilovnjačkog

jezika. Ima svoju azbuku (tengvar) i izgovor prema jeziku

germanolikih ljudi.

3

Programski jezik

Programski jezik je jezik za izradu programa

sastavljen od simbola koje računar može da prevede

u direktne radnje.

Programski jezik je veštački jezik koji se koristi za pripremu

programa za računar.

Programski jezici se razvijaju iz dva razloga:

da bi se prilagodili promenama okruženja i

da bi prihvatili novine u oblasti programiranja.

4

Page 3: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

3

Osnovni elementi programskog

jezika obrada ulaznih podataka: Podatke preuzeti sa tastature, iz

datoteke ili nekog drugog izvora.

obrada izlaznih podataka: Podatke predati monitoru,

datoteci, bazi podataka ili nekom drugom medijumu.

matematička obrada podataka: Podatke obraditi pomoću

matematičke operacije (na primer, sabiranje, oduzimanje,

množenje ili deljenje).

poređenje i izbor: Provera određenih uslova i kontrola

izvršavanja naredbi.

ponavljanje: Posebnim pravilima reguliše se ponavljanje

izvršavanja naredbi.

5

Klasifikacija programskih jezika po

stepenu zavisnosti od računara

6

Page 4: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

4

Mašinski jezik

Mašinski jezik je jedini koji računar može da

razume, a za čije korišćenje nije potreban

prevodilac, jer se naredbe izvršavaju

direktno.

Poznat je pod imenom mašinski kôd i njegova

sintaksa se sastoji od nula (0) i jedinica (1).

Kada se niz ovakvih naredbi preda računaru,

on ih prepoznaje i konvertuje u električne

signale potrebne za njegov rad.

Prednost korišćenja je velika brzina rada

računara jer nije potrebno nikakvo

prevođenje.

7

Asemblerski jezik

Asemblerski jezik se svrstava u drugu

generaciju programskih jezika i za njegovo

korišćenje je potreban program za

prevođenje na mašinski jezik koji se zove

asembler (engl. assembler).

Koristi se zbog toga što računar može da

manipuliše brojevima i slovima. Neke

kombinacije slova mogu da zamene

određene naredbe u mašinskom kôdu npr.

ADD, SUB.

8

Page 5: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

5

Programski jezici višeg nivoa

U grupu programskih jezika višeg nivoa

spadaju: Fortran, Cobol, PL/1, Algol, Basic,

Pascal, Lisp, Prolog, C, C++, Java, C#.

Svaki programski jezik mora se prevesti na

mašinski jezik kako bi ga računar razumeo.

9

Program

Program je zapis (realizacija) algoritma upotrebom

programskog jezika.

Da bi se napisao program mora se u potpunosti

ispratiti životni ciklus razvoja softvera.

10

Page 6: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

6

Programiranje

Programiranje je postupak pisanja programa.

Programiranje je presudno za razumevanje načina

na koji koristimo računar i sve dostupne alate.

Osnovne veštine programiranja biće potrebne za

mnoga zanimanja budućnosti a više od 90

procenata zanimanja u današnje vreme zahteva

određena znanja u oblasti informaciono-

komunikacionih tehnologija.

11

Evropska nedelja programiranja

Evropska nedelja programiranja (Europe Code

Week, http://codeweek.eu/) obeležava se

širom Evrope od 11. do 17. oktobra 2014.

To je prilika da se što više učenika, nastavnika

i roditelja okupi radi zajedničkog učenja o

programiranju, da steknu osnovne veštine iz

ove oblasti i učestvuju u aktivnostima koje

oslobađaju kreativnost.

Prva Nedelja koda se odigrala u novembru

2013. i predstavljala je okvirnu inicijativu koja

je obuhvatila preko 300 događaja i više od

10.000 ljudi u 26 evropskih država. 12

Page 7: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

7

Životni ciklus razvoja softvera

13

Postavka problema

Potiče od naručioca, mada se precizna formulacija

postiže u saradnji sa programerom koji treba da

realizuje projekat.

U ovoj etapi se problem koji treba rešiti korišćenjem

računara formuliše prirodnim jezikom.

Vrlo je važno da naručilac programa ima bar

elementarnu programersku pismenost, kako bi

precizno i jasno i u granicama realnog formulisao

šta traži od programera.

14

Page 8: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

8

Analiza problema

U ovoj etapi se obavljaju sledeće aktivnosti:

na osnovu korektno urađenog snimka postojećeg stanja

vrši se precizna identifikacija problema i ciljeva programa

identifikuju se procedure rešenja problema kao podloga

za izradu algoritma i programa

ispituje se univerzalnost programskog rešenja

ispituje se mogućnost višekorisničkog rada

kreira se sveobuhvatan sistem zaštite podataka

15

Izbor ili razrada algoritma

Obuhvata razradu algoritma kojim se rešava

problem.

Pod algoritmom se podrazumeva konačan uređen

niz precizno formulisanih pravila kojima se rešava

jedan ili čitava klasa problema.

U ovoj etapi se algoritam izražava na nekom od

jezika za zapis algoritma.

Kreiranjem algoritma problem se svodi na oblik

pogodan za rešavanje na računaru. 16

Page 9: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

9

Projektovanje opšte strukture

programa Mora se predvideti izbor programskog jezika i

pomoćne programske podrške.

U ovoj etapi bira se programski jezik koji je

najpogodniji za kodiranje, a nakon toga se

pristupa razradi arhitekture programa i definiše

način čuvanja informacija.

17

Kodiranje

Kodiranje predstavlja pisanje programskih

instrukcija u nekom od programskih jezika.

Vrši se na bazi razvijenog algoritma, odnosno

programskog dijagrama toka, u skladu sa

formalizovanim pravilima konkretnog programskog

jezika.

18

Page 10: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

10

Testiranje programa

Testiranje programa treba da obezbedi otklanjanje

grešaka u programu.

Zbog toga se formira sistem testova – specijalno

pripremljeni kontrolni parametri za koje je poznato

rešenje problema.

Testiranje treba da obuhvati sve moguće grane u

programu, pa i situacije kada nema rešenja

problema.

Ako se dobijeni rezultati poklapaju sa očekivanim,

smatra se da program radi korektno.

19

Analiza rezultata izvršavanja

programa Obuhvata upoređivanje rezultata dobijenih pomoću

računara sa očekivanim.

Ako nisu u granicama koje se mogu tolerisati,

rešenje je da se modifikuje sam model kako bi se

učinio realnim.

20

Page 11: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

11

Publikovanje ili isporuka

programa naručiocu To je trenutak kada se program iznosi na tržište ili

predaje naručiocu radi eksploatacije.

Dokumentacija programa mora da prati sve

navedene etape programa.

Ona mora da sadrži zapise o svim sprovedenim

aktivnostima od analize problema do svih rezultata

testiranja problema.

21

Održavanje i modernizacija

programa U najužoj vezi sa pitanjem njegove

dokumentovanosti, koja omogućava eksploataciju,

kontrolu, usavršavanje i izmene programa.

Ova etapa obuhvata obuku korisnika i konsultacije

oko rada programa.

Kod tiražnih programa vrši se stalna analiza reakcije

korisnika i izrada novih verzija sa primedbama i

željama korisnika.

22

Page 12: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

12

Kriterijumi za ocenu kvaliteta

programa Integritet se odnosi na korektnost računarske obrade.

Sva druga poboljšanja programa su beskorisna ako

računarska obrada nije korektna.

Čitljivost ukazuje na stepen razumljivosti programske

logike. Ako je program čitljivo napisan, omogućeno je

drugom programeru ili autoru da posle izvesnog vremena

bez velikog napora shvati programsku logiku, što je vrlo

bitno u uslovima timskog rada i razmene programa.

Jednostavnost programa se odnosi na korišćenje

najjednostavnijih programskih struktura. Ova

karakteristika je u direktnoj vezi sa čitljivošću programa.

Međutim, korišćenje jednostavnih programskih struktura

može umanjiti efikasnost programa. 23

Kriterijumi za ocenu kvaliteta

programa Efikasnost se ogleda kroz vreme potrebno za

izvršavanje programa i veličinu potrebne memorije. Ova

vrlo važna karakteristika ne sme biti ostvarena na račun

čitljivosti i jednostavnosti programa.

Modularnost je tehnika pisanja programa. Veliki

programi mogu biti razbijeni u veći broj odvojenih

programskih modula sa mogućnošću komuniciranja među

sobom. Korišćenje modularne programske strukture

povećava čitljivost i jednostavnost programa i olakšava

buduća poboljšanja programa.

Univerzalnost ukazuje na opštost programske logike.

Visok stepen univerzalnosti programa može se dobiti sa

vrlo malo programerskog napora. 24

Page 13: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

13

25

Java - Istorija

1991. godine - Jezik je nazvan Oak. Razvio ga je Džejms Gosling (James Gosling ) sa saradnicima (Patrik Noton, Kris Vort, Ed Frenk, Majk Šeridan) iz korporacije Sun Microsystems, Inc. Definisan radi primene u elektronskim uređajima u domaćinstvu (mikrotalasne pećnice i daljinski upravljači) i kao programski jezik primenjiv na različitim računarskim platformama (neutralnim prema arhitekturi).

oko 1995. godine – Dobija naziv Java. Jako brzo je prihvaćen kao snažno sredstvo za razvoj internet (veb) aplikacija

Septembar 2004. - realizovana je J2SE 1.5, a jezik je Java 2

Oktobar 2006. - Java 2, J2SE 1.5 (ili 5.0), update 9

Java SE 6 (Mustang) - novembar/decembar 2006.

Java SE 7 (Dolphin) - 2008.

Java SE 8 (Spider) - 2014.

Džejms Artur Gosling

Džejms Artur Gosling (James Arthur Gosling)

je softverski inženjer.

Tvorac programskog jezika Java.

Ken Arnold, James Gosling, David Holmes, The Java

Programming Language, Fourth Edition, Addison-

Wesley Professional, 2005.

James Gosling, Bill Joy, Guy L. Steele Jr., Gilad

Bracha, The Java Language Specification, Third

Edition, Addison-Wesley Professional, 2005.

Ken Arnold, James Gosling, David Holmes, The Java

Programming Language, Third Edition, Addison-Wesley

Professional, 2000.

James Gosling, Bill Joy, Guy L. Steele Jr., Gilad

Bracha, The Java Language Specification, Second

Edition, Addison-Wesley, 2000.

26

Page 14: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

14

27

J2SE, JSDK, JDK, JRE

jezik + alati (tj. kompajler) naziva se J2SE (Java 2 Standard Edition)

J2SE 1.5.0.

J2SE 5.0

Postoje dve verzije J2SE koje sadrže različit broj alata:

JSDK: kompletna verzija

JRE: samo dovoljan broj alata za pokretanje kompajliranja programa

Trenutna verzija Java SE 8 Update 20 (Release date: 19.08.2014.)

isto značenje

28

JSDK je skraćenica za Java Software Development Kit

JDK je staro ime za JSDK

može se sresti takođe i J2SDK ili Java SDK

JSDK sadrži sve biblioteke (pakete), prevodilac i druge alate za pisanje/pokretanje/debagiranje Java koda.

JRE = Java Runtime Environment skraćena JSDK verzija sa samo paketima/alatima za pokretanje

Java koda

najčešće koriste veb čitači

JSDK, JDK, JRE

Page 15: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

15

Java Development Kit (JDK)

JDK – Java Development Kit (Java razvojni alati) predstavlja komplet

razvojnog softvera za razvoj Java aplikacija

29

JDK slojevi

Java programski jezik

Razvojni alati i API-ji

Deployment tehnologije

Alati korisničkog interfejsa

Biblioteke klasa

Java virtuelna mašina

30

Page 16: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

16

31

Java platforma

Platforma je hardversko ili softversko okruženje u kome se pokreće program. Poznate platforme su Microsoft Windows, Linux, Solaris OS i Mac OS. Većina platformi može se opisati kao kombinacija operativnog sistema i odgovarajućeg hardvera.

Java platforma se razlikuje od većine platformi jer je to softverska platforma.

Java platforma je naziv za računarsko okruženje u kome se mogu pokretati aplikacije razvijene korišćenjem Java programskog jezika i skupa razvojnih alata.

Java platforma obuhvata: Java Platform Standard Edition ili Java SE (J2SE), Java Platform Enterprise Edition ili Java EE (J2EE) i Java Platform Micro Edition ili Java ME (J2ME).

32

Java platforma

Java ME je skup Java API za razvoj softvera za uređaje sa ograničenim resursom kao što su PDA uređaji i mobilni telefoni. Razvijen je pod Java Community Process kao JSR 68. Predstavlja zamenu za sličnu tehnologiju PersonalJava. Popularan je za izradu igara za mobilne telefone koje se mogu emulirati na računaru u toku procesa razvojai lako se dovući na telefon.

Java SE uključuje sve klase iz Java SE i klase neophodne za pokretanje programa na serverima i radnim stanicama. Počeo je sa J2SE 1.4 verzijom.

Java EE je programska platforma za razvoj i pokretanje distribuiranih višeslojnih Java aplikacija koje se pokreću na aplikacionim serverima. Java EE platforma je definisana specifikacijom. Obuhvata nekoliko API specifikacija: JDBC, RMI, e-mail, JMS, veb servise, XML.

Page 17: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

17

33

Java platforma ima dve komponente:

1. Java virtuelna mašina i

2. Java API.

34

Java virtuelna mašina

Java Virtual Machine (JVM) je razvojno okruženje u Javi.

Služi kao sloj između izvršavanja bajtkoda u apletu i mašine

Skriva razlike između mašina

JVM prevodi Java bajt kôd u skup procesorskih instrukcija tokom izvršavanja programa. Time je omogućeno da se ista aplikacija pokreće na bilo kojoj platformi koja poseduje virtuelnu mašinu. Implementacija JVM obuhvata JIT (Just In Time) kompajler. JVM ima instrukcije za sledeće grupe zadataka:

učitavanje i skladištenje,

aritmetičke,

konverziju tipova podataka,

kreiranje i rad sa objektima,

rad sa magacinom (push/pop),

grananje,

pozivanje metoda,

rad sa izuzecima.

Page 18: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

18

35

Java API

API je skraćenica za izraz Application Programming Interface, što znači

interfejs za programiranje (date) aplikacije

API je skup protokola i rutina koji računarski sistem, računarska biblioteka ili

aplikacija obezbeđuje drugim aplikacijama za obavljanje zahteva i usluga

tim aplikacijama.

Primer: Skup funkcija operativnog sistema koje programi mogu da koriste za

obavljanje poslova kao upravljanje datotekama i prikazivanje informacija

na ekranu.

API-ji se koriste kao elementi iz kojih se pravi računarski program.

SDK za Java programski jezik sadrži J2SE API i javac kompajler, dok J2EE

SDK, potreban za razvoj npr. WWW aplikacija, je dodatak Javinom SDK-u

i sadrži dodatni API između ostalog za HTTP protokol potreban za veb

aplikacije.

Razvojni alati i API-ji

appletviewer preuzima i prikazuje sve aplete referencirane u određenoj HTML datoteci

java Java bajt kôd interpreter, koristi se za pokretanje Java aplikacija

javac prevodi (kompajlira) Java izvorni kôd u bajt kôd

javadoc generator Java dokumentacije za kreiranje dokumentacije klasa

javah generiše header datoteke za pisanje native metoda u C-u i C++

36

Page 19: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

19

Razvojni alati i API-ji

apt (Annotation processing tool)

alat koji omogućava dodavanje komentara

javap

disassembler koji deasemblira Java bajt kôd class

datoteke i ispisuje javna polja, metode i

konstruktore

jdb

tekstualni (komandna linija) debugger za Java

klase

37

Razvojni alati i API-ji

RMI (Remote Metode Invocation),

pruža pomoć pri kreiranju web aplikacija i mrežnih aplikacija

jar

za kreiranje Java Archive (JAR) datoteka

javakey

za generisanje digitalnih potpisa za JAR arhive

JPDA (Java Platform Debugger Architecture)

koristi se prilikom debagovanja desktop sistema

38

Page 20: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

20

Deployment tehnologije

Deployment

instalacija Java platforme, podešavanja, pisanje aplikacija u Java programskom jeziku, ažuriranja platforme na lokalnom računaru

Java web start

pokretanje aplikacija iz veb čitača bez potrebe za dodatnim instalacijama

Java Plug-in

pokretanje apleta iz npr. Internet Explorer-a

39

40

Kako Java funkcioniše?

Kompilacijom se dobija tzv. bajt kôd. Bajt kôd (engl.

bytecode) je visokooptimizovan skup instrukcija koji u

trenutku izvršavanja programa tumači (interpretira)

Javin izvršni sistem, poznat kao Javina virtuelna mašina

(Java Virtual Machine, JVM).

Bajt kôd je nezavisan od platforme

Bajt kôd se može: interpretirati korak po korak.

prevesti kompilatorom (Just In Time kompajler) u celini u mašinski jezik mašine na kojoj će se izvršavati.

Page 21: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

21

Java program preveden u bajt kôd mnogo se lakše

izvršava u različitim okruženjima zato što je za

različite platforme potrebno napraviti samo

različite virtuelne mašine. Kada se u određeni

sistem jednom ugradi odgovarajući paket za

izvršavanje, na sistemu moći će da se pokrene

svaki Java program.

Kada se program prevodi u neki međuoblik i zatim

interpretira pomoću virtuelne mašine, on se po

pravilu izvršava sporije nego da je direktno

preveden u izvršni kôd. U Javi ta razlika u

vremenu izvršavanja nije tako velika.

41

42

Od izvornog kôda do izvršavanja

class Primer {

public static int min(int a, int b) {

return a < b ? a : b;

}

}

Izvorni

kôd Java

kompajler Bajt kôd

Unix

Java

interpretator

Java

interpretator

JIT-

kompajler

za PC PC

Mašinski

kôd

PC

Java

interpretator

veb čitač

Java

interpretator

Page 22: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

22

Java aplet

43

Aplet je posebna vrsta Java programa namenjena distribuciji

preko interneta i automatskom izvršavanju u čitačima veba (engl.

Web browsers) koji podržavaju Javu.

Aplet se preuzima s mreže, bez intervencije korisnika. Ako korisnik

mišem pritisne hipervezu koja sadrži aplet, čitač veba automatski

preuzima i izvršava aplet.

Apleti su kratki programi koji se najčešće koriste za prikazivanje

podataka koji stižu od servera, za obradu podataka koje unosi

korisnik ili za izradu jednostavnih funkcija i izvršavaju se lokalno a

ne na serveru.

Java aplet

44

Apleti se ugrađuju u veb stranicu na sličan način na koji

se ugrađuju slike, skript segmenti i slično.

Java apleti mogu da imaju istu funkcionalnost kao i bilo

koja klasična aplikacija. Pomoću njih mogu se veb

aplikaciji dodati animirani grafički elementi, realizuju

kompjuterske igrice ili grafikonima prikažu rezultati

neke statističke analize.

Page 23: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

23

45

Izvršavanje apleta

Računar klijent

veb čitač

JVM

aplet aplet

veb server

prevlačenje

veb strane

i apleta

Servlet- Java na serverskoj strani

Servlet je kratak program koji se izvršava na

serveru.

Servleti se koriste za generisanje dinamičkog

sadržaja koji se zatim šalje klijentu.

Pošto se servleti prevode u bajt kôd koji izvršava

JVM, postiže se veoma visok stepen prenosivosti.

To znači da se isti servlet može koristiti u velikom

broju različitih serverskih okruženja. Jedina

obaveza je da server podržava JVM i kontejner za

servlet. 46

Page 24: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

24

47

Izvršavanje Java aplikacije

Računar klijent

JVM

aplikacija

Java aplikacija - samostalni

program za rešavanje jednog

(ili skupa) problema, koji

sadrži metodu main i jednu ili

više klasa.

48

Prednosti Jave Java je jednostavan jezik. Na primer, ne postoje

sledeći koncepti: pointeri

implicitne konverzije tipova

ne koriste se strukture i unije

predefinisanje operatora

šabloni

heder fajlovi

višestruko nasleđivanje

Objektno orijentisan jezik. Slično C++ u Javi se koriste klase da bi se organizovao kod u module. Klase se mogu definisati nasleđivanjem drugih klasa pri čemu se za definisanje okruženja objekata koristi i novi koncept interfejsi (Interfaces)

Page 25: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

25

49

Kompilatorski - interpretatorski jezik.

Kod napisan u Javi se najpre kompajlira i

prevodi u bajt kôd ili međukod (engl. bytecode) koji je mašinski nezavisan.

Program u ovom međukodu se može interpretirati na mašini koja ima odgovarajući interpretator.

Java interpretator može da bude integrisan u veb čitač.

Moguće je i korišćenje kompajlera da prevede bajt kôd u mašinski kôd određene mašine pa da se kasnije izvršava kao nezavisna aplikacija

50

Java program može da ima više paralelnih tokova, niti. Ovaj koncept omogućava određenu konkurentnost u

poslovima aplikacije.

Npr. Java program sa više niti može da renderuje sliku na ekranu dok se u glavnoj niti programa unose podaci sa tastature.

Sve aplikacije imaju najmanje jednu nit koja predstavlja glavni tok programa.

Automatski Garbage collection Java program ima automatsko oslobađanje memorije što

oslobađa programera od potrebe da vodi računa o tim stvarima.

Jezik sa statičkom implementacijom. Svi objekti koji se koriste u programu moraju da imaju

atribut tipa koji se koristi u fazi kompajliranja programa.

Page 26: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

26

51

Robusnost Java interpretator kontroliše svaki pristup sistema

unutar programa, tako da Java programi ne mogu

da obore sistem. U slučaju ozbiljnih grešaka Java

program generiše izuzetak kojim može da se

upravlja iz programa bez opasnosti po normalan

rad sistema.

Java programi su bezbedni Zbog toga što Java ne podržava rad sa pointerima,

ne postoji opasnost da dođe do neautorizovanog

pristupa memoriji i na taj način se naruši sistem.

52

Proširivost Java programi mogu da uključuju potprograme

pisane u drugim programskim jezicima (native

methods). Obično su to programi pisani na C++-u.

Time se dobija na efikasnosti programa jer su sami

Java programi u principu manje efikasni od

programa pisanih u C-u ili nekim drugim jezicima.

Razumljivost Java se zasniva na tehnologiji koja je razvijana

dugi niz godina. Zbog svega toga Java programi

su lako razumljivi, i njeni koncepti se lako uče.

Page 27: Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · Pascal, Lisp, Prolog, C, C++, Java, C#. Svaki programski jezik mora se

27

53

Nedostaci Jave

Java se još razvija brojne promene između verzija

Java kompajliranje/izvršavanje bilo je sporo, ali ne više J2SE 1.5 ima istu brzinu kao C

prva verzija Jave iz 1995. bila je oko 40 puta sporija od jezika C

Međuplatformsko testiranje i debagiranje je problem najveći problemi su otklonjeni

Spora internet veza postoje poteškoće pri prevlačenju srednjih/većih apleta

Dosta za učenje Java jezik i biblioteke su veoma obimni