|
1. Introdução ao Java
Princípios
A linguagem Java é considerada
uma das melhores linguagens de programação já
disponibilizadas para programadores profissionais. O Java foi desenvolvido
utilizando-se de elementos de outras linguagens, como C e C++, e
com bibliotecas em tempo de execução visando independência
de plataforma e voltada para o ambiente da Internet. Mas a utilização
do Java não se limita apenas à aplicativos da Web.
Ele vem sendo bastante utilizado em diversas áreas como na
de telefonia, voz, audio, vídeo, cartões inteligentes,
etc. A gama de dispositivos em que o Java vem sendo utilizado abrange
não só computadores pessoais como também computadores
portáteis, pagers, telefones, impressoras, controles remotos,
relógios, etc.
A sintaxe do Java é semelhante
à do C++, porém simplificada. Fica muito mais fácil
desenvolver códigos sem erros com o Java pois ele possui
recursos que evitam que o programador cometa erros comuns presentes
em outras linguagens.
Segundo a Sun, o Java foi projetado
para ser simples, orientado à objeto, distribuído,
seguro, portável, interpretado, de arquitetura neutra, robusto,
de alto desempenho, multithreaded e dinâmico.
Simples
– O Java foi criado baseando-se no C++, a fim de tornar a linguagem
mais compreensível. Porém é muito mais prático
e fácil de se programar;
Orientado à
objeto – Como no C++, o java tem as vantagens da programção
orientada a objeto. Porém, ele é considerado mais
orientado a objetos que o C++. Todos os programas java consistem
em objetos;
Distribuido
– Com uma extensa biblioteca de classes, o java trabalha muito bem
com os protocolos http, ftp e tcp/ip, simplicando muito o trabalho
em rede. Este é um dos motivos pelo qual o Java se tornou
uma das linguagens preferidas para aplicações em rede;
Seguro
– Como o Java foi criado para o trabalho em rede/distribuido, ele
tem uma arquitetura que fornece múltiplas camadas de checagem
de segurança, permitindo a criação de sistemas
livres de alterações e de vírus;
Portável
– Os tamanhos dos tipos de dados e a forma como serão utilizados
são especificados, não dependendo da implementação.
Já em C/C++ um mesmo tipo de dado pode ter tamanho diferente
dependendo do compilador;
Interpretado
– O Java foi criado tendo-se em mente aplicativos para internet,
isto é, foi construído para ser interpretado de maneira
idêntica em diferentes plataformas;
Arquitetura Neutra
– O compilador Java gera um código neutro, isto é,
pode ser executado em muitos processadores, bastando que o sistema
operacional local possua o módulo Java de tempo de execução.
Um código compilado em uma plataforma pode rodar em qualquer
outra;
Robusto
– O Java foi criado para o desenvolvimento de programas confiáveis.
Ele tenta encontrar possíveis problemas ou situações
que podem causar erros. Uma das principais vantagens do Java sobre
o C/C++ é que o Java usa um modelo de poteiros que não
permite a sobrescrita de memória;
Alto desempenho
– Os bytecodes do java podem ser transformados em código
de máquinas da CPU em tempo de execução, nos
momentos em que seja necessário um desempenho maior;
Multithreaded
– O Java é multithread, isto é, pode realizar várias
tarefas ao mesmo tempo, o que possibilita o trabalho em tempo real;
Dinâmico
– O Dinamismo do Java é uma grande vantagem, pois podemos
adicionar códigos a um programa em execução.
Esta característica é importantíssima, quando
a aplicação é baseada na internet.
Outras características do Java:
- Não é permitido herança múltipla. No lugar utiliza-se o conceito de interface;
- Não existe aritmética de ponteiros. O Java possui arrays verdadeiros;
- Permite facilmente o desenvolvimento de aplicações tanto do lado servidor como do lado cliente;
Possui um gerenciamento de memória
automático (coleta de lixo automática), que permite
que o programador não se preocupe com a falta de memória;
Ferramentas Java
As ferramentas básicas para
desenvolvimento Java são fornecidas pela SUN num pacote chamado
JDK, dependente de plataforma. O pacote referente à documentação
é independente de plataforma, e é distribuído
separadamente.
A Máquina Virtual Java (JVM)
A Máquina Virtual Java é
uma máquina imaginária que é implementada através
de sua emulação em um software contido em uma máquina
real. As instruções nos programas Java são
compiladas para se obter os bytecodes, que serão executados
em qualquer processador e sistema operacional que possua um interpretador
Java (cada plataforma possui o seu interpretador específico).
O seu aplicativo pode ser executado em todos os sistemas que oferecem
suporte a Java.
O JDK (Java Development Kit)
Os releases mais comuns do JDK para
a versão Java 2 são para as seguintes plataformas:
- Win32 para sistemas operacionais Windows95, Windows 98 e Windows NT 4 em CPUs com arquitetura intel
- Sistema operacional Solaris em CPUs SPARC
- Sistema operacional Solaris em CPUs Intel
A versão do JDK 1.2.1 para sistemas
Win32, cuja nomenclatura dada pela sun é "Java 2
Platform", requer em torno de 65MB de espaço em
disco para a instalação completa.
Ferramentas RAD do Mercado
Encontra-se no mercado ferramentas
RAD para desenvolvimento de códigos em Java como por exemplo
o Java WorkShop da Sun, o Visual Café da Symantec
e o JBuilder da Inprise. Essas ferramentas facilitam o projeto
e desenvolvimento de interfaces de programas e de códigos
que não envolvem interface gráfica.
A Documentação
O arquivo compactado referente à
documentação contendo a biblioteca padrão completa
é chamado de jdk12-doc.zip (16MB). Este pacote requer em
torno de 85MB de espaço em disco.
2. Conceitos Fundamentais
Coleta de Lixo
Em diversas linguagens de programação
o programa desenvolvido é responsável pela alocação
e desalocação de memória em tempo de execução.
Se o programa não for bem desenvolvido, pode ser que ele
fique sem memória.
No Java, o desenvolvedor não
precisa mais se preocupar em desalocar memória pois existe
uma thread em segundo plano (thread de coleta de lixo)
que registra toda e qualquer alocação de memória,
assim como também mantém o controle do número
de referências de cada ponteiro de memória. Então,
em tempo de execução, o Java verifica se as variáveis
de memória estão sendo utilizadas, e desaloca automaticamente
aquelas cujo número de referências seja igual a zero.
Segurança de Código
Os arquivos Java são compilados
e convertidos para um formato independente de plataforma chamado
byte-codes.
Já em tempo de execução,
esses códigos de bytes são carregados por um carregador,
passam por um verificador e finalmente por um interpretador em tempo
de execução. Além de executar o código,
este interpretador também faz chamadas apropriadas para o
hardware.
Caso seja executado diversas vezes,
alguns ambientes de tempo de execução permitem que
o código de bytes verificado seja compilado diretamente no
código original da máquina e executado diretamente
na plataforma de hardware.
Compilando
Apesar de existir diversos ambientes
de desenvolvimento Java, você deve estar familiarizado com
o JDK da Sun. Os executáveis básicos do JDK 1.2 mais
utilizados são:
- javac à Compilador Java
- java à Executor das aplicações Java
- javadoc à Gerador de documentação
- appletviewer à Simulador de Web-browser que facilita o teste de applets
Para se compilar um código fonte Java com as opções default, o comando é simples:
javac Hello.java
Não havendo nenhum erro de compilação, será gerado um arquivo compilado:
Hello.class
Caso este arquivo possa ser executado, o comando para executá-lo com as configurações default é:
java Hello
Estrutura de Programas Java
O exemplo a seguir pode ser digitado
em um editor de textos comum, e salvo em um arquivo nominado HelloWorld.java.
O nome do arquivo deve ser o mesmo nome da classe definida na linha
2, pois esta é uma classe publica:
//Aplicativo básico
public class Hello
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
Comentários em códigos de programa Java
São 3 os tipos de comentários em códigos Java:
// para comentários de uma única linha
/* para comentários de várias linhas */
/** documentação */
Este último tipo de comentário
pode ser processado afim de se gerar uma documentação
no formato HTML. Para isso utiliza-se o gerador de comentário
javadoc.
Todo os texto comentado é ignorado pelo compilador.
Descrição da aplicação:
O bloco de definição
da classe começa na linha 2. Toda sua definição
começa e termina com chaves ( { } ).
O ponto de entrada de toda aplicação
Java (Java application) é o método main
(que neste caso é o único método presente na
classe), cuja assinatura deve parecer como na linha 3. A assinatura
desse método contém 3 modificadores:
public – indica que o método pode ser chamado por qualquer objeto
static – indica que o método é um método de classe e não de instância
void – indica que o método não retorna valor algum
O método main do Java
é como se fosse a função main no C e
no C++. Quando a aplicação é executada pelo
interpretador Java, o método main é o primeiro
método a ser chamado. Então o método main
chama os demais métodos necessários para a execução
completa da aplicação. Caso o intrepretador Java tente
executar uma classe que não possua o método main,
a aplicação não termina de ser rodada, e é
mostrada uma mensagem de erro indicando que o método main
não foi definido.
O usuário também pode,
no momento da execução da aplicação,
passar informação para o método main
no formato de um array de elementos do tipo String (neste
caso, esse array chama-se args). Sua função
principal é permitir que o usuário possa utilizar
a aplicação passando argumentos diferentes sem que
haja a necessidade de recompilação. Isso pode ser
feito da seguinte forma:
java HelloWorld argum1 argum2 argum3 ...
O bloco de código referente
à definição do médo main também
deve começar e terminar com chaves ( { } ).
Finalmente na linha 4, o System.out.println
imprime na saída padrão o que estiver entre os parênteses.
System.out é o caminho completo da variável
out, que pertencente à classe System. A aplicação
não instancia a classe System, e a variável
out é referenciada diretamente pelo nome da classe.
Isto ocorre pois out é uma variável de classe,
ou seja, é uma variável associada à classe,
e não à uma instância da classe. Também
podem existir métodos de classe. Para se referenciar
à métodos ou variáveis de classe, junta-se
o nome da classe com o nome do método de classe ou o nome
da variável de classe, separados apenas pois ponto (".").
|