A Java Virtual Machine (JVM) é um ambiente que executa programas Java. Os programas Java são compilados em uma linguagem intermediária chamada bytecode, que é o que a JVM executa. Qualquer programa compilado em bytecode pode ser executado em qualquer plataforma que tenha uma JVM instalada. Isso torna o software Java compatível com muitas plataformas de computação diferentes. A JVM tem algumas vantagens e desvantagens notáveis que qualquer desenvolvedor deve avaliar cuidadosamente antes de investir no desenvolvimento Java.
Independência de plataforma
O bytecode Java pode ser escrito uma vez e executado em várias plataformas. O bytecode Java não precisa ser portado para um ambiente de hardware específico porque é executado na Java Virtual Machine. Qualquer aplicativo compilado em bytecode Java pode ser executado em qualquer plataforma de computação que tenha uma Java Virtual Machine.
Segurança
Java foi escrito com segurança em mente. A Java Virtual Machine possui recursos de segurança integrados que permitem que os programadores escrevam programas Java altamente seguros. Ele também evita que softwares maliciosos comprometam o Sistema Operacional (SO) porque impede que aplicativos Java interajam com recursos do Sistema Operacional.
Desempenho
Programas Java executados em uma Java Virtual Machine tendem a ter um desempenho mais lento do que programas equivalentes escritos em C++. A neutralidade do sistema do bytecode atua como uma desvantagem no que diz respeito ao desempenho. Isso ocorre porque a otimização de código depende muito de recursos específicos do sistema. Como o bytecode Java é neutro para o sistema, ele não pode ser otimizado para um conjunto de hardware específico.
Correção
Um programa que executa, conforme o esperado, é considerado correto. Como um programa Java depende da Java Virtual Machine para executá-lo, a JVM deve estar livre de erros para que o programa funcione corretamente. Essa dependência da Java Virtual Machine apresenta um possível ponto de falha para o programa. Felizmente, o software Java Virtual Machine é produzido com padrões muito altos e, portanto, não é provável que seja fornecido com erros. Independentemente disso, uma falha na Java Virtual Machine é uma possibilidade que deve ser considerada.