Upload
gordana-gardic
View
462
Download
0
Embed Size (px)
Citation preview
JAVAGordana Gardić
Sadržaj:
1. Poreklo Jave
2. Nastanak Jave
3. Pojmovi koji oblikuju Javu
4. Alati za razvoj
5. Java platforma
6. Java programi
7. Prevođenje i interpretacija Java programa
8. Struktura projekta
9. Identifikatori
Poreklo Jave
• Java je srodnik jezika C++, koji je direktan potomak jezika C.
• Iz jezika C Java je preuzela sintaksu.
• Karakteristike koje definišu Javu potiču od njenih prethodnika ili su nastale kao odgovor na njih.
Poreklo Jave
• Pošto C++ objedinjuje visoku efikasnost i stilske elemente C-a sa objektno orijentisanim pristupom, mogao se koristiti za pravljenje široke lepeze programa.
• World Wide Web i Internet će pokrenuti novu revoluciju na polju programiranja.
Nastanak Jave
• 1991. godina (James Gosling, Patrick Naughton, Chris Warth, Ed Frank, Mike Sheridan)-Sun Microsystems, Inc.
• 18 meseci rada da bi se došlo do prve radne verzije.
• “Oak” – hrast
• 1995. godine – JAVA
Nastanak Jave
• Iznenađuje to što glavni pokretač za razvoj Jave nije bio Internet!
• Osnovni motiv je bila potreba za jezikom nezavisnim od računarske platforme .
• U vreme kad je nastajala JAVA uobličio se i WWW ovakav kakvim ga danas poznajemo.
• Java se probila u prvi plan računarskih jezika, jer su i za Web bili potrebni prenosivi programi.
Pojmovi koji oblikuju Javu
1. Jednostavno
2. Bezbedno
3. Prenosivo
4. Objektno orijentisano
5. Robusno
6. Višenitno
7. Nezavisno od platforme
8. Interpretirano
9. Visokoefikasno
10. Distribuirano
11. Dinamično
Jednostavno
• Java je koncipirana tako da programeri mogu lako da je nauče i efikasno koriste.
• Sa predznanjem C-a i C++ savladavanje Jave nije problem.
Bezbedno
• Kada koristite čitač Weba koji podržava Javu, možete bezbedno da preuzimate Java aplete bez bojazni od virusa ili zlih namera.
• Java obezbeđuje ovu zaštitu tako što program ograničava na okruženje za izvršavanje Java programa, ne dozvoljavajući mu pristup drugim delovima računara.
Bezbedno
• Mogućnost preuzimanja apleta bez straha od štete ili bojazni da će biti prekršena bezbednosna pravila, za mnoge predstavlja najveću novinu koju je Java donela.
Prenosivo
• Tri velike grupe korisnika različitih operativnih sistema:
Windows
Linux
Mackintosh
• I još veliki broj manje poznatih operativnih sistema.
• I još bezbroj različitih konfiguracija računara.
Objektno orijentisano
• Iako je Java nastala pod uticajem svojih predhodnika, nije bilo predviđeno da njen izvorni kôd bude kompatibilan sa izvornim kodom bilo kog drugog jezika.
• Zato su autori Jave imali potpuno odrešene ruke.
• Jedan rezultat koji je odavde proizišao jeste čist, upotrebljiv i pragmatičan tretman objekata.
• Model objekta u Javi jednostavan je i lako se proširuje, dok prosti tipovi, kao što su celi brojevi, nisu ni obuhvaćeni objektima jer su tako mnogo efikasniji.
Robusno
• Web okruženje sa više platformi postavlja izuzetne programske zahteve jer program mora da se pouzdano izvršava na različitim sistemima.
• U cilju postizanja pouzdanosti rada programa, Java vas ograničava u nekoliko ključnih područja, terajući vas da programske greške ispravite u ranoj fazi.
Robusno
• Istovremeno, Java vas oslobađa briga o mnogim najčešćim programskim greškama.
• Pošto je Java strogo tipiziran jezik, ona proverava kôd u trenutku njegovog prevođenja.
• Međutim, ona ga proverava i u trenutku izvršavanja.
• Glavna prednost Jave je to što možete da predvidite kako će se ono što ste napisali ponašati u različitim uslovima.
Robusno
• Dva glavna razloga otkazivanja programa:
greške pri upravljanju memorijom i
loša obrada izuzetaka .
• Java otklanja ove probleme jer dodeljuje i oslobađa memoriju umesto vas. (garbage collector)
• Java obezbeđuje objektno orijentisanu obradu izuzetaka.
Višenitno
• Java je projektovana tako da izađe u susret realnim zahtevima pravljenja interaktivnih mrežnih programa.
• Java podržava višenitno programiranje – varijantu programiranja koja omogućuje da vaš program istovremeno radi više stvari.
Nezavisno od platform
• Osnovni problem dizajnera Jave bilo je stvaranje prenosivog koda koji će trajno raditi.
• Operativni sistemi se neprestano poboljšavaju, poboljšavaju se i procesori, a kada se sve kombinuje s promenama u osnovnim resursima sistema, može se dogoditi da program više ne radi kako treba.
“Napiši jednom; izvršavaj bilo gde, bilo kada i zauvek”
Interpretirano i visokoefikasno
• Java omogućuje pravljenje programa za više platformi prevodeći izvorni kôd u međuproizvod, zvan bajt kôd.
• Ovakav kôd se može izvršavati na svakom sistemu koji ima Javinu virtuelnu mašinu.
• Najveći broj prethodnih pokušaja da se napravi kôd koji će raditi nezavisno od platforme ostvarivao je to na račun performansi.
• Javin bajt kôd je pažljivo optimizovan tako da se po potrebi, pomoću JIT prevodioca, lako prevodi u mašinski kôd konkretnog računara, čime se postižu visoke performanse.
Distribuirano
• Java je posebno namenjena distribuiranom okruženju Interneta jer lako rukuje protokolima TCP/IP.
• Java podržava i daljinsko izvršavanje procedura (Remote Method Invocation,RMI).
• Dakle, program može da zahteva izvršavanje procedura koje se nalaze na bilo kojoj mrežnoj adresi.
Dinamično
• Java programi sadrže znatne količine podataka o tipu koji se koriste za proveravanje i razrešavanje pristupa objektima u trenutku izvršavanja.
• Time je omogućeno dinamičko povezivanje koda na pouzdan i efikasan način.
Alati za razvoj
• Za izvršavanje Java aplikacija potrebno je imati instaliranu samo Java platformu.
• Java Runtime Enviroment (JRE)• Za razvoj Java aplikacija je potrebno osim JRE imati i
skup alata kojima se radi razvoj.
• Java Development Kit (JDK)• JDK, dakle, sadrži JRE i sve dodatne alate neophodne za
osnovni razvoj Java aplikacija.
Alati za razvoj
JDK izdanja
• Za neke Java aplikacije su potrebne dodatne mogućnosti, koje nisu sadržane osnovnim skupom JDK, kao što je slučaj sa web aplikacijama.
• Zato postoje razna izdanja (edition) JDK-a.
JDK izdanja
• Najpopularnija su sledeća izdanja:• Java SE (Standard Edition)• Osnovno izdanje namenjeno za razvoja svih aplikacija, osim
onih koje su dizajnirane za posebne uređaje. Java SE ediciju čini JRE, prevodilac i prateće alatke i API, uključujući i njegov izvorni kod.
• Java EE (Enterprise Edition)• Ovo izdanje uključuje aplikativni server, web server, J2EE API,
podršku za Enterprise JavaBeans, Java Servlet API i Java Server Pages (JSP) tehnologije. J2EE se koristi sa JSE.
JDK izdanja
• Java ME (Micro Edition)• Služi za razvoj java aplikacija na mobilnim uređajima.
• JavaFX (Script Technology)• Efikasan skript jezik za lako kreiranje bogatih sadržaja u
Java okruženju.
Java platforma
• Platforma je softversko i/ili hardversko okruženje u kome se izvršava program.
• Java se upravo razlikuje od mnogih drugih platformi u tome što je isključivo softverska, koja radi na drugim hardverskim platformama.
• Ovo čini Javu portabilnom i nezavisnom od hardverske platforme.
Java platforma
• Java platforma se sastoji iz dve komponente:
Java Virtuelne Mašine (JVM) predstavlja osnovu Java platforme koja je portovana
na različite hardverske platforme.
Java Application Programming Interface (API) ogromna kolekcija gotovih softverskih komponenti
koje pružaju mnogo korisnih mogućnosti. Nju čine klase i interfejsi, grupisani u pakete.
Java platforma
Virtuelna mašina
• Virtualna mašina je softverska implementacija mašine (računara) koja može da izvršava programe kao i sam računar (fizička mašina).
• Dve osnovne kategorije virtualnih mašina:
Sistemska virtualna mašina–poseduje kompletnu sistemsku platformu koja omogućuje instalaciju i pokratanje operativnog sistema.
Aplikativna virtualna mašina–dizajnirana za pokretanje jednog programa (aplikacije), odnosno, podržava jedan proces.
• Bitna karakteristika virtualne mašine –softver koji se pokreće unutar nje je ograničen na resurse koje mašina pruža (drugim rečima, ne može se izaći van granica njenog virtualnog sveta).
Biblioteke klasa u Javi
• U Javi postoji standardna biblioteka klasa koja se može koristiti kada je potrebno.
• Biblioteka klаsa je skup klasa koje podržavaju rаzvoj programa.
• Klase koje se nalaze u ovim bibliotekama su za programere bitne, pošto sadrže specijalne funkcije.
• Klasa u okviru standardne biblioteke klasa su grupisane u pakete (package).
Biblioteke klasa u Javi Neki od najvažnijih paketa u
standardnoj biblioteci klasa su: Paket
Opis
java.applet Kreiraju se programi (apleti) koji se lako prebacuju preko Weba
java.awt Crta se grafika i kreira grafički korisnički interfejs (AWT je skraćenica za Abstract Windowing
toolkit)
java.beans Definišu se softverske komponente koje se lako ubacuju u aplikacije.
java.io Klase koje obavljaju različite funkcije vezane za ulaz i izlaz
java.lang Generalna podrška. Ovaj paket je automatski uvezen u sve programe.
java.math Klase za matematička izračunavanja
java.net Klase za komunikaciju preko mreže
java.rmi Klase za pisanje programa koji se mogu distribuisati na više računara (RMI je skraćenica za
Remote Method Invocation).
java.security Klase vezane za sigurnost
java.sql Klase za rad sa bazama podataka. SQL je skraćenica za Structure Query Language)
java.text Klase za formatiranje teksta
java.util Generalne pomoćne klase
javax.swing Klase za kreiranje grafičkog korisničkog interfejsa. Proširenje klasa iz paketa
Biblioteke klasa u Javi
• Sve klase u Javi su organizovane u pakete.
• Paketi u Javi su slični direktorijumima (fasciklama) koji se koriste za organizaciju podataka na disku.
• Pakovanje klase se izvodi tako što se u datoteku u kojoj se nalazi klasa na početku doda iskaz za pakovanje.
Biblioteke klasa u Javi
package Proba;
public class Sfera …
• Prethodni iskaz kaže da je klasa Sfera pripadnik paketa Proba.
• U jednom paketu može biti više klasa.
• Ključna reč public u definiciji klase ukazuje na to da se klasi Sfera može pristupiti i iz drugih paketa i klasa u programu.
Biblioteke klasa u Javi
• Standardne klase i paketi
• Klase koje se nalaze u paketu java.lang se automatski mogu koristiti kod pisanja programa.
• Ove klase su toliko osnovne da se mogu smatrati proširenjem jezika.
• Svaka klasa iz paketa java.lang, kao što su klase String ili System, se može koristiti u programu bez ikakvih dodatnih radnji.
Java programi
• Postoje dve osnovne vrste programa koji se mogu pisati u Javi:
Aplikacija to je samostalni program za rešavanje jednog ili
skupa problema, koji sadrži metod main() i jednu ili više klasa
Aplet to je dinamički interaktivni program koji se
može izvršavati u okviru WEB stranice, a posredstvom nekog od browser-a ( čitača )
Prevođenje i interpretacija Java programa
Prevođenje i interpretacija Java programa
• Java prevodilac (javac) prevodi Java izvorni kod (.java) u tzv. bajt-kod(.class) koji je binarani isti za sve platforme(“prevedi jednom izvršavaj bilo gde”).
• Bajt-kod (Bytecode)su mašinske instrukcije za JVM.
• JVM operiše upravo nad bajtkodom.
• Java interpreter (java) tumači bajtkod i izvršava akcije koje su specificirane u bajtkodu, unutar JVM.
Struktura projekta
• Važno je dobro organizovati Java projekat.
• Uobičajeno je u programiranju da imena direktorijuma, svojim imenom, sugerišu njegov sadržaj.
• Direktorjum src (sinonim za source, izvorni kod) sadrži celokupan izvroni kod java programa.
• Direktorijum out (sinonim za output, rezultat kreiranja aplikacije; često se naziva i bin, što je sinonim za binary, binarni, tj. prevedeni kod) sadrži celokupan rezultat prevođenja aplikacije (.class fajlove).
Struktura projekta
• Direktorijum lib (sinonim za library, biblioteke)
sadrži sve eksterne biblioteke koje aplikacija koristi.
• Direktorijum etc (sinonim za et cetera, 'i ostale stvari') može da sadrži sve pomoćne fajlove u vezi projekta - uputstva, zahteve, SQL skriptove i tome slično.
• Direktorijum dist (sinonim za distribution, distribucija) sadrži finalni rezultat build-ovanja aplikacije, spreman za distribuciju
Identifikatori
• Java koristi identifikatore da imenuje:
promenljive
metode
klase
pakete• Sintaksna pravila:
Mora početi slovom (velikim ili malim slovom)
Može biti praćeno bilo kojim brojem slova i cifara
Karakteri $ i _ su prihvaćena slova
Java identifikator imena je osetljiv na veličinu slova (case sensitive)
Ne sme biti ključna reč
Ključne reči
abstract continue for new switch
assert*** default goto* package synchronized
boolean do if private this
break double implements protected throw
byte else import public throws
case enum**** instanceof return transient
catch extends int short try
char final interface static void
class finally long strictfp** volatile
const* float native super while
* not used** added in 1.2
*** added in 1.4**** added in 5.0
•Nastaviće se...