1. Java: introdução
y Tecnologia Java
y Tipos de programas
y Ambiente de compilação/execução
y Processo de Execução
y Estrutura de programas
y Exemplos de programas
Java: apresentação
z Java como linguagem de programação:
y desenvolvimento de aplicações locais,
centralizadas e distribuídas
y desenvolvimento de aplicações cliente/servidor
z Java como plataforma:
y ambiente de execução neutro (JVM - Java
Virtual Machine) para diferentes plataformas
2. Programas JAVA
z Aplicações ( puras)
y são programas carregados e executados
localmente pelo interpretador Java
y possuem acesso a todos os recursos do
ambiente local: diretórios, arquivos
y sempre contém um método principal (main)
onde inicia a execução
y podem fazer chamadas a programas em
código nativo
Programas cliente/servidor
z Applets (Little Applications): cliente
y são programas inseridos em páginas HTML e
executados pelo browser (interpretador Java)
y programas (classes) podem ser carregados
remotamente
y restrições de segurança: não podem acessar
recursos locais
z Servlets: servidor
y executados sob o controle do servidor
y classe carregada dinamicamente por
requisição de um cliente
3. Java applets x JavaScript
z Códigos executáveis em páginas HTML
(páginas dinâmicas)
y Código Java: classes compiladas e carregadas
remotamente
y Código JavaScript: instruções interpretadas e
dispersas ao longo da página HTML
z Java é uma LP de uso geral, fortemente
tipada, orientada a objetos: classes, objetos,
herança e polimorfismo
z JavaScript: linguagem script (comandos),
fracamente tipada: sem classes, sem herança e
sem polimorfismo
Desenvolvimento de programas
Benvindo.java > javac Benvindo.java Benvindo.class
código processador código
fonte da linguagem objeto
Benvindo.class
classes código
usuário/ executável
biblioteca
Local ou remoto
String.class
4. J2SE : Java2 Standard Edition
z Desenvolvido e distribuído livremente pela
Sun MicroSystems contendo
y ferramentas para desenvolver e testar programas:
compilador e depurador
y ambiente de execução de programas: máquina
virtual, bibliotecas de classes e outros arquivos
y classes de demonstração, arquivos utilitários, plug-in
para browsers
y documentação de classes
y códigos fonte de classes
http://www.java.sun.com/
Ambiente de compilação e execução
INTERNET
bytecode
fonte
Browser
{HTML}
interpretador
interpretador
JAVA
compilador JAVA
JAVA
plataforma plataforma
local remota
aplicativo applet
5. Compilação x interpretação
z Interpretação: problema de desempenho
y A flexibilidade e segurança prejudicam o tempo de
execução;
y Um programa Java típico roda 10 vezes mais lento
que um programa equivalente em linguagem nativa
z Solução: JIT (Just-in-time compilation)
y Compiladores JIT convertem programas Java para
linguagem de máquina nativa assim que os mesmos
são lidos.
y Penalidade: a leitura dos programas se torna mais
lenta.
Java: compilação e execução
Compilação
compilador
código
Bytecodes
Java
fonte
Execução
Execução
JVM
código compila
nativo JIT
Java JIT é uma otimização
6. Programa Java: Classe
• Uma classe é um arquivo fonte (texto)
class
public class
Nome
Nome1
mesmo Nome
class
Nome2
Nome.java
•Um arquivo pode conter
Nome1.java
várias classes
Classe: unidade de compilação
Arquivo fonte : Nome1.java Arquivos executáveis: class
Nome1.class
bytecodes
public class Nome1 {
Nome2.class
class Nome2 {... bytecodes
7. Execução de programas Java
arquivo ... web/
.class /lib LAN
classes do classes classes de classes
programa locais biblioteca remotas
verifica
carregadores de classes segurança
dados JVM
Meu primeiro programa
Cuidar maiúsculas
class Benvindo { e minúsculas!
public static void main
(String[] args) {
System.out.println
(“Benvindo a Java.”);
}
}
Método main: onde inicia a execução
8. Passo 1: inicialização JVM
z A JVM inicia a execução quando
solicitada a executar uma aplicação
y Exemplo: java Benvindo
y classe: Benvindo
y método: main (public static void..)
•localizar arquivo
•diretório local Benvindo.class
Passo 2: classe principal
z A classe especificada deve ser
y carregada (load)
y ligada (link) a outros tipos que necessita
y inicializada
Benvindo.class String.class System.class
class Benvindo {
public static void main(String[] args) {
System.out.println(“Benvindo a Java ”);
}
9. Carregador de classes
z Carregador de classes - ClassLoader
y carrega além do arquivo .class, as classes
herdadas ou referenciadas no código
class Data{
class Pessoa{
int dia...}
Data nasc....}
class Aluno
main
extends
JVM
Pessoa{...}
Verificador de Bytecodes
z Objetivos : garantir que o código esteja de
acordo com a especificação Java e não
viole a integridade do sistema
Data
Pessoa
main
Aluno
JVM
10. Ligação: verificação
z Verificação: assegura que a
representação binária (bytecodes) de uma
classe/interface é estruturalmente correta
y cada instrução possui um código de
operação válido?
y a assinatura de cada método está correta?
y o sistema de tipos foi obedecido?
Java é uma linguagem tipada: existe verificação
de tipos estática e dinâmica
Classe Java: apenas o método
principal
assinatura padrão do método main
class Benvindo {
public static void main (String[] args)
{
System.out.println (“Benvindo a Java.”);
}
}
11. Convenção para Nomes
z Java, como C/C++ distingue entre letras
maiúsculas e minúsculas
y Exemplo: benvindo difere de Benvindo
z Nomes de classes iniciam com maiúscula
y Exemplo: class Benvindo
z Nomes de variáveis iniciam com minúsculas
y Exemplo: int peso;
z Nomes de métodos são verbos que iniciam com
minúscula e após usam maiúsculas
y Exemplo: alteraPeso
z Representação: Unicode (16 bits - 65.536
caracteres)
Exemplo de objeto/métodos
System.out.println (“Benvindo a Java.”);
parâmetro
método
objeto
System.out.print (“Benvindo a Java.”);
parâmetro
método
objeto
12. Chamada parametrizada
class Benvindo {
public static void main (String[] args) {
System.out.println
(“Parabéns ” + args[0]);
}
}
Método main: aceita argumentos para execução
Exemplo de chamada: > java Benvindo Pedro
Classe Java: com dois métodos
class Benvindo2 {
static void imprime(){
System.out.println
(“Benvindo a Java.”);
}
public static void main (String[] args) {
imprime();
}
}
método static: método de classe não aplicável sobre objetos
13. Classe Java: com dois métodos
class Benvindo2 {
static void imprime(){
System.out.println
(“Benvindo a Java.”);
}
public static void main (String[] args) {
imprime();
}
}
método static: método de classe não aplicável sobre objetos
Classe Java: com um objeto
class Benvindo2 {
void imprime(){
System.out.println
(“Benvindo a Java.”);
}
public static void main (String[] args) {
Benvindo2 instancia=new Benvindo2();
instancia.imprime();
}
}
método de instância somente aplicável sobre objetos
14. Uso de bibliotecas
z As classes Java são agrupadas em
pacotes
z O pacote padrão é : java.lang
z Classes que pertencem a outros pacotes
devem ser importadas
z Exemplos de importação
import java.awt.Rectangle;
import java.awt.*;
Exemplo de utilização de GUI
import javax.swing.JOptionPane; // classe do pacote swing
class Exe01Swing{
public static void main (String[] args) {
JOptionPane.showMessageDialog(null,quot;Consegui!quot;);
System.exit(0); // termina o programa
}
}
15. Exemplo de execução em IDE
Exemplo de Entrada e Saída com GUI
import javax.swing.JOptionPane; // classe do pacote swing
class Exe02Swing{
public static void main (String[] args) {
String nome=JOptionPane.showInputDialog(quot;Seu nome?quot;);
JOptionPane.showMessageDialog(null,quot;Parabéns quot; + nome +
quot;n você conseguiu!quot;);
System.exit(0); // termina o programa
}}
16. import java.awt.event.*;
Exemplo de
import javax.swing.JOptionPane;
conversão de
class LeituraSwing {
String para número
public static void main(String[] args){
LeituraSwing ls=new LeituraSwing();
// leitura de caracteres e conversão para primitivo
String valor= JOptionPane.showInputDialog(quot;Digite um número: quot;);
// Converter um String para inteiro
int i = Integer.parseInt(valor);
// Observar a conversão da expressao (i+100) para String
JOptionPane.showMessageDialog(null,quot;Seu número + 100: quot; + (i+100));
System.exit(0); // termina o programa
}}
Prática de Laboratório