Java Virtual Machine (JVM) e Princípios de plataforma cruzada <Br /> Acredito que todo mundo aprendeu que Java possui recursos de plataforma cruzada, podem ser "compilados de uma só vez e executados em todos os lugares". Modificações.
Então, como a plataforma cruzada é implementada? Isso envolve falar sobre Java Virtual Machine (JVM).
A JVM também é um software e plataformas diferentes têm versões diferentes. O código -fonte Java que escrevemos gerará um arquivo .class chamado um arquivo bytecode após a compilação. A Java Virtual Machine é responsável por traduzir o arquivo bytecode para o código da máquina em uma plataforma específica e executá -la. Em outras palavras, desde que a JVM correspondente seja instalada em diferentes plataformas, você pode executar o arquivo ByteCode e executar o programa Java que escrevemos.
Durante esse processo, o programa Java que escrevemos não fez alterações.
A JVM é uma "ponte" e um "middleware" que é a chave para a implementação cruzada. propósito.
Nota: O resultado da compilação não é gerar código da máquina, mas gerar bytecode. O bytecode gerado por compilação e geração em diferentes plataformas é o mesmo, mas o código da máquina traduzido pela JVM é diferente.
Portanto, a execução dos programas Java deve ter suporte à JVM, porque o resultado da compilação não é o código da máquina e deve ser traduzido novamente pela JVM antes da execução. Mesmo se você empacotar programas Java em executáveis (como .exe), você ainda precisará de suporte à JVM.
Nota: Programas Java de plataforma cruzada, não JVMS. O JVM é desenvolvido em C/C ++ e é compilado o código da máquina.
Sobre a eficiência de execução da JVM
Nos últimos anos de lançamento de Java, as pessoas tinham opiniões diferentes.
No entanto, a JVM tem a opção de traduzir e salvar o bytecode mais frequentemente usado no código da máquina, um processo conhecido como compilação instantânea. Esse método é realmente muito eficaz, o que levou ao uso de máquinas virtuais na plataforma .NET da Microsoft.
Os compiladores oportunos agora são excelentes e até se tornaram concorrentes dos compiladores tradicionais e, em alguns casos, até superam os compiladores tradicionais porque a JVM pode monitorar as informações de tempo de execução. Por exemplo, um compilador instantâneo pode monitorar e otimizar o código usado com frequência, eliminando as chamadas de função (ou seja, "incorporado").
No entanto, o Java tem algumas despesas gerais adicionais que C/C ++ não possui e os principais aplicativos são mais lentos. Por exemplo, o Java adota um método de desenho independente da plataforma, e a execução de programas da GUI (programas de clientes) é lenta;
O fracasso do mercado de clientes
A biblioteca GUI da Java não é excelente, a interface não é amigável e a maioria dos usuários não está acostumada;
O que é ainda mais inaceitável é que, depois que a Microsoft divide seus próprios interesses e Sun, o Windows não possui mais a JVM pré-instalada. .
Embora você possa integrar a JVM ao seu programa, instalar e configurá -la automaticamente e não permitir a intervenção do usuário, deseja vir com uma JVM muito maior que o seu programa? Pode ser aceitável para um software fazer isso. Quanto o espaço em disco é desperdiçado?
Portanto, poucos programas de clientes para usuários comuns que são lançados diretamente no mercado são desenvolvidos no Java. Se você deseja se envolver no desenvolvimento do cliente, é recomendável aprender C/C ++ e .NET, que têm grandes vantagens no desenvolvimento de clientes de janelas.
Várias razões estão destinadas a ser desfavoráveis para serem introduzidas no mercado e são aceitas por usuários comuns. Mas, novamente, o desenvolvimento do cliente não é a intenção original do Java.
Java Classes and Objects Concepts
O Java é uma linguagem de programação orientada a objetos. Para entender o Java, você deve primeiro entender os conceitos de classes e objetos.
As classes em Java podem ser consideradas uma versão atualizada das estruturas no idioma C. Uma estrutura é um tipo de dados construído que pode conter membros diferentes (variáveis) e os tipos de dados de cada membro podem ser diferentes; Por exemplo:
#include <stdio.h> int main () {// Defina o aluno da estrutura da estrutura {// o nome da variável *; / Membros da estrutura de operação STU1.NAME = "Xiao Ming"; nome, stu1.age, stu1.score); Resultados em execução:
A idade de Xiao Ming é de 15 anos e sua nota é 92.500000
As classes em Java também são um tipo de tipo de construção de dados, mas foram estendidas. Por exemplo:
classe pública de demonstração {public static void (string [] args) {// Definir classe Student Student {// Definir classe através da classe de palavra -chave // variáveis contidas no nome da string da classe; A função incluída void diz () {System.out.println (Nome + "A idade é" + Age + ", a pontuação é" + pontuação); Student STU1 = novo aluno (); ); Resultados em execução:
A idade de Xiao Ming é 15 e sua nota é 92,5
No idioma C, a definição de variáveis de estrutura pode ser concluída pelo nome da estrutura e pelo espaço da memória pode ser alocado; espaço.
A analogia pode ser comparada aos desenhos, os objetos podem ser comparados às peças e os desenhos explicam os parâmetros das peças e as tarefas que eles realizam;
No Java, usando a nova palavra -chave, você pode criar objetos através de classes, ou seja, produzindo desenhos em partes.
Nota: A classe é apenas um desenho que reproduz uma explicação e não ocupa o espaço de memória;
As variáveis e funções contidas em uma classe têm nomes específicos.
Programação orientada a objetos (OOP)
As aulas são um conceito geral. As classes podem ser consideradas uma versão atualizada das estruturas. -Projetos de tamanho.
Como Java, C ++ e outras linguagens suportam classes e objetos, a redação de programas nesses idiomas também é chamada de programação orientada a objetos, e essas linguagens também são chamadas de linguagens de programação orientadas a objetos. Como o idioma C não suporta os conceitos de classes e objetos, ele é chamado de linguagem de programação orientada ao processo.
De fato, orientado a objetos, é apenas uma atualização orientada ao processo.
No idioma C, os blocos de código reutilizados que concluem uma determinada função podem ser definidos como funções, e as funções com uma classe de funções são declaradas em um arquivo de cabeçalho, e as funções de diferentes tipos são declaradas em diferentes arquivos de cabeçalho para executar funções Melhor gerenciamento, fácil de escrever e ligar.
Em Java, o bloco de código que conclui uma determinada função pode ser definido como um método, e métodos com funções semelhantes podem ser definidos em uma classe, ou seja, em um arquivo de origem (porque um arquivo de origem pode conter apenas uma classe pública), Vários arquivos de origem podem estar localizados em uma pasta, que possui um nome específico chamado pacote.
O acima é C ++, enquanto Java é:
A programação orientada a objetos não tem absolutamente vantagem na eficiência da execução de software.