Java Virtual Machine (JVM) je okruženje koje izvršava Java programe. Java programi se kompajliraju u međujezik koji se zove bajt kod, a to je ono što JVM izvršava. Bilo koji program preveden u bytecode može se izvršiti na bilo kojoj platformi koja ima instaliran JVM. To čini Java softver kompatibilnim s mnogim različitim računalnim platformama. JVM ima nekoliko značajnih prednosti i nedostataka koje bi svaki programer trebao pažljivo odvagnuti prije nego što uloži u razvoj Jave.
Neovisnost platforme
Java bajtkod se može napisati jednom, a zatim pokrenuti na više platformi. Java bajt-kod se ne mora prenositi u određeno hardversko okruženje jer se izvodi u Java Virtual Machine. Bilo koja aplikacija sastavljena u Java bajtkod može se izvoditi na bilo kojoj računalnoj platformi koja ima Java Virtual Machine.
Video dana
Sigurnost
Java je napisana sa sigurnošću na umu. Java Virtual Machine ima ugrađene sigurnosne značajke koje programerima omogućuju pisanje vrlo sigurnih Java programa. Također sprječava zlonamjerni softver da kompromituje operativni sustav (OS) jer sprječava Java aplikacije u interakciji s resursima operacijskog sustava.
Izvođenje
Java programi koji se pokreću na Java Virtual Machine imaju tendenciju da rade sporije od ekvivalentnih programa napisanih na C++. Neutralnost sustava bajtkoda djeluje kao nedostatak kada se radi o performansama. To je zato što se optimizacija koda uvelike oslanja na značajke specifične za sustav. Budući da je Java bajtkod neutralan prema sustavu, ne može se optimizirati za određeni skup hardvera.
Ispravnost
Kaže se da je program koji radi očekivano ispravan. Budući da se Java program oslanja na Java Virtual Machine za njegovo izvršavanje, JVM mora biti bez pogrešaka kako bi program ispravno radio. Ovo oslanjanje na Java Virtual Machine uvodi moguću točku kvara za program. Srećom, softver Java Virtual Machine proizveden je po vrlo visokim standardima i stoga nije vjerojatno da će se isporučiti s greškama. Bez obzira na to, kvar u Java Virtual Machine je mogućnost koju treba razmotriti.