SlideShare a Scribd company logo
1 of 43
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...

More Related Content

What's hot

How To be a Backend developer
How To be a Backend developer    How To be a Backend developer
How To be a Backend developer Ramy Hakam
 
ADF Applications and Metadata
ADF Applications and MetadataADF Applications and Metadata
ADF Applications and MetadataNakul Thacker
 
HBaseを用いたグラフDB「Hornet」の設計と運用
HBaseを用いたグラフDB「Hornet」の設計と運用HBaseを用いたグラフDB「Hornet」の設計と運用
HBaseを用いたグラフDB「Hornet」の設計と運用Toshihiro Suzuki
 
MVVM in iOS presentation
MVVM in iOS presentationMVVM in iOS presentation
MVVM in iOS presentationG ABHISEK
 
WebSphere Application Server Family (Editions Comparison)
WebSphere Application Server Family (Editions Comparison)WebSphere Application Server Family (Editions Comparison)
WebSphere Application Server Family (Editions Comparison)ejlp12
 
Enterprise agile dev ops-and-xr-techonology-adoption-for-fintech-20180324
Enterprise agile dev ops-and-xr-techonology-adoption-for-fintech-20180324Enterprise agile dev ops-and-xr-techonology-adoption-for-fintech-20180324
Enterprise agile dev ops-and-xr-techonology-adoption-for-fintech-20180324Shotaro Suzuki
 
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービスKLab Inc. / Tech
 
20150523 chatwork continuous delivery
20150523 chatwork continuous delivery20150523 chatwork continuous delivery
20150523 chatwork continuous deliveryYoshinori Fujiwara
 

What's hot (9)

How To be a Backend developer
How To be a Backend developer    How To be a Backend developer
How To be a Backend developer
 
ADF Applications and Metadata
ADF Applications and MetadataADF Applications and Metadata
ADF Applications and Metadata
 
HBaseを用いたグラフDB「Hornet」の設計と運用
HBaseを用いたグラフDB「Hornet」の設計と運用HBaseを用いたグラフDB「Hornet」の設計と運用
HBaseを用いたグラフDB「Hornet」の設計と運用
 
MVVM in iOS presentation
MVVM in iOS presentationMVVM in iOS presentation
MVVM in iOS presentation
 
WebSphere Application Server Family (Editions Comparison)
WebSphere Application Server Family (Editions Comparison)WebSphere Application Server Family (Editions Comparison)
WebSphere Application Server Family (Editions Comparison)
 
Introduction to weblogic
Introduction to weblogicIntroduction to weblogic
Introduction to weblogic
 
Enterprise agile dev ops-and-xr-techonology-adoption-for-fintech-20180324
Enterprise agile dev ops-and-xr-techonology-adoption-for-fintech-20180324Enterprise agile dev ops-and-xr-techonology-adoption-for-fintech-20180324
Enterprise agile dev ops-and-xr-techonology-adoption-for-fintech-20180324
 
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
 
20150523 chatwork continuous delivery
20150523 chatwork continuous delivery20150523 chatwork continuous delivery
20150523 chatwork continuous delivery
 

Viewers also liked

Acme AS strategi og retningslinjer for sosiale medier
Acme AS strategi og retningslinjer for sosiale medierAcme AS strategi og retningslinjer for sosiale medier
Acme AS strategi og retningslinjer for sosiale medierTor Arne Thune
 
Gw Melek Politik: POLITIK
Gw Melek Politik: POLITIKGw Melek Politik: POLITIK
Gw Melek Politik: POLITIKAndiani Dian
 
Ganoexcel Italia Team
Ganoexcel Italia TeamGanoexcel Italia Team
Ganoexcel Italia Teamilprincipe68
 
美 Zipcar의 성공비결
美 Zipcar의 성공비결美 Zipcar의 성공비결
美 Zipcar의 성공비결JiHyeun Min
 
plastica: àLbum FotogràFic
plastica: àLbum FotogràFicplastica: àLbum FotogràFic
plastica: àLbum FotogràFicnoelia_mm
 
PENELITIAN PUSTAKA ( Dinamika Masyarakat )
PENELITIAN PUSTAKA ( Dinamika Masyarakat )PENELITIAN PUSTAKA ( Dinamika Masyarakat )
PENELITIAN PUSTAKA ( Dinamika Masyarakat )Ressy Octaviani
 
ヒト免疫に対するナノバブル水の効果
ヒト免疫に対するナノバブル水の効果ヒト免疫に対するナノバブル水の効果
ヒト免疫に対するナノバブル水の効果orthomedico
 
Certificación a grado 2012 -II TSU CS
Certificación a grado 2012 -II TSU CSCertificación a grado 2012 -II TSU CS
Certificación a grado 2012 -II TSU CSDavid Leon Sicilia
 
Tarea 2 - Armando Alcalá
Tarea 2 - Armando AlcaláTarea 2 - Armando Alcalá
Tarea 2 - Armando Alcaláalcalarmando
 
Red escolar
Red escolarRed escolar
Red escolarMarisaSt
 
AWS-CSA-A-2016 Certificate
AWS-CSA-A-2016 CertificateAWS-CSA-A-2016 Certificate
AWS-CSA-A-2016 CertificateRoger Pepin
 

Viewers also liked (20)

Acme AS strategi og retningslinjer for sosiale medier
Acme AS strategi og retningslinjer for sosiale medierAcme AS strategi og retningslinjer for sosiale medier
Acme AS strategi og retningslinjer for sosiale medier
 
簡報2
簡報2簡報2
簡報2
 
Gw Melek Politik: POLITIK
Gw Melek Politik: POLITIKGw Melek Politik: POLITIK
Gw Melek Politik: POLITIK
 
Perkembangan Teknologi Web Browser
Perkembangan Teknologi Web BrowserPerkembangan Teknologi Web Browser
Perkembangan Teknologi Web Browser
 
Ganoexcel Italia Team
Ganoexcel Italia TeamGanoexcel Italia Team
Ganoexcel Italia Team
 
美 Zipcar의 성공비결
美 Zipcar의 성공비결美 Zipcar의 성공비결
美 Zipcar의 성공비결
 
plastica: àLbum FotogràFic
plastica: àLbum FotogràFicplastica: àLbum FotogràFic
plastica: àLbum FotogràFic
 
09.risas
09.risas09.risas
09.risas
 
PENELITIAN PUSTAKA ( Dinamika Masyarakat )
PENELITIAN PUSTAKA ( Dinamika Masyarakat )PENELITIAN PUSTAKA ( Dinamika Masyarakat )
PENELITIAN PUSTAKA ( Dinamika Masyarakat )
 
ヒト免疫に対するナノバブル水の効果
ヒト免疫に対するナノバブル水の効果ヒト免疫に対するナノバブル水の効果
ヒト免疫に対するナノバブル水の効果
 
Moments 1
Moments 1Moments 1
Moments 1
 
Kes Keusahawanan
Kes KeusahawananKes Keusahawanan
Kes Keusahawanan
 
Certificación a grado 2012 -II TSU CS
Certificación a grado 2012 -II TSU CSCertificación a grado 2012 -II TSU CS
Certificación a grado 2012 -II TSU CS
 
Tarea 2 - Armando Alcalá
Tarea 2 - Armando AlcaláTarea 2 - Armando Alcalá
Tarea 2 - Armando Alcalá
 
Red escolar
Red escolarRed escolar
Red escolar
 
NACE CIP 2 Certificate
NACE CIP 2 CertificateNACE CIP 2 Certificate
NACE CIP 2 Certificate
 
Nora-Ashley-logo
Nora-Ashley-logoNora-Ashley-logo
Nora-Ashley-logo
 
20160521111921916
2016052111192191620160521111921916
20160521111921916
 
AWS-CSA-A-2016 Certificate
AWS-CSA-A-2016 CertificateAWS-CSA-A-2016 Certificate
AWS-CSA-A-2016 Certificate
 
Grajweat st 1
Grajweat st 1Grajweat st 1
Grajweat st 1
 

Similar to Java

Android vs iOS development
Android vs iOS developmentAndroid vs iOS development
Android vs iOS developmentVuk Nikolić
 
.NET Core - Sve što trebate znati
.NET Core - Sve što trebate znati.NET Core - Sve što trebate znati
.NET Core - Sve što trebate znatiAxilis
 
Iir oracle baza podataka xe
Iir   oracle baza podataka xeIir   oracle baza podataka xe
Iir oracle baza podataka xealeksis2013
 
Napredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend FrameworkNapredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend FrameworkSaša Stamenković
 
2019 StartIT - Symfony i 12 factor arhitektura
2019 StartIT - Symfony i 12 factor arhitektura2019 StartIT - Symfony i 12 factor arhitektura
2019 StartIT - Symfony i 12 factor arhitekturaMarko Mitranić
 
Programiranje Nadja Arsenijevic
Programiranje Nadja ArsenijevicProgramiranje Nadja Arsenijevic
Programiranje Nadja ArsenijevicAnaSanja1
 
Think Smart - Start Grid
Think Smart - Start GridThink Smart - Start Grid
Think Smart - Start GridITDogadjaji.com
 
Aleksandar popovic konferencija ns-3
Aleksandar popovic konferencija ns-3Aleksandar popovic konferencija ns-3
Aleksandar popovic konferencija ns-3Aleksandar Popović
 
Sistemski softver i aplikativni programi
Sistemski softver i aplikativni programiSistemski softver i aplikativni programi
Sistemski softver i aplikativni programiAleksandar Jovanovic
 
programska_podrška_računara.pptx
programska_podrška_računara.pptxprogramska_podrška_računara.pptx
programska_podrška_računara.pptxssuserd5033c
 
Sistemski softver i aplikativni programi
Sistemski softver i aplikativni programiSistemski softver i aplikativni programi
Sistemski softver i aplikativni programiJasmina Profil
 
softver.pptx
softver.pptxsoftver.pptx
softver.pptxMareNesta
 
.Net framework
.Net framework.Net framework
.Net frameworkkrstic_nis
 
Seminarski diplomski diferencijalni pojacavac
Seminarski diplomski diferencijalni pojacavacSeminarski diplomski diferencijalni pojacavac
Seminarski diplomski diferencijalni pojacavactoticaaa
 

Similar to Java (20)

Android vs iOS development
Android vs iOS developmentAndroid vs iOS development
Android vs iOS development
 
.NET Core - Sve što trebate znati
.NET Core - Sve što trebate znati.NET Core - Sve što trebate znati
.NET Core - Sve što trebate znati
 
Decouple Goals
Decouple GoalsDecouple Goals
Decouple Goals
 
Iir oracle baza podataka xe
Iir   oracle baza podataka xeIir   oracle baza podataka xe
Iir oracle baza podataka xe
 
Napredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend FrameworkNapredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend Framework
 
Java Script.ppt
Java Script.pptJava Script.ppt
Java Script.ppt
 
2019 StartIT - Symfony i 12 factor arhitektura
2019 StartIT - Symfony i 12 factor arhitektura2019 StartIT - Symfony i 12 factor arhitektura
2019 StartIT - Symfony i 12 factor arhitektura
 
Migration to 9i
Migration to 9iMigration to 9i
Migration to 9i
 
Programiranje Nadja Arsenijevic
Programiranje Nadja ArsenijevicProgramiranje Nadja Arsenijevic
Programiranje Nadja Arsenijevic
 
ICK7-L2.pptx
ICK7-L2.pptxICK7-L2.pptx
ICK7-L2.pptx
 
Web logs: Collecting and analysing - Nikola Krgovic
Web logs: Collecting and analysing - Nikola KrgovicWeb logs: Collecting and analysing - Nikola Krgovic
Web logs: Collecting and analysing - Nikola Krgovic
 
Think Smart - Start Grid
Think Smart - Start GridThink Smart - Start Grid
Think Smart - Start Grid
 
Aleksandar popovic konferencija ns-3
Aleksandar popovic konferencija ns-3Aleksandar popovic konferencija ns-3
Aleksandar popovic konferencija ns-3
 
Silverlight
SilverlightSilverlight
Silverlight
 
Sistemski softver i aplikativni programi
Sistemski softver i aplikativni programiSistemski softver i aplikativni programi
Sistemski softver i aplikativni programi
 
programska_podrška_računara.pptx
programska_podrška_računara.pptxprogramska_podrška_računara.pptx
programska_podrška_računara.pptx
 
Sistemski softver i aplikativni programi
Sistemski softver i aplikativni programiSistemski softver i aplikativni programi
Sistemski softver i aplikativni programi
 
softver.pptx
softver.pptxsoftver.pptx
softver.pptx
 
.Net framework
.Net framework.Net framework
.Net framework
 
Seminarski diplomski diferencijalni pojacavac
Seminarski diplomski diferencijalni pojacavacSeminarski diplomski diferencijalni pojacavac
Seminarski diplomski diferencijalni pojacavac
 

More from Gordana Gardić (10)

Elektronsko poslovanje
Elektronsko poslovanjeElektronsko poslovanje
Elektronsko poslovanje
 
SQL
SQLSQL
SQL
 
Baze podataka
Baze podatakaBaze podataka
Baze podataka
 
Klasa
KlasaKlasa
Klasa
 
Promenljive
PromenljivePromenljive
Promenljive
 
Biznis plan
Biznis planBiznis plan
Biznis plan
 
Preduzetnistvo 1,2,3,4
Preduzetnistvo 1,2,3,4Preduzetnistvo 1,2,3,4
Preduzetnistvo 1,2,3,4
 
Tipovi podataka u javi
Tipovi podataka u javiTipovi podataka u javi
Tipovi podataka u javi
 
Virus
VirusVirus
Virus
 
Virus,crv i trojanac
Virus,crv i trojanacVirus,crv i trojanac
Virus,crv i trojanac
 

Recently uploaded

REŠETKASTI NOSAČ Mehanika 1 Masinstvo Masinski elementi Sile Opterecenja
REŠETKASTI NOSAČ Mehanika 1 Masinstvo Masinski elementi Sile OpterecenjaREŠETKASTI NOSAČ Mehanika 1 Masinstvo Masinski elementi Sile Opterecenja
REŠETKASTI NOSAČ Mehanika 1 Masinstvo Masinski elementi Sile OpterecenjaDanijeliriakaMcFlow1
 
Istorija 6. razred okruzno takmicenje 2023 test.pdf
Istorija 6. razred okruzno takmicenje 2023 test.pdfIstorija 6. razred okruzno takmicenje 2023 test.pdf
Istorija 6. razred okruzno takmicenje 2023 test.pdfpauknatasa
 
Istorija kljuc za okruzno takmicenje za 7. razred 2022. godine.doc
Istorija kljuc za okruzno takmicenje za 7. razred 2022. godine.docIstorija kljuc za okruzno takmicenje za 7. razred 2022. godine.doc
Istorija kljuc za okruzno takmicenje za 7. razred 2022. godine.docpauknatasa
 
Razvoj samopouzdanja kod skolskog deteta
Razvoj samopouzdanja kod skolskog detetaRazvoj samopouzdanja kod skolskog deteta
Razvoj samopouzdanja kod skolskog detetaNerkoJVG
 
Istorija kljuc za okruzno takmicenje za 6. razred 2022
Istorija kljuc za okruzno takmicenje za 6. razred 2022Istorija kljuc za okruzno takmicenje za 6. razred 2022
Istorija kljuc za okruzno takmicenje za 6. razred 2022pauknatasa
 
Istorija okruzno takmicenje za 6. razred_20242024.pdf
Istorija okruzno takmicenje za 6. razred_20242024.pdfIstorija okruzno takmicenje za 6. razred_20242024.pdf
Istorija okruzno takmicenje za 6. razred_20242024.pdfpauknatasa
 
prezentacija o uticaju energetskih napitaka na zdravlje dece
prezentacija o uticaju energetskih napitaka na zdravlje deceprezentacija o uticaju energetskih napitaka na zdravlje dece
prezentacija o uticaju energetskih napitaka na zdravlje deceSiniša Ćulafić
 
Profesionalna_orijentacija / Srednja Škola Hipokrat
Profesionalna_orijentacija / Srednja Škola HipokratProfesionalna_orijentacija / Srednja Škola Hipokrat
Profesionalna_orijentacija / Srednja Škola HipokratNerkoJVG
 
Istorija ključ za okruzno takmicenje za 6. razred_2024
Istorija ključ za okruzno takmicenje za 6. razred_2024Istorija ključ za okruzno takmicenje za 6. razred_2024
Istorija ključ za okruzno takmicenje za 6. razred_2024pauknatasa
 
Istorija opstinsko takmicenje za 6. razred - test_2024.pdf
Istorija opstinsko takmicenje za 6. razred - test_2024.pdfIstorija opstinsko takmicenje za 6. razred - test_2024.pdf
Istorija opstinsko takmicenje za 6. razred - test_2024.pdfpauknatasa
 

Recently uploaded (14)

REŠETKASTI NOSAČ Mehanika 1 Masinstvo Masinski elementi Sile Opterecenja
REŠETKASTI NOSAČ Mehanika 1 Masinstvo Masinski elementi Sile OpterecenjaREŠETKASTI NOSAČ Mehanika 1 Masinstvo Masinski elementi Sile Opterecenja
REŠETKASTI NOSAČ Mehanika 1 Masinstvo Masinski elementi Sile Opterecenja
 
Istorija 6. razred okruzno takmicenje 2023 test.pdf
Istorija 6. razred okruzno takmicenje 2023 test.pdfIstorija 6. razred okruzno takmicenje 2023 test.pdf
Istorija 6. razred okruzno takmicenje 2023 test.pdf
 
Istorija kljuc za okruzno takmicenje za 7. razred 2022. godine.doc
Istorija kljuc za okruzno takmicenje za 7. razred 2022. godine.docIstorija kljuc za okruzno takmicenje za 7. razred 2022. godine.doc
Istorija kljuc za okruzno takmicenje za 7. razred 2022. godine.doc
 
Razvoj samopouzdanja kod skolskog deteta
Razvoj samopouzdanja kod skolskog detetaRazvoj samopouzdanja kod skolskog deteta
Razvoj samopouzdanja kod skolskog deteta
 
Istorija kljuc za okruzno takmicenje za 6. razred 2022
Istorija kljuc za okruzno takmicenje za 6. razred 2022Istorija kljuc za okruzno takmicenje za 6. razred 2022
Istorija kljuc za okruzno takmicenje za 6. razred 2022
 
Istorija okruzno takmicenje za 6. razred_20242024.pdf
Istorija okruzno takmicenje za 6. razred_20242024.pdfIstorija okruzno takmicenje za 6. razred_20242024.pdf
Istorija okruzno takmicenje za 6. razred_20242024.pdf
 
OIR12-L2.pptx
OIR12-L2.pptxOIR12-L2.pptx
OIR12-L2.pptx
 
OIR-V10.pptx
OIR-V10.pptxOIR-V10.pptx
OIR-V10.pptx
 
prezentacija o uticaju energetskih napitaka na zdravlje dece
prezentacija o uticaju energetskih napitaka na zdravlje deceprezentacija o uticaju energetskih napitaka na zdravlje dece
prezentacija o uticaju energetskih napitaka na zdravlje dece
 
Profesionalna_orijentacija / Srednja Škola Hipokrat
Profesionalna_orijentacija / Srednja Škola HipokratProfesionalna_orijentacija / Srednja Škola Hipokrat
Profesionalna_orijentacija / Srednja Škola Hipokrat
 
OIR-V9.pptx
OIR-V9.pptxOIR-V9.pptx
OIR-V9.pptx
 
OIR12-L1.pptx
OIR12-L1.pptxOIR12-L1.pptx
OIR12-L1.pptx
 
Istorija ključ za okruzno takmicenje za 6. razred_2024
Istorija ključ za okruzno takmicenje za 6. razred_2024Istorija ključ za okruzno takmicenje za 6. razred_2024
Istorija ključ za okruzno takmicenje za 6. razred_2024
 
Istorija opstinsko takmicenje za 6. razred - test_2024.pdf
Istorija opstinsko takmicenje za 6. razred - test_2024.pdfIstorija opstinsko takmicenje za 6. razred - test_2024.pdf
Istorija opstinsko takmicenje za 6. razred - test_2024.pdf
 

Java

  • 2.
  • 3. 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
  • 4. 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.
  • 5. 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.
  • 6. 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
  • 7. 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.
  • 8. 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
  • 9. 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.
  • 10. 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.
  • 11. 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.
  • 12. 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.
  • 13. 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.
  • 14. 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.
  • 15. 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.
  • 16. 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.
  • 17. 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.
  • 18. 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”
  • 19. 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.
  • 20. 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.
  • 21. 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.
  • 22. 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.
  • 24. 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.
  • 25. 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.
  • 26. 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.
  • 27. 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.
  • 28. 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.
  • 30. 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).
  • 31. 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).
  • 32. 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
  • 33. 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.
  • 34. 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.
  • 35. 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.
  • 36. 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 )
  • 38. 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.
  • 39. 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).
  • 40. 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
  • 41. 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č
  • 42. 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