O berço da linguagem Java é também um projeto da Sun Microsystems, de 1991, chamado de Projeto Green que era um projeto sobre software para produtos eletrônicos de consumo. Objetivava-se que os eletrônicos tivessem um software embarcado que possibilitasse o seu controle via rede de computadores e uma maior interatividade com o usuário.
A linguagem de programação utilizada neste aparelhos deveria proporcionar uma série de benefícios, entre eles a portabilidade, ou seja, um mesmo programa deveria poder ser executado em várias plataformas diferentes de hardware, a eficiência e a perspectiva de vida longa, o que, em outras palavras, pode significar compatibilidade retroativa, ou melhor, os velhos programas deveriam funcionar em plataformas novas.
Assim nasceu Java, uma linguagem sem nome de início e que
foi chamada pelo apelido de café
que os desenvolvedores da Sun
habituavam-se a beber enquanto trabalhavam em projetos para este fim.
Java foi lançada oficialmente pela Sun em 1996 que disponibilizou interpretadores e compiladores de bytecode, um código intermediário entre o código fonte e o código executável. Veremos este conceito de bytecode mais a frente.
Escreva uma vez e execute em qualquer lugar.Este é o
motorde Java, o que impulsionou a linguagem, a característica de compatibilidade do código Java com qualquer hardware. A promessa que navegadores web, telefones, PDAs e outros aparelhos eletrônicos pudessem executar um mesmo código fonte Java ajudou a popularizar a linguagem e atrair novos programadores;
As linguagens de programação, na sua maioria, ou são compiladas ou
interpretadas. Com Java acontecem as duas transformações: o código
fonte Java é inicialmente compilado produzindo
um código intermediário chamado Java bytecode
conhecido por aquivos
com a terminação .class
; só então um interpretador faz um
parse (tradução) e executa
o Java bytecode. Veja um diagrama na Figura abaixo:
Todo interpretador Java, independentemente da plataforma ou do software em que se insere, é conhecido como uma Java Virtual Machine, JVM. Veja a Figura abaixo que ilustra este processo de compilação e interpretação.
Isto garante que todo hardware que executa uma JVM pode execuxtar um mesmo código fonte escrito em Java. A Figura abaixo ilustra esta situação.
Mas enfim, o que é plataforma?
Uma plataforma é o hardware ou o software
em que um sistema, um programa, é executado.
Atualmente este termo é mais utilizado para o conjunto de hardware e
software.
A realidade da plataforma Java, no entanto, é um pouco diferente pois
é entendida como uma plataforma só de software, composta pela JVM e pela
Java API, Java Application Programming Interface. A Java API
é um conjunto
de componentes de software prontos para serem usados. Em Java existem
APIs para uma variedade de aplicações, desde tratamento de recursos
gráficos, a métodos para comunicação em redes, funções matemáticas,
enfim, existem muitas APIs.
Aliás, uma das idéias fundamentais da linguagem é incrementar
este conjunto a medida que for necessário. Veja a Figura abaixo:
Quem visita o site da Sun percebe que existem várias tecnologias Java disponíveis. São estas as principais:
A linguagem também permite a criação de diferentes tipos de programas, entre eles:
A Figura abaixo resume algumas das características e potencialidades de Java. Para SDK entende-se como Standard Developement Kit que é todo o conjunto de APIs, o compilador, o interpretador, o depurador, o gerador de documentação javadoc, entre outros, enfim, um conjunto de ferramentas para trabalhar na linguagem para a construção de um ambiente de software. Por JRE entende-se a JVM.
/** * A classe OlaMundo implementa um codigo que * escreve "Hello world!" no terminal. */ class OlaMundo { public static void main(String[] args) { //Mostra a string System.out.println("Hello world!"); } }
Agora vamos dissecar este código Java:
/*+
e
*/+
.
Já os comentários tipo /** blablabla */
são usados para
documentação do código através do javadoc
. //
é outro
tipo de comentário em que o compilador ignora qualquer caractere escrito
depois dele ;
class
define uma classe com o
nome a seguir. O nome do arquivo deve ser o mesmo nome da classe,
respeitando o tamanho letras maiúsculas e minúsculas;
main()
É o método de entrada de qualquer
aplicação Java. O ponto de início de execução do código. Toda aplicação
exige um método main()
.
Os termos antes da palavra main()
serão explicados mais a diante;
javac arquivo.java
.
Esta chamada provocará a criação de um arquivo .class
.
java arquivo
, e veja o resltado no monitor.
Usaremos algumas convenções para escrever códigos fonte Java. São elas:
Podemos também seguir a convenção abaixo para tabulação e colchetes que é um pouco diferente da preconizada pela litaratura mas talvez seja mais adequada aos iniciantes na linguagem.
/** * comentarios * */ class NomeClasse { comandos_e_declaracoes; void metodo(parametros_entrada) { declaracoes; comandos } }
/** * A classe Saudacao */ public class Saudacao { String oquedizer; public Saudacao() { oquedizer="Ooooi!"; } public void formal() { oquedizer="Bom dia!"; } public void sauda() { System.out.println(oquedizer); } public static void main(String[] args) { Saudacao fala1; fala1 = new Saudacao(); // instanciou fala1.sauda(); fala1.formal(); fala1.sauda(); } }
String oquedizer
;
Saudacao()
;
formal()
que
altera o atributo da classe. O método sauda()
é responsável
pelo cumprimento.
No exemplo anterior, a classe Saudacao
contém a
operação main()
que é a responsável pela execução
da parte do código que instancia a classe.
Para ficar mais didático, propomos a divisão do código fonte
anterior em dois arquivos. Lembrando que cada arquivo deverá
ter o mesmo nome da classe mais a extensão .java
.
Vejamos o que deverá ser o arquivo Saudacao.java
:
/** *Cria objeto que saude, cumprimenta */ public class Saudacao { String oquedizer; public Saudacao() { oquedizer="Ooooi!"; } public void formal() { oquedizer="Bom dia!"; } public void sauda() { System.out.println(oquedizer); } }
E agora o arquivo ExeSauda.java
que contém a definição
da classe de mesmo nome e nesta a operação main()
.
/** Executa o objeto instanciado atraves * de Saudacao.java */ public class ExeSauda { public static void main(String[] args) { Saudacao fala1; fala1 = new Saudacao(); // instanciou fala1.sauda(); fala1.formal(); fala1.sauda(); } }
Pergunta: Quem instancia a classe ExeSauda
?
Resposta: A máquiva virtual Java, chamada atavés da linha
de comando java
.
Estudem, analisem, implementem e executem os arquivos acima.
The First Cup of Javano site da Sun;
javadoc
sobre o último código
fonte Java deste capítulo e repare quantos arquivos
HTML
ele gerou. Use um navegador web para ler o arquivo
index.html
.
(evandro at usp ponto br)