You are on page 1of 21

SVEUČILIŠTE/UNIVERZITET „VITEZ“ VITEZ

FAKULTET INFORMACIJSKIH TEHNOLOGIJA

STUDIJ I CIKLUSA; GODINA STUDIJA: I CIKLUS; IV GODINA

SMIJER: INFORMACIJSKE TEHNOLOGIJE

JVM

Travnik, 5.03.2019 godine


SVEUČILIŠTE/UNIVERZITET „VITEZ“ VITEZ
FAKULTET INFORMACIJSKIH TEHNOLOGIJA

STUDIJ I CIKLUSA; GODINA STUDIJA: I CIKLUS; IV GODINA

SMIJER: INFORMACIJSKE TEHNOLOGIJE

STUDIJA IZVODLJIVOSTI

IZJAVA:

Ja Haris Begić, student Sveučilišta/Univerziteta „Vitez“ u Vitezu, Index broj: 0316-15/RIT


odgovorno i uz moralnu i akademsku odgovornost izjavljujem da sam ovaj rad izradio
potpuno samostalno uz korištenje citirane literature i pomoć profesora.

Potpis studenta:

STUDENT: Haris Begić


PREDMET: Napredno java programiranje
PROFESOR: Doc.dr.Alen Doko
ASISTENT: Mr. Dragan Mlakić
SADRŽAJ

1. UVOD ................................................................................................................... 1
1.1 PROBLEM PREDMET I OBJEKT ISTRAŽIVANJA .................................... 1
1.2 SVRHA I CILJEVI ISTRAŽIVANJA ............................................................. 1
1.3 RADNA HIPOTEZA I POMOĆNE HIPOTEZE ......................................... 1
1.2. NAUČNE METODE ..................................................................................... 2
1.5. STRUKTURA RADA ...................................................................................... 2
2. JAVA VIRTUALNA MAŠINA ........................................................................... 3
3. STRUKTURA JVM-a .......................................................................................... 4
3.1 Format class datoteke ......................................................................................... 4
3.2 Vrste podataka.................................................................................................... 4
4. HISTORIJA .......................................................................................................... 5
5. PRIMITINE VRSTE I VRIJEDNOSTI ................................................................ 6
5.1Sastavne vrste i vrijednosti.................................................................................. 6
5.2 Floating-point, vrste vrijednost seta ................................................................... 6
5.3 Tip boolean......................................................................................................... 7
6. REFERENTNE VRIJEDNOSTI I VRSTE .......................................................... 8
7. RUN- TIME DATA PODRUČJA ........................................................................ 8
7.1 Java Virtual Machine Stacks .............................................................................. 9
8. ZADATCI ........................................................................................................... 10
8.1 Sabiranje dva broja ........................................................................................... 10
8.2 Niz .................................................................................................................... 11
8.3Boolean ............................................................................................................. 12
8.4 Ispisivanje informacija o zaposleniku .............................................................. 13
8.5 Ispisivanje programa za izračun i ispis plačanja električne energije .............. 15
8.6 Provjera da je li uneseni podataka cijeli te ako nije ispisuje grešku i poruku .. 16
9. ZAKLJUČAK ..................................................................................................... 17
10. LITERATURA ................................................................................................ 18
1. UVOD

1.1 PROBLEM PREDMET I OBJEKT ISTRAŽIVANJA

U ovom radu ču objasniti svrhu „Java virtuelne mašine“.

1.2 SVRHA I CILJEVI ISTRAŽIVANJA

Svrha istraživanja u ovom radu, je da se prikaže radi Java Virtual Machine -a


kao i njegova struktura, te prije toga i sama povijest oko JVM- a.

1.3 RADNA HIPOTEZA I POMOĆNE HIPOTEZE

Na temelju problema i predmeta istraživanja postavlja se glavna (radna)


hipoteza:

„Svrha istraživanja u ovo„Što je Java Virtual Machine?“m radu, je da se prikaže


radi Java Virtual Machine -a kao i njegova struktura, te prije toga i sama povijest
oko JVM- a“

1
1.2. NAUČNE METODE

U ovom seminarskom radu ću koristiti sljedeće znanstvene (stručne) metode:

 Metoda analize i sinteze,


 Metoda klasifikacije,
 Metoda modeliranja.

1.5. STRUKTURA RADA

Struktura seminarskog rada je usklađena sa uputstvom za pisanje


seminarskog rada na prvom ciklusu studija kao i temi seminarskog rada. On sadrži
pet poglavlja. Prvo poglavlje, uvod, sadrži pet pod poglavlja:

1. Problem, predmet i objekt istraživanja,


2. Svrha i ciljevi istraživanja,
3. Radna hipoteza i pomoćne hipoteze,
4. Znanstvene metode,
5. Struktura rada.

2
2. JAVA VIRTUALNA MAŠINA

Java Virtual Machine je temelj Java platformi. 2 To je komponenta


tehnologije odgovorna za svoj hardver i operacijskom sistem,mala veličina
kompajliranog koda, i njegova sposobnost da zaštiti korisnike od zlonamjernih
programa. Java Virtual Machine je apstraktno računalni stroj. Kao pravi računalni
stroj, to je skup instrukcija i manipulira razna područja memorije u vrijeme
izvođenja.

To je prilično uobičajeno za provedbu programskih jezika pomoću virtualnog stroja,


najpoznatiji virtualni stroj P-Code stroj UCSD Pascal. Prvi prototip im plementacije
Java Virtual Machine, učinjen je od Sun Microsystems, Inc, simuliranoj Java Virtual
Machine set instrukcija u softveru bio je posluzitelj prijenosnih uređaja osobni
digitalni Pomoćnik (PDA). Oracle trenutne implementacije Java Virtual Stroja vrši
na mobilne uređaje, stolna računala i poslužitelje uređaja, ali Java Virtual Machine
ne preuzima nikakvu posebnu implementacije tehnologije, računala, hardver ili
operativni sustav.

To nije svojstveno tumačiti, ali može jednako dobro biti implementirano


prikupljanjem instrukcijski setova s onim na silikonskom CPU. To također može se
provoditi u mikrokod ili izravno u silicij. Java Virtual Machine ne zna ništa o
programskom jeziku Java, samo konkretno od binarnom formatu, format klase
datoteku. Class d atoteka sadržava Java Virtualni stroj za uporabu (ili bytecodes) i
simbol tabelu, kao i druge pomoćne informacije. Radi sigurnosti, Java Virtual
Machine nameće jaka i sintaktička strukturna ograničenja koda u datoteci klase.
Međutim, svaki jezik s funkcionalnošću koja može biti izražena u smislu valjane
klase datoteke može biti poslužitelj Java Virtual Machine. Općenito dostupna,
strojno neovisna platforma, implementatori drugih jezika mogu se obratiti na Java
Virtual Machine, kao „isporuka vozilo“ za njiho ve jezike.

3
3. STRUKTURA JVM-a

Ovaj dokument specificira apstraktni stroj. To ne opisuje bilo posebno provedbu Java
Virtual Machine. Za provedbu Java Virtual Machine ispravno, trebate samo biti u
mogućnosti pročitajte format datoteke klase i pravilno obavljati operacije navedene u
njoj. Provedbeni detalji koji nisu dio Java Virtual Machine specifikaciji nepotrebno
ograničavaju kreativnost implementatora.

Raspored memorije od run- time podataka područja, „odvoz smeća algoritam“


sakuplacki algoritam korišten, i bilo koja unutarnja optimizacija Java Virtual
Machine upute (primjerice, prevodi ih u strojni kod) su ostavljenii na diskreciju
implementatoru.

3.1 Format class datoteke

Kompajlirani kod koji će biti izvršen od strane Java Virtual Machine je zastupljen
pomoću hardvera i operativnog sustava neovisno o binarnom formatu, obično (ali ne
nužno) pohranjuju se u datoteku, poznat kao klase formatu. Oblik klase datoteku
upravo definira zastupljenost klase ili sučelja, uključujući pojedinosti takvih kao bajt
slaganje koji bi mogli biti uzeti zdravo za gotovo u platformi određenih objekt
datoteka formata.

3.2 Vrste podataka

Kao programski jezik Java, Java Virtual Machine djeluje na dva vrste tipova:
primitivni tipovi i referentni tipovi. Tu su, sukladno tome, dvije vrste vrijednosti koje
mogu biti pohranjene u varijablama, prošao kao argument, vraća metode i operira n:
primitivnim i referentnih vrijednosti. 6 Java Virtual Machine očekuje da gotovo sve
vrste provjera učinjene prije vremena pokretanja, obično je kompajler, i ne mora biti
učinjeno od strane Java Virtual Machine. Vrijednosti primitivnih vrsta ne moraju biti
označeni ili na neki drugi način uočeni da se odredi tip vrste u vrijeme izvođenja, ili
ih treba razlikovati od vrijednosti referentnih tipova.

Umjesto toga, upute za postavljanje od Java Virtual Machine razlikuje svog operanda
vrstu pomoću upute namijenjene za rad na vrijednosti specifične vrste. Na primjer,
iadd, Ladd, fadd i dadd su Java Virtual Machine upute kako dodati dvije brojčane
vrijednosti i proizvesti numeričke rezultate, ali svaki je specijaliziran za operanda
tipa: int, long, float, double i, respektivno. Java Virtual Machine sadrži eksplicitne
podršku za objekte.Objekt je bilo dinamički premještena klasa instance ili
niz.Referenca na objekt smatra se da imaju Java Virtual Machine referencu tipa.

4
Vrijednosti tipa referenca može biti smisljena kao pokazivač na objekte. Više p uta
poziv na objekt može postojati. Objekti su uvijek operirali, i testiran putem
vrijednostima tipa reference.

4. HISTORIJA

Java je programski jezik opće namjene, istodobno, objektno -orijentisani jezik.


Njegova sintaksa je slična C i C + +, ali izostavlja mnoge od značajki koje su u C i C
+ + kompleksne, zbunjujuće, i nesigurne . 1 Java platforma je u početku razvijena za
rješavanje problema vezanih uz izgradnju softvera za potrošače umreženih uređaja.
To je osmišljena kako bi podržala više arhitektura i kako bi se omogućila sigurnu
isporuku softverskih ko mponenti. Za ispunjavanje ovih zahtjeva, kompajlirani kod
morao je preživjeti transport preko mreže, raditi na bilo kojem klijentu, i uvjeriti
klijenta da je bezbjedno za pokrenuti. Popularizacijom World Wide Weba su ti
atributi mnogo više zanimljivi.

Web preglednici omogućenili su milijunima ljudi surfanje na internetu i pristup


medijski - bogatom sadržaju jednostavnim načinom. Na kraju tu je medijum gdje ono
sto ste vidjeli i čuli, je u biti isto bez obzira na stroj koji ste koristili i je li povezan s
brzim mrežama ili sporim modemom.Web entuzijasti uskoro otkrivaju da je sadržaj
koji podržava weba HTML dokument format previše ograničen. HTML proširenja,
kao što su oblici, samo su istaknuli ograničenja, a što je jasno da nema preglednika
koji može uključiti sve znač ajke koje bi korisnici htjeli. Prije nego što bude
prihvaćen od strane preglednik, programi su pažljivo provjeriti kako bi bili sigurni.
Kao i HTML stranice, kompajlirani su programi mrežno i od poslužitelja neovisani.
Programi se ponašaju na isti način, bez obzira na to odakle dolaze ili na kakvu se
mašinu učitavaju i pokreću. Web preglednik koji uključuje Java platformu više nije
ograničen na unaprijed postavljene sposobnosti. Posjetitelji Web stranica koje
uključuju dinamični sadržaj mo gu biti sigurni da njihovi strojevi ne mogu biti
oštećeni od strane tog sadržaja.

5
5. PRIMITINE VRSTE I VRIJEDNOSTI

Primitivni tipovi podataka podržani od strane Java Virtual Machine se brojčane vrste,
tipa Boolean, a retu rnAddress tip. Brojčani vrste sastoje od integer vrsta i floating
types vrste.

Objedinjeni vrste su:

 byte, čije vrijednosti su 8 -bitni potpisani two's- nadopunjuju cijeli brojevi, a


čije zadana vrijednost je nula
 short, čije vrijednosti su 16 -bitni potpisani two's- nadopunjuju cijeli brojevi,
a čije zadana vrijednost je nula
 int, čije vrijednosti su 32 -bitni potpisani two's- nadopunjuju cijeli brojevi, a
čije zadana vrijednost je nula
 long, čije vrijednosti su 64 -bitni potpisani two's-nadopunjuju c ijeli brojevi,
a čije zadana vrijednost je nula
 char, čije vrijednosti su 16 -bitni cijeli brojevi bez predznaka predstavljaju
Unicode koda bodova u Osnovnom višejezičnog vrste, kodirani UTF - 16,
čija je zadana i vrijednost null točka koda (' \ u0000')

5.1Sastavne vrste i vrijednosti

Vrijednosti integralnih vrsta u Java Virtual Machine su:

 za bayte, od -128 do 127 (-27 do 27 - 1), uključivo


 za short, -32.768-32.767 (-215 do 215- 1), uključivo
 za int, od -2147483648 do 2147483647 (-231 do 231- 1), uključivo
 za long, od -9223372036854775808 se 9223372036854775807 (-263 do 263
- 1), uključivo
 za Char, 0 -65.535 inclusive

5.2 Floating-point, vrste vrijednost seta

U floating-point vrste spadaju float i double, koji konceptualno povezani s 32-


bitnom jednostrukom preciznošću i 64 -bitni dvostruko precizni formata IEEE 754
vrijednosti i operaci ja, kako je navedeno u IEEE standardu za binarnu pomičnim
zarezom aritmetiku (ANSI / IEEE Std. 754-1985, New York). IEEE 754 standard
uključuje ne samo pozitivni i negativni predznak -magnituda brojeva, ali i pozitivne i
negativne nule, pozitivne i negativn e beskonačnosti, i poseban Ne- broj vrijednost (u

6
daljnjem tekstu skraćeno kao "NaN"). NaN vrijednosti se koristi za zastupanje
rezultat određenih nevažećih operacija poput dijeljenja nule nulom.

Svaka implementacija Java Virtual Machine je potrebna podržat i dva standardna


kompleta floating-point vrijednosti, zvane float vrijednost set i double vrijednost set.
Osim toga, provedba Java Virtual Machine može, po svom izboru, podržavati jedan
ili oba dva produljena eksponenata s pomičnim zarezom seta, pod naziv om float-
produljenim eksponent vrijednost set i double-produljenim eksponent vrijednost set.
Ovim produljenim eksponenta vrijednost setovi mogu, pod određenim okolnostima,
mogu se koristiti umjesto standardnog vrijednosti postavlja tj predstavljanju
vrijednosti tipa float ili double.

Konačne nulte vrijednosti bilo s pomičnim zarezom setu sve se može izraziti u oblik
s ⋅ m ⋅ 2^ (e - N + 1), gdje je s^, +1 ili -1, m je pozitivan cijeli broj manji od 2N, te e
je cijeli broj između mjesta Emin = - (2^K-1 -2) i Emax = 2^K-1 - 1, uključivo, i
gdje je N i K su parametri koji ovise o vrijednosti skupa. Neke vrijednosti mogu biti
zastupljene u ovom obliku u više od jednog načina, primjerice, misleći da vrijednost
v u vrijednosti skupa može biti predstavljena u ovom obliku pomoću određene
vrijednosti za e, m, i E, onda, ako bi se dogodilo da su čak i m e manji od 2^K -1,
jedan mogao prepoloviti m i povećati e po jedan za proizvodnju drugi prikaz za istu
vrijednost v. Reprezentacije u ovom obliku se zove normalizirana a ko m ≥ 2^N -1, u
protivnom zastupljenost je rekao da se denormalizirana. Ako je vrijednost u
vrijednosti skupa ne može biti predstavljeni na takav način da je m ≥ 2^N -1, tada se
za vrijednost kaže da je denormalized vrijednost, jer ne ma normaliziranu
zastupljenost.

Ako jedna ili obje s produljenim eksponentima vrijednosni setovi su podržani od


strane implementacije, onda za svaki podržani produljenim eksponent vrijednosti
postavljena je specifična provedbu ovisna konstanta K, čija je vrijednost ograničena
ta vrijednost K pak diktira vrijednosti za Emin i Emax. Svaki od četiri vrijednosti
seta uključuje ne samo nule konačnih vrijednosti koje su pripisati njemu, već također
i pet vrijednosti pozitivnih nula, nula negativnu, pozitivna beskonačnost, negativna
beskonačnost, i Nan. Imajte na umu da su ograničenja u osmišljena tako da svaki
element float vrijednost set je nužno i element float-produljenim eksponent
vrijednosti set, set double vrijednost i double- produljenim eksponent vrijednost set.
Isto tako, svaki element u dvostruko produzenom vrijednosnom setu je nužno i
element doubleextended - eksponent vrijednost postavljena.

5.3 Tip boolean

Iako Java Virtual Machine određuje logičku tip, ona daje samo vrlo ograničenu
podrška za njega. U Java Virtual Machine nema naredbe za uporabu isključivo
posvećene oper aciji na Boolean vrijednosti. Umjesto toga, izrazi u Java

7
programskom jeziku koja radi na Boolean vrijednosti sastavljaju se i koriste
vrijednosti od Java Virtual Machine int tip podataka. Java Virtual Machine izravno
ne podržavaju Boolean polja. njegova newarray upute (§ newarray) omogućuje
stvaranje Boolean polja.

Nizovi tipa Boolean se mogu pristupiti i mijenjati pomoću byte polja upute i baload
bastore (§ baload, § bastore). U Oracle Java Virtual Machine provedbi, Boolean polja
u Java programski jezik koji se kodira kao Java Virtual Machine byte nizovima,
pomoću osam bita po Boolean elementa. Java Virtual Machine kodira Boolean array
komponente pomoću jedan za zastupanje istina, a 0 zastupati lažna. Gdje Java
programski jezik boolean vrijednosti se preslikavaju prevodiocima na vrijednostima
Java Virtual Machine tipa int, i prevodioci moraju koristiti isti kod za kodiranje

6. REFERENTNE VRIJEDNOSTI I VRSTE

Postoje tri vrste referentnih tipova: klase vrste, tipova nizova, sučelje vrste. Njihove
vri jednosti su reference na dinamički stvorene klase slučajevima, nizovi, ili klase
instance ili nizovi koji implementiraju sučelja, respektivno. Niz vrstu čine sastavni
tipovi sa jednom dimenzijom (čija je duljina se ne daje tipu).Komponenta vrsta niz
tipa m ože biti sama niz tipa. Ako, počevši od bilo koje vrste polja, jedan smatra da
je njezine komponente tip, a zatim (ako je i niz tipa) komponenta vrsta tog tipa, i
tako dalje, na kraju mora doći do komponente tip koji nije lepezu tipa, a to se zove
elementa vrsta od polja tipa.Element vrsta niz tipa je nužno bilo primitivni tip, ili
klase tipa, odnosno vrsta sučelja.

Referentna vrijednost također može biti posebna null reference, pozivom na broj
predmeta, koji će biti obilježeni ovdje null.Null reference početku nema run -time
tip, ali može biti izbačen na bilo koju vrstu.Zadana vrijednost referentnog tipa je null.
Java Virtual Machine specifikacija ne propisuje konkretne vrijednosti kodiranja null.

7. RUN- TIME DATA PODRUČJA

Java Virtual Machine definira r azličite run - time podatke područja koja se koriste u
izvršenje programa. Neki od tih podataka su stvorili područja na Java Virtual Stroj
za start- up i uništeni su samo kada Java Virtual Machine izlazi. Ostali podaci su
područja po nit. Po -nit podataka prostori se stvorio kada se nit stvaraja i uništavaju
kada su nit izlazi.

8
7.1 Java Virtual Machine Stacks

Svaki Java Virtual Machine nit ima privatnu Java Virtual Machine hrpu, stvorenu u
isto vrijeme kao i niti. Java Virtual Machine stog pohranjuje u okvire. Java Virtual
Machine stog analogan je hrpom konvencionalnog jezika kao što su C: drži lokalne
varijable i nepotpunim rezultatima, i igra važnu ulogu u načinu pozivanje i povratak.
Zbog Java Virtual Machine stog nikad se manipulira izravno, osim za push i pop
okviri, okviri mogu biti dodijeljeni gomili memorije za Java Virtual Machine stog ne
moraju biti susjedne. U Java Virtual Machine specifikaciji, Prvo izdanje, Java Virtual
Machine stog bio je poznat kao Java stog.

ava Virtual Machine provedbu može osigurati programer ili kontrola korisnika preko
početne veličine Java virtualni stroj stogova, kao i, u slučaju dinamičkog širenja ili
ugovaranje Java Virtual Machine hrpe, kontrola nad maksimalne i minimalne
veličine. Sljedeći iznimni uvjeti su povezani s Java Virtual Machine stogovima:

 Ako računanja u nit zahtijeva veći Java Virt ual Machine snop od dopušteno,
Java Virtual Machine baca StackOverflowError.
 Ako Java Virtual Machine hrpe mogu dinamički biti proširen, i širenje
pokušao, ali nedovoljno memorije može se staviti na raspolaganje utjecati na
širenje, ili ako je dovoljno m emorije može biti dostupan za stvaranje početne
JavaVirtual Machine stog za novu temu, Java Virtual Machine baca
OutOfMemoryError.

9
8. ZADATCI
Za pisanje i izvršavanje ovih zadataka koristio sam program jGrasp.

8.1 Sabiranje dva broja

10
8.2 Niz

11
8.3Boolean

12
8.4 Ispisivanje informacija o zaposleniku

13
// u kodu ispod nalazi se glavna klasa kao i glavna main() metoda

14
8.5 Ispisivanje programa za izračun i ispis plačanja električne energije

15
8.6 Provjera da je li uneseni podataka cijeli te ako nije ispisuje grešku i
poruku

// ako nije cijeli broj onda ispisuje poruku ispod

16
9. ZAKLJUČAK

Na osnovu rada, glavna hipoteza je zadovoljena,po pitanju što je to zapravo JVM,u


samoj strukturi je ispisano da je to apstraktni stroj,koji služi za emulaciju
kompajliranog koda iz Java programskog jezika. Znači,da taj stroj ne postoji u
fizičkom obliku,te da pored toga,što je apstraktan,jako je bitan za izvedbu,koda
generisanog putem Java programskog jezika.

Sa ovime napisanim,automatski potvrđujem da su zadovoljene i sve pomoćne


hipoteze,jer je glavna hipoteza u korelaciji sa pomoćnim hipotezama,stoga daljnja
istraživanja nisu potrebna. Ipak kako je JVM temelj na kojem Java programski jezik
radi,u istraživanju sam naveo i par osnovnih karakteristika,poput vrste podataka i
tipova podataka sa kojim JVM raspolaže.

Između ostaloga sam napravio i korelaciju floating point -ima,sa IEEE 754. Te usput
rad raspolaže i jako velikim informacijama o vrijednostim tipovima i
referencama,kao i metod okruženju

17
10. LITERATURA

 https://jcp.org/aboutJava/communityprocess/maintenance/jsr924/JVM
S-SE5.0-Ch3-Overview.pdf
 https://www.jopdesign.com/teaching/JavaJVM.pdf
 http://www.cse.psu.edu/~axs53/497b/lectures/lecture5.pdf
 https://en.wikipedia.org/wiki/IEEE_754
 https://docs.oracle.com/javase/specs/jvms/se7/jvms7.pdf

18

You might also like