Oglas
Java virtualni stroj (JVM) pravi je kapaljk za pravo ime kada programirate u Javi. Suprotno onome što ime govori, Java Virtual Machine može se naći i u odnosu na ostale programske jezike.
Općenito, nije potrebno znati što je Java virtualni stroj, niti čak ono što radi, da biste mogli programirati u Javi. S druge strane, upoznavanje s unutarnjim radom stroja pomaže vam povećati vaše razumijevanje i opći uvid.
Ovaj članak govori o ideji Java virtualnog stroja, onome što čini za vas i nekim od najvažnijih prednosti i nedostataka. Iako sam se trudio da to bude jednostavno, a na tu temu definitivno postoji naprednija literatura, očekuje se rudimentarno razumijevanje Jave i programiranja.
Jezici na visokoj razini
Semantika programskog jezika dizajnirana je tako da se približi našem prirodnom jeziku, a uz to je stroga i jednostavna za tumačenje stroja. Kao što vjerojatno znate, programski jezik se u potpunosti razlikuje od strojnog koda, skupa upute koje računalo koristi za konstrukciju i pokretanje programa. Ovo mi zovemo
jezici na visokoj razini; jednu ili više razina apstrakcije od strojne šifre.Prije nego što se pokrene, kôd visoke razine prvo mora biti protumačen. Mnogo programskih sučelja sastavi se unaprijed (AOT kompilacija) za određenu platformu. To čini program učinkovitijim za vrijeme izvođenja, ali daleko manje kompatibilnim s različitim platformama. Java, nasuprot tome, radi s intermedijarnim jezikom Java bytecode i the Java virtualni stroj.
JVM i Java Bytecode
Kad se vaš Java projekt izgradi, prevodi izvorni kod (sadržan u *.Java izvorne datoteke) na Java bajt kod (najčešće se nalazi u * .class datotekama). Ovo vodi kôd na visokoj razini jedan korak bliže strojnom kodu, ali još ne sasvim tamo. Ovaj bajt kod je zbirka kompaktnih uputa; lakši za tumačenje stroja, ali manje čitljiv.
Kad pokrenete Java aplikaciju na svom računalu, mobilnom telefonu ili bilo kojoj drugoj platformi koja podržava Java, u stvarnosti prosljeđujete ovaj Java bajt kod na Java Virtual Machine. Tumač u Java virtualnom stroju obično započinje sastavljanje čitavog bajt koda tijekom izvođenja, slijedeći principe tzv. samo-pravovremena kompilacija. To čini tipično, iako često neznatno kašnjenje prilikom otvaranja Java aplikacije, ali općenito poboljšava performanse programa u odnosu na interpretirana kompilacija.
Glavna prednost ovog sustava je povećana kompatibilnost. Budući da se vaše aplikacije pokreću u virtualnom stroju umjesto izravno na vašem hardveru, programer može programirati i jednom sastavi njihovu aplikaciju, koja se zatim može izvršiti na svakom uređaju pomoću implementacije Java Virtual Mašina. Ovaj je princip rodio javanski slogan:Piši jednom, trči svuda.”
Pro: Kompatibilnost i veća sigurnost
Osim kompatibilnosti s kodom, Java Virtual Machine nudi i druge pogodnosti. Jedna od najvažnijih od njih je relativna sigurnost Java programa kao rezultat Java Virtual Machine. Sigurnost, što znači da program koji se izvodi na virtualnom stroju ima puno manju vjerojatnost da će pokvariti korisnički operativni sustav ili pokvariti datoteke s podacima ako dođe do pogreške.
Con: Različite JVM implementacije i uklanjanje pogrešaka
Jedna od glavnih kritika izražena protiv kompatibilnosti koda i Java Virtual Machine je zbog mnogo različitih implementacija potonjeg. Vidite, Java Virtual Machine nije jedan dio softvera. Oracle, vlasnici Jave, implementiraju Java virtualni stroj, ali i drugi mogu dati svoje ako zadovoljava različite praktične i ugovorne zahtjeve.
Ove različite implementacije znače da se vaš kôd nesmetano može pokretati na jednom Java virtualnom stroju, ali srušiti i izgorjeti na drugom. Iako u praksi kôd možete jednom napisati i pokrenuti ga svugdje, složeniji kôd ponekad i dalje je potrebno ukloniti pogreške u različitim implementacijama Java Virtual Machine da bi se osigurao ispravan rad.
Imate li iskustva s radom s Java virtualnim strojem? Ako je tako, postoji li nešto što sam propustio ovdje što bih trebao spomenuti?
Kreditna slika: Michaelaw, Dcoetzee
Ja sam pisac i student računalnih znanosti iz Belgije. Uvijek mi možete učiniti uslugu pomoću dobre ideje za članak, preporuku knjige ili ideju za recept.