1.3 BAJT CODE

 

Magija Jave: bajt kôd

Ono što Javi omogućuje da rješi upravo pomenute probleme bezbjednosti i prenosivosti jeste činjenica da prevodilac jezika Java ne generiše izvršni kôd, već. tzv. bajt kôd. Bajt kôd (engl. bytecode) je visokooptimizovan skup instrukcija koji u trenutku pokretanja programa tumači Javin izvršni sistem, poznat kao Javina virtuelna mašina (Java Virtual Machine, JVM). Drugim rječima, u svom standardnom obliku, JVM je interpretator bajt koda.C++ se odmah prevodi u izvršni kôd. U stvari, većina savremenih jezika namjenjena je direktnom prevođenju u izvršni kôd, a ne interpretiranju - najčešće zbog postizanja boljih performansi. Međutim, činjenica da Java programe izvršava JVM, pomaže da se rješe glavni problemi povezani sa preuzimanjem programa sa Interneta.

Prevođenje Java programa u bajt kôd omogućuje mnogo lakše izvršavanje u različitim okruženjima. Objašnjenje je jednostavno: za različite platforme potrebno je napraviti samo različite virtuelne mašine. Kada se u određeni sistem jednom ugradi odgovarajući paket za izvršavanje, na sistemu će moći da se pokrene svaki Java program. Iako će Javina virtuelna mašina biti drugačija na različitim platformama, bajt kôd će uvek biti preveden na isti način. Kada bi se Java programi direktno prevodili u izvršni kôd odgovarajućih mašina, onda bi morale postojati različite verzije programa za svaki procesor priključen na Internet. To, naravno, nije pogodno rješenje. Iz rečenog proizlazi da je interpretiranje bajt koda najjednostavniji način pravljenja uistinu prenosivih programa.

Prevođenje Java programa u trenutku njihovog izvršavanja čini ih i bezbednijim. Pošto izvršavanjem svakog Java programa upravlja JVM, ova virtuelna mašina može potpuno da obuhvati program, onemogućavajući mu da sporednim efektima remeti okolni sistem. Kasnije ćete vidjeti da je bezbjednost još i povećana određenim ograničenjima koja postoje u jeziku Java.

Kada se program interpretira, on će se izvršavati znatno sporije nego da je prethodno direktno preveden u izvršni kôd. Međutim, u Javi ova razlika u vremenu izvršavanja nije tako velika. Korišćenje bajt koda omogućuje Javinom izvršnom sistemu da programe izvršava mnogo brže nego što biste očekivali.