Como o Java é uma linguagem independente de plataforma

Mar 13 2023
Os programas de computador estão intimamente relacionados a hardware e sistema operacional específicos. Por exemplo, aplicativos do Windows não podem ser executados no sistema operacional Mac.

Os programas de computador estão intimamente relacionados a hardware e sistema operacional específicos. Por exemplo, aplicativos do Windows não podem ser executados no sistema operacional Mac. Os aplicativos Mac não podem ser executados no sistema operacional Android e assim por diante.

Alguns aplicativos são comuns a todos os sistemas operacionais, como o MS Word, então isso deve ser escrito separadamente para todos os sistemas operacionais?

Para lidar com essa diversidade de plataformas, esses aplicativos devem ser escritos de forma independente para todas as plataformas. Java fornece uma maneira de escrever aplicativos independentes do hardware e dos sistemas operacionais. Assim, é chamada de linguagem de programação independente de plataforma.

O significado de independente de plataforma é que o código compilado java (código de byte) pode ser executado em todos os sistemas operacionais.

Um programa é escrito em uma linguagem legível por humanos. Pode conter palavras, frases, etc. que a máquina não entende. Para que o código-fonte seja compreendido pela máquina, ele precisa estar em uma linguagem compreendida pelas máquinas, normalmente uma linguagem de nível de máquina. Então, aqui vem o papel de um compilador. O compilador converte a linguagem de alto nível (linguagem humana) em um formato compreendido pelas máquinas. Portanto, um compilador é um programa que traduz o código-fonte de outro programa de uma linguagem de programação em código executável.
Este código executável pode ser uma sequência de instruções de máquina que podem ser executadas diretamente pela CPU, ou pode ser uma representação intermediária que é interpretada por uma máquina virtual. Essa representação intermediária em Java é aCódigo de bytes Java.

· O que é uma plataforma e o que é uma linguagem independente de plataforma?
· Compilando um código
· Como um programa é executado em JAVA?
· JVM (Java Virtual Machine)
· Qual é o papel da compilação e interpretação na independência de plataforma?
· Como o Java oferece independência de plataforma?
· Por que o Java não é totalmente independente de plataforma?
· Conclusão

O que é uma plataforma e o que é uma linguagem independente de plataforma?

A plataforma pode ser definida como uma combinação distinta de hardware, sistema operacional e software que fornece um ambiente para executar programas .

A independência da plataforma refere-se à independência do programa do sistema operacional do sistema. Adota a metodologia “Write Once Run Anywhere (WORA)”.

Compilando um Código

Sempre que escrevemos código, aderimos à sintaxe de uma linguagem de programação, que geralmente é legível. Algumas palavras, nomes de variáveis, frases, nomes de métodos, etc., estão incluídos. Todos eles são considerados como literatura que os humanos podem ler e entender.

Como resultado, um computador executa um compilador para transformar o código-fonte em código legível por máquina, também conhecido como linguagem de nível de máquina. O compilador cria o código no nível da máquina em um determinado formato para que a CPU possa entendê-lo facilmente e executá-lo sem erros.

A menos que ambos os computadores sejam executados no mesmo sistema operacional, não podemos executar o código que foi desenvolvido em uma máquina em outra quando uma linguagem de nível de máquina difere em cada sistema operacional. Muitos desenvolvedores e programadores acham que isso é inaceitável. No entanto, o Java simplifica as coisas e inclui uma correção para isso.

Como um programa é executado em JAVA?

Em Java, o compilador converte o programa em bytecode, que não é um código executável. A JVM (Java Virtual Machine) então executa o código de bytes em tempo de execução. O código-fonte Java é compilado em bytecode quando usamos o compilador javac .

O bytecode resultante não é executável por máquina e toda e qualquer outra plataforma ou sistema operacional pode executá-lo. mas requer um interpretador para rodar em um computador. Quando executamos seu programa ou arquivo, obtemos um arquivo .class , que é um arquivo não executável. A JVM serve como este interpretador e, como resultado, executa o Bytecode. A JVM é, sem dúvida, independente de plataforma. Semelhante a como varia dependendo do ambiente. Por exemplo, MAC e Linux têm uma JVM diferente do Windows. Ele suporta a portabilidade como um de seus principais recursos, já que o bytecode portátil de seu código o torna independente de plataforma.

O bytecode é salvo no disco com a extensão de arquivo .class . Quando o programa deve ser executado, o bytecode é convertido, usando o compilador just-in-time ( JIT ). O resultado é um código de máquina que é alimentado na memória e executado.

O código Java precisa ser compilado duas vezes para ser executado:

  1. Programas Java precisam ser compilados para bytecode.
  2. Quando o bytecode é executado, ele precisa ser convertido em código de máquina.

O compilador cria um arquivo OS-dependent.exe quando C ou C++ é usado (essas linguagens não são independentes de plataforma). Este arquivo.exe não será executado quando tentarmos executá-lo em um sistema operacional diferente, pois depende desse sistema operacional e não é compatível com ele.

JVM (Java Virtual Machine)

A JVM, um componente do compilador Java, transforma arquivos .java em arquivos .class. A função chave no código-fonte é chamada de JVM quando compilamos o código Java.

JVM (Java Virtual Machine) atua como um mecanismo de tempo de execução para executar aplicativos Java. A JVM é aquela que realmente chama o método main presente em um código java. A JVM faz parte do JRE (Java Runtime Environment).

Os aplicativos Java são chamados de WORA (Write Once Run Anywhere). Isso significa que um programador pode desenvolver código Java em um sistema e pode esperar que ele seja executado em qualquer outro sistema habilitado para Java sem nenhum ajuste. Tudo isso é possível por causa da JVM.

Quando compilamos um arquivo .java , arquivos .class (contém byte-code) com os mesmos nomes de classe presentes no arquivo .java são gerados pelo compilador Java. Esse arquivo .class passa por várias etapas quando o executamos. Essas etapas juntas descrevem toda a JVM.

Em Java, o ponto principal aqui é que a JVM depende do sistema operacional — portanto, se você estiver executando o Mac OS X, terá uma JVM diferente daquela se estiver executando o Windows ou algum outro sistema operacional. Esse fato pode ser verificado ao tentar baixar a JVM para sua máquina específica — ao tentar baixá-la, você receberá uma lista de JVMs correspondentes a diferentes sistemas operacionais e, obviamente, escolherá qualquer JVM destinada ao sistema operacional que você está correndo. Portanto, podemos concluir que a JVM é dependente de plataforma e é por isso que o Java é capaz de se tornar “independente de plataforma”.

Pontos importantes:

  • No caso do Java, é a magia do Bytecode que o torna independente de plataforma .
  • Isso adiciona um recurso importante na linguagem JAVA denominado como portabilidade . Cada sistema tem sua própria JVM que é instalada automaticamente quando o software jdk é instalado. Para cada sistema operacional JVM separado está disponível, que é capaz de ler o arquivo .class ou código de byte.
  • Um ponto importante a ser observado é que enquanto JAVA é uma linguagem independente de plataforma, a JVM é dependente de plataforma. Diferentes JVMs são projetadas para sistemas operacionais diferentes e o código de byte pode ser executado em sistemas operacionais diferentes.

Para obter independência de plataforma, ele combina compilação e interpretação. Quando um programa é compilado em Java, ele é transformado em bytecode, geralmente conhecido como arquivo .class, em vez de código de máquina. Agora, esse bytecode é algo que o distingue do código de máquina com suas características, pois pode ser movido para/portável para outra plataforma, mas o Java não. Esse bytecode pode ser executado em uma Java Virtual Machine.

Como o Java oferece independência de plataforma?

Na maioria das linguagens de programação, um compilador (ou interpretador) gera código que pode ser executado em uma máquina de destino específica . Por exemplo, se você compilar um programa C++ em uma máquina Windows, o arquivo executável pode ser copiado para qualquer outra máquina, mas só será executado em outras máquinas Windows, mas nunca em outra máquina (por exemplo, uma máquina Mac ou Linux). Uma plataforma é determinada pela máquina de destino (junto com seu sistema operacional). Para linguagens anteriores, os designers de linguagem precisavam criar uma versão especializada do compilador (ou interpretador) para cada plataforma. Se você escrevesse um programa que desejasse disponibilizar em várias plataformas, você, como programador, teria que fazer um pouco de trabalho adicional. Você teria que criar várias versões de seu código-fonte para cada plataforma.

Java conseguiu eliminar o problema da plataforma para programadores de alto nível (como você) porque reorganizou a sequência compilação-link-execução em um nível subjacente do compilador. Os detalhes são complicados, mas, essencialmente, os designers da linguagem Java isolaram os problemas de programação que dependem da plataforma e desenvolveram meios de baixo nível para se referir abstratamente a esses problemas. Conseqüentemente, o compilador Java não cria um arquivo objeto, mas sim um arquivo bytecode que é, essencialmente, um arquivo objeto para uma máquina virtual . Na verdade, o compilador Java costuma ser chamado de compilador JVM (para Java Virtual Machine).

Conseqüentemente, você pode escrever um programa Java (em qualquer plataforma) e usar o compilador JVM (chamado javac) para gerar um arquivo bytecode (arquivos bytecode usam a extensão .class). Este arquivo de bytecode pode ser usado em qualquer plataforma (que tenha Java instalado). No entanto, o bytecode não é um arquivo executável. Para executar um arquivo de bytecode, você realmente precisa invocar um interpretador Java (chamado java). Cada plataforma tem seu próprio interpretador Java, que resolverá automaticamente os problemas específicos da plataforma que não podem mais ser adiados. Quando as operações específicas da plataforma são exigidas pelo bytecode, o interpretador Java vincula o código apropriado específico para a plataforma.

Assim como nas linguagens interpretadas, é possível fazer com que os programas Java sejam executados mais rapidamente compilando o bytecode em um executável; a desvantagem é que esses executáveis ​​só funcionarão na plataforma em que foram criados.

Por que o Java não é totalmente independente de plataforma?

Claramente, o Java não pode ser executado em uma plataforma que não tenha uma JVM. Portanto, no sentido mais literal da palavra, Java não é independente de plataforma. Mas, ao mesmo tempo, sua definição de independência de plataforma não é útil. Nenhuma linguagem possível poderia ser verdadeiramente independente de plataforma, porque algum aspecto da plataforma precisaria ser capaz de analisar a linguagem. E, considerando todas as plataformas possíveis, algumas necessariamente não conseguirão analisá-lo.

Portanto, devido ao fato de que muitas, muitas plataformas executam uma JVM e que o código Java pode ser executado em qualquer JVM com o mesmo significado, Java depende da plataforma.

Conclusão

Java é uma das linguagens de programação mais famosas e amplamente utilizadas. É uma linguagem de programação independente de plataforma . Java não exige que todo o código seja reescrito para todas as diferentes plataformas. Ele suporta independência de plataforma usando Java bytecode e Java Virtual Machine . O compilador Java javac converte o código do programa em código de byte. Esse código de byte é independente de plataforma e pode ser executado em qualquer sistema operacional JVM. A JVM interpreta o código de byte em código de máquina e o programa é executado.

Obrigado pela leitura.Bom aprendizado

Apoie nossa publicação seguindo-a

Como equilibrar um emprego em tempo integral e estudos em meio período? Lançando seu próprio mercado NFT com soluções de plataforma NFT de marca branca Java opcional e qualquer um: lidando com valores nulos e representando dois valores possíveis Pergunta de entrevista baseada em fluxo Java8 mais comum - parte final As 8 principais leis de «As 48 leis do poder» de Robert Greene: Alecrim - como plantá-lo e quais benefícios ele tem