O documento fornece uma introdução à plataforma Java, descrevendo suas principais características como orientada a objetos, simples, dinâmica, robusta, independente da arquitetura, portável, multi-threaded, segura, rápida e distribuída. Também explica os componentes da plataforma Java como a máquina virtual Java e a API Java, e fornece instruções sobre como instalar o ambiente de desenvolvimento Java.
1. Introdução à Plataforma Java
Prof. Nécio de Lima Veras
http://lattes.cnpq.br/8284657916723590
2. Royalties
Estes slides foram inicialmente criados pelo prof.
Régis Pires (IFPI-Parnaíba) que gentilmente cedeu
para que algumas adaptações fossem feitas.
Ass. Nécio de Lima Veras (IFCE-Tianguá).
Prof. Nécio Veras
3. Visão Geral
Prof. Nécio de Lima Veras
http://lattes.cnpq.br/8284657916723590
4. Principais Características
➔ Orientada a Objetos
➔ Sintaxe e semântica herdada do C/C++, porém com
menos recursos (C--);
➔ Simples;
A linguagem possui apenas os mecanismos necessários para implementar seu
conjunto de funcionalidades;
Códigos limpos, claros e de alto nível;
➔ Dinâmica;
➔ Robusta:
Tipagem de dados forte;
Checagem automática;
Tratamento de exceções;
➔ Independente da arquitetura; Prof. Nécio Veras
5. Principais Características
➔ Portável:
Não existem comportamentos específicos da implementação do compilador ou
do interpretador.
Tipos fixos e de tamanhos definidos:
Tipos inteiros
• byte, short, int, long => 8, 16, 32, 64 bits respectivamente
Tipos de ponto flutuante
• float e double => 32 e 64 bits
• Seguem o padrão IEEE 754
Tipo caractere
• char é de 16 bits Unicode
Strings usam um formato Unicode padrão.
➔ Multi-threaded nativo:
Torna o desenvolvimento do lado servidor mais atrativo;
Prof. Nécio Veras
6. Principais Características
➔ Segura
Java foi projetada tendo em mente a transmissão de código
através de uma rede;
O sistema de execução (runtime) faz as checagens necessárias
para garantir a integridade do sistema;
➔ Rápida
O código de bytes Java pode ser traduzido em tempo de execução em
código de máquina nativo.
Possui compilador just-in-time;
Em comparação com outras linguagens interpretadas é bem mais rápida;
➔ Coleta de lixo automática;
Prof. Nécio Veras
7. Principais Características
➔ Distribuída
A linguagem possui um vasto conjunto de classes para o
gerenciamento de comunicação de rede de baixo nível;
Permite o acesso a objetos remotos através da rede como se
fossem objetos locais(RMI);
➔ Rica
A linguagem possui um vasto conjunto de APIs padronizadas
para as mais diversas funções.
Acesso a bancos de dados;
Interface gráfica;
Acesso ao sistema de arquivos;
Compressão, E-mail, ...
Prof. Nécio Veras
8. Plataformas Java
➔ Epa! Plataforma? Não é uma linguagem?
➔ A plataforma Java é somente de software!
➔ Plataformas Java
JME – Java Platform, Micro Edition
Plataforma de desenvolvimento para dispositivos com suporte à Java como
Palms, celulares, pagers, etc.
JSE – Java Platform, Standard Edition
Contém serviços padrão para aplicações e applets.
JEE – Java Platform, Enterprise Edition
Plataforma de desenvolvimento completa para aplicações empresariais
robustas e escaláveis.
Prof. Nécio Veras
9. Componentes da plataforma Java
Java Virtual Machine (Java VM ou JVM)
Java Application Programming Interface (Java API)
Provê suporte para programação de aplicações em geral
Vasta gama de componentes de software prontos para uso
para as mais diversas funcionalidades
Prof. Nécio Veras
10. Plataforma J2SE
JRE – Java
Runtime
Environment
SDK –
Software
Development
Kit
Prof. Nécio Veras
11. Entendendo o Java
Prof. Nécio de Lima Veras
http://lattes.cnpq.br/8284657916723590
12. Java Virtual Machine (JVM)
Java Virtual Machine (JVM)
➔ É um computador de mentira. :)
➔ É o interpretador de código binário java.
➔ Utilizada para executar o programa já compilado.
Compilação => Interpretação
Fonte: Tutorial da Sun
Prof. Nécio Veras
13. Java Virtual Machine (JVM)
Há implementações da JVM para as mais diversas plataformas
Provê independência de plataforma
Fonte: Tutorial da Sun
Prof. Nécio Veras
14. Como o Java funciona
Código-fonte Saída
Compilador (código) Máquinas
Virtuais
Prof. Nécio Veras
15. Como o Java funciona
Compilador
Máquinas
Virtuais
Código-fonte
Saída
(código)
Prof. Nécio Veras
17. Funcionamento com Máquina Virtual
A aplicação roda sem envolvimento com o Sistema
Operacional.
Conversa apenas com a Máquina Virtual.
Prof. Nécio Veras
18. Java Virtual Machine (JVM)
Mas o que são Bytecodes?
➔ Código binário gerado pelo compilador Java.
➔ A origem do nome decorre do fato de que cada código de
operação da máquina virtual gasta apenas um byte.
➔ São códigos binários independentes de plataforma e
executados pela Máquina Virtual Java (JVM).
➔ Texto contendo código escrito em linguagem Java é traduzido
em bytecode através do processo de compilação e armazenado
em um arquivo .class chamado de classe Java.
➔ Detalhe importante:
Cada arquivo .class é nomeado de acordo com o nome
correspondente no arquivo .java.
Prof. Nécio Veras
20. Java Virtual Machine (JVM)
Observe as etapas: Loader, Verifier e Run
Fonte: argonavis.com.br
Prof. Nécio Veras
21. Carregador de classes (ClassLoader) e CLASSPATH
➔ ClassLoader
Realiza o carregamento das classes necessárias para rodar a
aplicação.
➔ CLASSPATH
Variável de ambiente que contém os caminhos onde o
ClassLoader pode localizar classes.
Pode ser definido através de parâmetros do comando java.
➔ Verificação de Bytecodes
Antecede a execução do código em classes carregadas
através da rede.
Usado para verificação de applets e de aplicativos que baixam
bytecodes de uma rede.
Testa o formato dos fragmentos de código e verifica a existência
de algum código ilegal. Prof. Nécio Veras
22. Hotspot e JIT
➔ Hotspot
Tecnologia para detecção de “pontos quentes” da aplicação,
ou seja, código que é bastante executado.
➔ JIT – Just In Time Compiler
Compilador que é usado “bem na hora” que precisamos, ou
seja, quando um “ponto quente” é detectado.
➔ Pode-se durante a execução, mudar a estratégia de
compilação para melhorar a performance.
É possível que, em aplicações que rodem por um certo
tempo, tenhamos compilações Java com performance
melhor que compilações em C.
Prof. Nécio Veras
23. Estrutura do programa Java
Pode conter os seguintes elementos:
Especificação de pacote (package);
Especificação de importação (import);
Declaração de classe (class);
Declaração de interface (interface).
// HelloWorld.java
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello, World!");
}
}
Prof. Nécio Veras
24. Estrutura do programa Java
Classe
Classe é uma coleção de dados e métodos que operam sobre esses dados
Palavra reservada class seguida do nome da classe
O arquivo .java deve ter nome idêntico ao de uma classe contida nele
Classes não são os objetos que representam
A planta de uma casa não é uma casa
// Loja.java
class Loja
Classe {
// Atributos
Atributos
...
// Métodos
Métodos
...
}
Prof. Nécio Veras
25. Estrutura do programa Java
Atributos
class Loja
Loja {
// Atributos
id : int
int id;
sigla : String
String sigla, descricao;
descricao : String
// Métodos
stringLoja() : String String stringLoja() { ... }
}
Prof. Nécio Veras
26. Estrutura do programa Java
Métodos
Tipo de retorno do método seguido do nome do método e, então,
de sua lista de parâmetros
Class Loja
Loja {
id : int
// Atributos
sigla : String int id;
descricao : String String sigla, descricao;
// Métodos
stringLoja() : String String stringLoja() {
return id + " " +
sigla + " " +
descricao;
}
} Prof. Nécio Veras
27. Estrutura do programa Java
Método main( )
➔ Permite execução direta através da linha de comando;
➔ Deve obrigatoriamente ter a assinatura:
public static void main(String[] args)
➔ O retorno do método main é do “tipo” void.
➔ O argumento é um Array formado por Strings passadas na
linha de comando:
Prof. Nécio Veras
28. Estrutura do programa Java
Método main( )
Exemplo:
public class OlaMundo {
public static void main(String[] args) {
System.out.println("Olá, Mundo!");
}
}
Prof. Nécio Veras
29. Compilando e executando o programa
➔ Compilando:
Use o java compiler (javac)
javac NomedaClasse.java
➔ Executando:
Use o interpretador java (faz parte do JRE)
java NomedaClasse
Prof. Nécio Veras
30. Coleta de Lixo
Conhecida como garbage collection.
➔ Ao contrário de C++, em Java o programador não precisa destruir de
forma explícita os objetos que não serão mais necessários.
➔ Gerenciamento de memória explícito é tedioso e muito suscetível a erros.
➔ Garbage collection é responsável pela destruição de todos os
objetos que não estão sendo utilizados.
➔ Um objeto está pronto para a coleta de lixo quando não existir mais
nenhuma referência para ele.
➔ A capacidade de desalocar memória automaticamente exige uma
complexidade muito superior à de gerenciadores manuais.
Prof. Nécio Veras
31. Funcionamento da Coleta de Lixo
➔ O interpretador verifica periodicamente quais objetos alocados não
estão mais sendo referenciados e os destrói;
➔ É capaz de detectar e destruir ciclos de objetos que se referenciam
mutuamente, mas que não são referenciados por nenhum outro objeto;
➔ É executado como uma thread de baixa prioridade.
➔ Geralmente realiza sua tarefa quando o sistema está ocioso;
➔ Exceto quando o interpretador fica sem memória.
Prof. Nécio Veras
32. Coleta de Lixo
(imagens valem mais que mil palavras)
...
... m = "A";
m = "A"; n = m;
n = m; p = "B";
p = "B"; n = null;
... p = "C";
...
Prof. Nécio Veras
Fonte: argonavis.com.br
33. Exercício
➔ Vamos preparar nosso ambiente de
desenvolvimento!
➔ É preciso instalar:
Nosso SDK (JDK) – Que já vem com: JRE e JVM;
http://java.sun.com/javase/downloads/index.jsp
Nosso ambiente (IDE) – Para isso temos duas grandes
opções:
Netbeans (Sun);
Eclipse (Eclipse Foundation);
http://www.eclipse.org/downloads/
Prof. Nécio Veras