Ferramentas de Usuário

Ferramentas de Site


dev_geral:java:tutorial:01_historia

Definir Java

O termo Java é acompanhado de alguma ambiguidade e desinformação, quer por culpa da publicidade e marketing de que foi alvo, quer pelas confusões naturais da Internet e dos seus utilizadores. Neste ponto pretende-se explicar o que é, e o que não é o Java, e definir a que nos referimos quando dizemos "Java".

Java é um termo que designa uma linguagem de programação, uma plataforma onde o código dessa linguagem é executado, e um conjunto de bibliotecas que permitem o desenvolvimento de aplicações usando a linguagem. Para se programar em Java todos estes 3 pontos são usados, e o seu significado está intimamente ligado.

Java, como plataforma é o sistema responsável pela execução, muitas vezes compilação, do código que compõe a aplicação. É um software desenvolvido noutra linguagem, a mais comum sendo C++, que é responsável pela interpretação do código escrito na linguagem Java, e que fornece o ambiente necessário à execução dos programas feitos na linguagem Java. Este software, conhecido como JVM, Java Virtual Machine, é, para todos os efeitos, uma máquina virtual, dentro do sistema operativo, que faz a gestão de memória, iniciação e término das aplicações, e todas as tarefas necessárias para que uma aplicação feita na linguagem Java possa correr.

Java, como linguagem de programação assenta nas tecnologias acima mencionadas e oferece uma linguagem, que em sintaxe é similar a C e C++, com um modelo de objectos mais simples que C++ e com menos funções de baixo nível que C ou C++. Possui uma biblioteca de funções extremamente grande, composta por centenas de classes, que permitem ao programador ter acesso a um vasto conjunto de funcionalidades que pode usar na criação de software.

Existem várias versões da plataforma Java, da linguagem Java e da JVM. Versões para software empresarial, Java EE, que fornecem um conjunto extra de bibliotecas e tecnologias, para dispositivos móveis, Java ME, com conjunto de funcionalidades e consumo de recursos reduzido. Para este artigo iremos focar apenas o Java SE. Este tutorial foca a versão 6 do Java SE embora a versão actual seja a versão 7.

Java como Plataforma

Existem várias implementações da plataforma Java. A mais comum em PCs com sistema operativo Windows é a que foi, inicialmente1), desenvolvida pela Sun Microsystems. Mas existem também implementações criadas pela IBM, Oracle e outros projectos que surgiram com a passagem da tecnologia para software livre, sob uma modificação da GNU GPL2).

Todas estas plataformas possuem diferenças, mas todas elas possuem um conjunto de funcionalidades base que permitem que uma aplicação, desenvolvida usando uma implementação, possa ser executada noutras implementações com o mínimo de alterações. Quando uma plataforma é identificada como sendo 100% compatível, então essa implementação foi sujeita um programa de testes que garantem que a implementação segue os padrões definidos pela Sun, dessa forma, uma aplicação poderá ser executada sem qualquer tipo de alteração, e todas as suas funcionalidades manter-se-ão intactas.

Consoante o objectivo, a plataforma está dividida em: Java Standard Edition, destinada a computadores pessoais, sendo a plataforma mais comum; Java Enterprise Edition, destina a aplicações empresariais3), e que fornece um conjunto mais alargado de bibliotecas, nomeadamente no que toca a acesso a rede, comunicação com Web Services, etc.; Java Micro Edition, usada por dispositivos com recursos limitados, como PDAs, telemóveis ou até usada em equipamentos de domótica, e é composta por um conjunto reduzido de bibliotecas e por optimizações no que toca a consumo de recursos.

Java como Linguagem

Ao nível da linguagem, podemos considerar o Java como mais uma das linguagens de programação que usa uma sintaxe derivada do C, onde as diferentes versões introduzem apenas novas funcionalidades.

Até à versão 1.4, a sintaxe da linguagem manteve-se, praticamente, constante. Sendo as alterações pouco significativas para quem aprende a linguagem neste momento. Mas da versão 1.4 para a versão 54), foi adicionado o suporte para Genéricos, uma funcionalidade importante da linguagem que quebra alguma da compatibilidade gozada nas versões anteriores.

Versões e seus Significados

Uma versão do Java indica sempre características alteradas em toda a tecnologia, mesmo que apenas alguns componentes tenham sofrido modificações. Assim, ao referirmos a versão 6 do Java, estamos a indicar que a versão se aplica tanto à JVM, como à linguagem, ou à plataforma.

A nomenclatura das versões Java sofreu várias alterações durante os anos, reflectindo ideias diferentes ao longo de desenvolvimento, e causando alguma confusão na forma correcta de nos referirmos a uma determinada versão. Isto porque, cada versão de Java, é composta por, pelo menos, 3 formas diferentes de identificação: o número de desenvolvimento, o número da versão e o nome de código.

As versões cujo número de desenvolvimento é inferior a 1.4 eram referidas apenas por esse número de desenvolvimento, ex: Java 1.3. A partir da versão com o número de desenvolvimento 1.4, foi adicionado "Java 2" ao nome, ex: Java 2 SE 1.4. A partir da versão com número de desenvolvimento 1.5, a Sun decidiu retirar o nome "Java 2" e deixar de usar o número de desenvolvimento, passando a existir o Java 5, cujo número interno era 1.5.

Como o Java 6, foram adicionados novos elementos à nomenclatura, os números de update. Estes indicam actualizações importantes mas que não alteram nenhuma das APIs públicas da plataforma. Um exemplo é o update 10, que introduziu profundas melhorias a nível de usabilidade e performance.

Assim, este texto é escrito para a versão do Java que possui um número de desenvolvimento 1.6, número de versão 6, nome de código Mustang e número de update 12, sendo comummente designada por Java 6. Actualmente, o Java SE encontra-se na versão 7.

Visão Geral

A imagem seguinte permite ter uma visão geral dos packages e componentes da plataforma Java

Representação da plataforma Java

Java e a Plataforma Android

Na altura em que este tutorial foi iniciado pouco ou nada se falava da plataforma Android ou de smartphones, os dispositivos móveis comuns eram telemóveis que executavam aplicações Java. Actualmente é comum falar-se de Android, a plataforma/sistema operativo para smartphones da Google, e da programação em Java para estes equipamentos, no entanto é preciso distinguir esta versão do Java das restantes versões.

Para desenvolver aplicações para a plataforma Android usa-se um dialecto da linguagem Java, isto é, usa-se uma sintaxe igual e um conjunto de bibliotecas da plataforma Java para criar as aplicações que são transformadas em bytecode, e estas aplicações são depois convertidas para o formato usado pela plataforma Android. Assim, uma aplicação Java tradicional não pode ser, simplesmente, instalada e executada num smartphone sem antes ser recompilada.

A plataforma Android possui a sua própria máquina virtual, chamada Dalvik, e o formato dos ficheiros compilados é bastante diferente, além disso, as bibliotecas e runtime existentes para a plataforma Android são diferentes das existentes no Java SE, sendo que muitas das classes que formam o Java SE não estão presentes no Java para Android.

Com esta pequena introdução pretende-se apenas deixar claro que o "Java" presente na plataforma Android não é o mesmo que o Java SE 5, 6 ou 7 e que embora a sintaxe da linguagem seja a mesma, as características, capacidades e limitações são bastante diferentes.

Navegação

1)
A Sun Microsystems foi adquirida pela Oracle em 2010.
3)
Entende-se por aplicações empresariais, sistemas que lidam com grandes quantidades de dados, criadas com o objectivo de resolver problemas ao nível da empresa, cujas funcionalidades estão orientadas para determinado negócio.
4)
Ver ponto seguinte sobre o significado das versões.
dev_geral/java/tutorial/01_historia.txt · Última modificação em: 2018/05/14 21:37 (edição externa)