Aprenda sobre Java, o que é e por que é tão popular

O Inside Java oferece um vislumbre da plataforma Java e tecnologias relacionadas. Na coluna deste mês, mostrarei uma visão geral da linguagem de programação Java.

Java - uma ilha da Indonésia, um tipo de café e uma linguagem de programação. Três significados muito diferentes, cada um em vários graus de importância. A maioria dos programadores, no entanto, está interessada na linguagem de programação Java. Em apenas alguns anos (desde o final de 1995), Java levou a comunidade de software à tona. Seu sucesso fenomenal tornou o Java a linguagem de programação de mais rápido crescimento de todos os tempos. Há muito hype sobre Java e o que ele pode fazer. Muitos programadores e usuários finais estão confusos sobre exatamente o que é e o que o Java oferece.

Java é uma linguagem revolucionária

As propriedades que tornam o Java tão atraente estão presentes em outras linguagens de programação. Muitas linguagens são ideais para certos tipos de aplicativos, até mais do que Java. Mas Java traz todas essas propriedades juntas, em um idioma. Este é um salto revolucionário para a indústria de software.

Vamos ver algumas das propriedades em mais detalhes:

Orientado a Objeto

Muitas linguagens mais antigas, como C e Pascal, eram linguagens procedurais. Procedimentos (também chamados de funções) eram blocos de código que faziam parte de um módulo ou aplicativo. Procedimentos passados parâmetros (tipos de dados primitivos como números inteiros, caracteres, seqüências de caracteres e números de ponto flutuante). O código foi tratado separadamente para os dados. Você tinha que passar por estruturas de dados, e os procedimentos poderiam facilmente modificar seu conteúdo.

Java é uma linguagem orientada a objetos. Uma linguagem orientada a objetos lida com objetos. Objetos contêm dados (variáveis de membro) e código (métodos). Cada objeto pertence a uma classe específica, que é um blueprint descrevendo as variáveis e os métodos dos membros que um objeto oferece. Em Java, quase toda variável é um objeto de algum tipo ou outro - até mesmo strings. A programação orientada a objetos requer uma maneira diferente de pensar, mas é um

Portátil

A maioria das linguagens de programação é projetada para um sistema operacional e arquitetura de processador específicos. Quando o código fonte (as instruções que compõem um programa) são compilados, ele é convertido em código de máquina que pode ser executado apenas em um tipo de máquina. Este processo produz código nativo, que é extremamente rápido.

Outro tipo de linguagem é aquele que é interpretado. O código interpretado é lido por um aplicativo de software (o intérprete), que executa as ações especificadas. Muitas vezes, o código interpretado não precisa ser compilado - ele é traduzido enquanto é executado. Por esse motivo, o código interpretado é bastante lento, mas geralmente é portável em diferentes sistemas operacionais e arquiteturas de processadores.

Java usa o melhor das duas técnicas. O código Java é compilado em um código de máquina neutro da plataforma, que é chamado bytecode Java. Um tipo especial de intérprete, conhecido como Java Virtual Machine (JVM), lê o bytecode e o processa. A Figura 1 mostra uma desmontagem de um pequeno aplicativo Java. O bytecode, indicado pela seta, é representado em forma de texto aqui, mas quando compilado é representado como bytes para economizar espaço.

Multi-threaded

Se você já escreveu aplicativos complexos em C ou PERL, provavelmente já se deparou com o conceito de vários processos antes. Um aplicativo pode se dividir em cópias separadas, que são executadas simultaneamente. Cada cópia replica código e dados, resultando em maior consumo de memória. Fazer as cópias conversarem juntas pode ser complexo e frustrante. Criar cada processo envolve uma chamada para o sistema operacional, que também consome mais tempo de CPU.

Um modelo melhor é usar vários encadeamentos de execução, chamados de encadeamentos. Os threads podem compartilhar dados e códigos, facilitando o compartilhamento de dados entre instâncias de thread. Eles também usam menos memória e sobrecarga de CPU. Algumas linguagens, como C ++, têm suporte para threads, mas são complexas para serem usadas. Java tem suporte para vários encadeamentos de execução integrados diretamente no idioma. Tópicos exigem uma maneira diferente de pensar, mas podem ser entendidos muito rapidamente. O suporte a threads em Java é muito simples de usar, e o uso de threads em aplicativos e applets é bastante comum.

Coleta de lixo automática

Não, nós não estamos falando sobre tirar o lixo (embora um computador que poderia literalmente fazer isso seria legal). O termo coleta de lixo refere-se à recuperação de espaço de memória não utilizado. Quando os aplicativos criam objetos, a JVM aloca espaço de memória para seu armazenamento. Quando o objeto não é mais necessário (não existe referência ao objeto), o espaço de memória pode ser recuperado para uso posterior.

Seguro

A segurança é um grande problema com o Java. Como os applets Java são baixados remotamente e executados em um navegador, a segurança é uma grande preocupação. Não queremos que os applets leiam nossos documentos pessoais, excluam arquivos ou causem danos. No nível da API, há fortes restrições de segurança no acesso a arquivos e rede para applets, bem como suporte a assinaturas digitais para verificar a integridade do código baixado. No nível do bytecode, são feitas verificações de hacks óbvios,

Rede e "Internet" ciente

Java foi projetado para ser "ciente da Internet" e para suportar a programação de rede. A API Java fornece amplo suporte de rede, de soquetes e endereços IP, a URLs e HTTP. É extremamente fácil escrever aplicativos de rede em Java, e o código é completamente portátil entre plataformas. O Java também inclui suporte para programação de rede mais exótica, como RMI (Remote Method Invocation), CORBA e Jini. Essas tecnologias de sistemas distribuídos tornam o Java uma opção atraente para grandes sistemas distribuídos.