Upload
doanquynh
View
238
Download
2
Embed Size (px)
Citation preview
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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.
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
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
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.
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
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.
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
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)
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.
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.
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