departamento de informática comdex internet...

104
Comdex Internet Brasil’96 Tutorial T5: Desenvolvimento em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática Universidade Federal de Pernambuco

Upload: vudiep

Post on 02-Dec-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Comdex Internet Brasil’96Tutorial T5: Desenvolvimento em Java(tm)

Jorge Henrique Cabral FernandesDepartamento de InformáticaUniversidade Federal de Pernambuco

Page 2: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Créditos

Andreia Almeida de AlcântaraJorge Henrique Cabral FernandesJulianne Freire de Sousa PepeuSilvio Romero de Lemos Meira

Page 3: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Distribuição do Material para este Tutorial

• Feita através de disquete– Arquivos HTML em três formatos: tar, zip e arj

• Páginas HTML contêm a informação a ser apresentada, com links para diversos recursos na Internet

• Disponibilização desta apresentação na Internet, acessível através da home-page de Java, no DI-UFPE

Page 4: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Introdução

• Java é a linguagem de programação para a Internet

• Quais as principais características de Java ?• Qual o nicho que Java ocupa no

desenvolvimento de software ?• Como desenvolver software em Java ?• Apresentação direcionada a analistas e

programadores

Page 5: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Programação

• Parte 1: O Contexto de Java na Internet• Parte 2: O paradigma da linguagem Java• Parte 3: Elementos e especificações da

Linguagem Java• Parte 4: Threads e exceções em Java• Parte 5: Ambientes de desenvolvimento

para Java• Parte 6: Desenvolvendo software com Java

Page 6: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Parte 1: O Contexto de Java na Internet

Internet

WWW

CGI

Java

Applets

JavaScript

Page 7: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Internet

Internet(TCP/IP)

Aplicações• telnet

terminal remoto

• ftptransferência de arquivos

• e-mailcorreio eletrônicoServidor

Cliente

Page 8: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

World Wide WebHipermídia para a Internet

• Universal Resource Locator (URL)– Endereça universalmente recursos hipermídia

• Hypertext Markup Language (HTML)– Descreve documentos hipertextuais

• Hypertext Transfer Protocol (HTTP)– Permite transferência de documentos hipermídia

• Web Server (WWW server, HTTP server)– Disponibiliza documentos hipermídia na Web

• Web Browser (folheador, ex: Netscape e Internet Explorer)– Acessa e mostra documentos hipermídia

Page 9: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Servidores e Clientes WebWeb Server

WWW(HTTP)

Web Browser

Base de documentos hipermídia

Este é o destino

URLEste é o destino

Page 10: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Nome

End

CPF

Formulário

Nome

End

CPF

Alex

Recife

999.999

FormulárioCGIscriptCGIscript

Alex

CGI e Formulários:Acrescentando dinamismo à Web

Web ServerWWW(HTTP)

Web Browser

Page 11: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Limitações e Vantagens do Modelo CGI+Forms

• Entrada de dados orientada a caracteres• Modelo computacional batch

– preenchimento de dados em bloco– sem tratamento de sessões

• Processamento centralizado no servidor– um processo criado para cada invocação

• Segurança para o servidor• Extensamente testado e aprovado

Page 12: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Java: uma Linguagem Orientada a Objetos

• Sintaxe similar a C++• Objetos, classes e

interfaces• Herança simples e

múltiplas interfaces• Threads e monitores• Tratamento de

exceções

• Tipos fortes, com “dynamic binding”

• Bytecode interpretado sobre máquina virtual

• Coleta de lixo • Sem aritmética de

ponteiros• Bibliotecas portáveis • Integração com C/C++

Page 13: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Não Confundir com JavaScript• Linguagem de criação de scripts, com sintaxe

similar a Java, desenvolvida pela Netscape• Poder computacional limitado• Scripts interpretados pelo Netscape Navigator,

sem máquina virtual• Permite a execução de tarefas simplificadas no

cliente:– Consistência de formulários– Geração de páginas, etc.

Page 14: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Applets

• “Pequenos” programas Java;• que são disponibilizados em Web servers;• e se hospedam dentro de páginas HTML.• O código do applet é copiado para o browser,

juntamente com a página HTML.• O código é executados por máquinas virtuais

instaladas no browser.• A interface gráfica do applet ocupa uma área

bidimensional da página HTML

Page 15: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Applets: Código Móvel para aWeb

Web ServerWWW(HTTP)

Web Browser

Page 16: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Resumo da Parte 1: O Contexto de Java na Internet

• WWW: hipermídia para a Internet• HTTP, HTML e CGI: tecnologias

amadurecidas na Web• Java: linguagem orientada a objetos, de uso

geral, cujo código tem mobilidade• Applets em Java acrescentam maior

dinamismo à Web por executarem no lado do cliente, dentro de Web browsers

Page 17: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Parte 2: Paradigma da Linguagem Java

• Orientação a Objetos– Aumenta a qualidade do projeto e código

• Código Móvel– Facilita a instalação da aplicação em diferentes

plataformas• Applet

– Facilita a disseminação da aplicação através daWeb

Page 18: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Orientação a Objetos

• Objetos– Componentes de software que contêm um

estado e uma interface, e trocam mensagens• Classes

– “Moldes” para a criação de objetos• Herança

– Modelo de estruturação de classes, que facilita a reusabilidade de código

Page 19: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Objetos Trocam Mensagens

Cliente ContaBancária

debite(100, “11, 5, 1996”)

contaBancaria.debite(100, “11, 5, 1996”);

Page 20: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Classes são Moldes para a Criação de Objetos

newnewnew

newnew

newnew

new

Page 21: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Definindo a ClasseContaBancaria

class contaBancária {int saldo;

/* metodo construtor */ContaBancaria(int saldoInicial) {

saldo = saldoInicial;}

/* metodo de instancia */void debite(int valor, String data) {

...}

}

Page 22: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Criando Contas Bancáriasclass ContaBancaria

ContaBancaria(int)

ContaBancaria(int) Método construtor

saldo

saldo Variável de instância

debite(int, String)

debite(int, String) Método de instância

Banco

new ContaBancaria(100)100

new ContaBancaria(55)

55

new ContaBancaria(-33) -33

Page 23: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Herança: Estruturação eReusabilidade

ContaBancaria

saldotransacoes

herdaContaCorrente

talonariosPoupanca

jurostaxaJuros

herda

ContaEspecial

limitetaxaJuros

herda

Page 24: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Classe ContaCorrente

class ContaCorrente extends ContaBancaria {int talonarios;

}

ContaCorrente

saldotransacoestalonarios

newnew

saldotransacoestalonarios

Page 25: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Classe ContaEspecial

class ContaEspecial extends ContaCorrente {int limite;float taxaJuros;

}ContaEspecial

saldotransacoestalonarios

limitetaxaJuros

new

new

saldotransacoestalonarios

limitetaxaJuros

Page 26: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Classe Poupanca

class Poupanca extends ContaBancaria {int juros;float taxaJuros;

}Poupanca saldo

transacoesjuros

taxaJuros

new

new

saldotransacoes

jurostaxaJuros

Page 27: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Benefícos da Herança

• Fatoração e redução do tamanho do código• Estruturação do código• Aumenta a reutilização de código• Redução do esforço de evolução da

aplicação• Melhoria da qualidade do código

Page 28: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Tecnologia de Código Móvel em Java

• Programas compilados são um conjunto de classes

• O código gerado é arquiteturalmente neutro, executado sobre uma máquina virtual

• Recursos nativos do sistema operacional são tratados de modo abstrato

Page 29: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Compilação de um Programa em Java

ContaBancaria.java

Poupanca.java

ContaCorrente.java

ContaBancaria.class

Poupanca.class

ContaCorrente.class

Page 30: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Execução de um Programa em Java

Software Chip

Área de objetos

Area de métodos

Sistema Operacionalcom coleta de lixo

Page 31: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Recursos Nativos do Ambiente de Execução

São isolados através de classes com métodos nativos internos, classes abstratas e interfaces

• Sistema de Arquivos– java.io

• Sistema de Interface Gráfica– java.awt, java.awt.peer, java.awt.image

• Comunicações em rede (sockets, etc)– java.net

Page 32: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Applets Facilitam Disseminação de Código

• Funcionamento dos applets– Verificação do bytecode– Restrições de acesso

• Inserção de um applet em uma página HTML

• Mensagens mais importantes para mandar a um applet

Page 33: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Funcionamento dos AppletsWeb Server

WWW(HTTP)

Web Browser

Page 34: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Verificação do BytecodeWWW(HTTP)

Web Browser

?

Page 35: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Restrições de Funcionamento dosApplets

Carregados viasistema de arquivos

Carregados via rede

Page 36: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Restrições e Permissões dos AppletsCarregados Via Sistema de Arquivos

• Se carregados no Netscape, não podem ler ou gravar arquivos. carregados no appletviewer pode fazer leitura e escritura

• Podem fazer conecção de rede com qualquer host• Podem saber o nome do usuário• Podem carregar bibliotecas dinâmicas• Podem abrir uma janela pop-up sem warning

Page 37: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Restrições e Permissões dos AppletsCarregados Via Rede

• Não podem ler ou gravar arquivos no cliente em qualquer situação

• Só podem fazer conecção de rede com ohost de onde veio

• Não tem acesso ao nome do usuário • Não podem carregar bibliotecas dinâmicas• Toda janela pop-up tem uma barra de

warning

Page 38: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Inserção de um Applet em uma Página HTML

<html><body><h1>Este applet é bastante simples</h1><applet code=Clock.class

width=100height=200>

<param name=mode value=digital><param name=beep value=off></applet></body></html>

Page 39: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Mensagens mais Importantes para Mandar a um Applet (1)

• void init()– Enviada uma única vez, logo após a criação do applet

• void paint(Graphics g)– Enviada sempre que o applet precisa atualizar a

interface• void start()

– Enviada sempre que a página do applet é visitada• void stop()

– Enviada sempre que a página do applet é sobreposta

Page 40: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Mensagens mais Importantes para Mandar a um Applet (2)

• void destroy()– Enviada para o applet imediatamente antes de sua

destruição.

• String getParameter(String name)– Enviada para o applet a fim de descobrir os parâmetros

que lhes foram passados no código HTML

Page 41: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Mensagens para um AppletWWW(HTTP)

Web Browser

new

init() paint()

nome:stop() nome:

start()

destroy()

Page 42: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Resumo da Parte 2: Paradigma da Linguagem Java

• Orientação a objetos– Aumenta a qualidade do código

• Código Móvel– Aumenta a portabilidade e facilita a instalação

de aplicações• Applets

– Facilitam a disseminação de aplicações na Web

Page 43: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Parte 3: Elementos e Especificações da Linguagem

Java

• JDK - Java Development Kit v. 1.0.2• API - Application Program Interface• Palavras chave

Page 44: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

JDK - Java Development Kit

• javac - compilador• java - interpretador• jdb - depurador simbólico• javah - interface com C• javap - desassemblador• javadoc - documentador • appletviewer - visualizador de applets

Page 45: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

javac - Compilador de Java

X.java

javac

X.class

Page 46: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

javadoc - Gerador de Documentação de Java

X.java

javadocPáginaHTML

X.html

class X

variable indexab

method indexint test()init()

Page 47: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

appletviewer - Visualizador deApplets

appletviewerURL

URL

WWW(HTTP)

Página HTML

Execução doApplet contidona página HTML

Page 48: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

API de Java

• java.lang• java.io• java.util• java.net• java.awt, java.awt.image, java.awt.peer• java.applet• sun.tools.debug

Page 49: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

java.langSuporte Básico aos Elementos da Linguagem

• Object• Class• Thread• Exception• String• Integer• ...

String

new String(“Comdex”);

Comdex

Page 50: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

java.io• File• InputStream• OutputStream File

File teste = new File(“Teste”)

TesteInputStream

new InputStream(teste)

OutputStreamnew OutputStream(teste)

read()write()

Page 51: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

java.util• Stack• Date• Vector

Stacknew Stack()

push()push()

push()push()

push()

Page 52: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

java.net• URL• URLConnection• Socket

URLnew URL(“http://www.di.ufpe.br”)

URLopen()

read()

Cliente

www.di.ufpe.br WWW(HTTP)

Page 53: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

java.awt• Component, Container• Frame, Panel• Button, List

Panel

Panel panel = new Panel()

Buttonpanel.add(new Button(“Start”))

add()

Start

panel.add(new Button(“Stop”))

add()

Stop

panel.add(new Button(“Cancel”))

add()

Cancel

Page 54: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Palavras Chave de Java (1)• Pacotes

– import– package

• Tipos de dados primitivos– boolean– void– char– byte, short, int, long– float, double

Page 55: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Palavras Chave de Java (2)

• Declaração de classes e interfaces– class– interface– extends– implements

• Criação de objetos– new

Page 56: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

l Literais– null– true, false

l Modificadores de visibilidade– private– protected– public

Palavras Chave de Java (3)

Page 57: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Palavras Chave de Java (4)

• Tratamento de exceções• Desvio e Controle de Fluxo• Pseudo-variáveis• Teste de compatibilidade de tipo• Modificadores gerais de métodos e

variáveis

Page 58: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Parte 4: Threads e Exceções em Java

• Threads– Facilitam a construção de software concorrente

• Tratamento de Exceções– Conferem homogeneidade e legibilidade ao

código

Page 59: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Threads em um Programa Java

Page 60: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Estados e Métodos de um ThreadThread

new Thread()

New

start()

Runnable

yield()

Runnable

Not Runnable

Runnable

stop()

stop()

stop()ou fimde run()

Dead

Page 61: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Implementação de Threads

• Herdando da classe Thread ou de subclasses da classe Thread.

class MyThread extends Thread {}

l Implementando a interface Runnable e criando um thread. class MyThread extends Applet implements Runnable {}

Page 62: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Herdando da Classe ThreadThread

RUN

MyThread

RUN RUN

Criação do objeto

Escalonador / Processador

RUNRUNRUN

RUNRUN

Page 63: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Implementando Runnable

InterfaceRunnable

RUN

MyClassRUN

Thread

RUN

RUN

Criação do objeto

RUN

Criação do thread

Escalonador / Processador

RUNRUNRUN

RUNRUN

Page 64: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

O Applet Clock em Funcionamento

Browser

Página HTML

applet Clock

12:4812:4912:5012:5112:5212:53

Page 65: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

O Código do Applet Clockimport java.applet.Applet;import java.awt.Graphics;import java.util.Date;public class Clock extends Applet

implements Runnable {Thread updater;public void start() {...};public void stop() {...};public void paint(Graphics g) {...};public void run() {...};

}

Page 66: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

O Método start(): CriandoThreads

public void start() {if (updater == null) {

updater = new Thread(this);updater.start();

}}

Page 67: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

O Método run(): Executando uma Tarefa Concorrente

public void run() {

while (true) {repaint();try {

updater.sleep(1000);} catch (InterruptedException e) {

}

}

}

Page 68: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

O Método paint(): Desenhando na Interface Gráfica

public void paint(Graphics pen) {

Data date = new Date();

pen.drawString(date.getHours() + “:” +date.getMinutes() + “:” +date.getSeconds(), 5, 15);

}

Page 69: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

O Método stop(): MatandoThreads

public void stop() {

updater.stop();updater = null;

}

Page 70: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Tratamento de Exceções:Simplicidade e Homogeneidade

• entrada de dados inválida;• falhas no tratamento de arquivos;• falhas na comunicação entre processos;• reativação de threads;• erros aritméticos;• estouro de limites de arrays;• etc

Page 71: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

• Sem tratar exceções • Tratando exceções...erro = 0;oper1;if (!erro1) {

oper 2;if (!erro2) {

...}else erro = -2;

}else erro = -1;if (erro < 0) {

tratarErro(erro);...

Tratamento de Exceções: Legibilidade de Código

...try {

oper1;oper2;

} catch(erro1) {// tratar erro1

} catch(erro2) {// tratar erro2

}...

Page 72: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Palavras Chave no Tratamento de Exceções

• throws– Declara que um método pode levantar exceção

• throw– Levanta uma Exceção

• try, catch e finally– Define bloco de tratamento de exceção

Page 73: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Usando Throws (1)class Count {

public static void main (String args[])throws java.io.IOException

{int count = 0;while (System.in.read() != -1)

count ++;System.out.println(“Caracteres: ”+count);

}}

> javac Count.javaCount.java:4: Exception java.io.IOException must be caught, or it must be declared in the throws clause of this method.

while (System.in.read() != -1)^

1 error

> javac Count.java

class Count {public static void main (String args[])

throws java.io.IOException{

int count = 0;while (System.in.read() != -1)

count ++;System.out.println(“Caracteres: ”+count);

}}

Page 74: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Usando Throws (2)class Count {

public static void main (String args[]) {

int count = 0;while (System.in.read() != -1)

count ++;System.out.println(“Caracteres: ”+count);

}}

> javac Count.javaCount.java:4: Exception java.io.IOException must be caught, or it must be declared in the throws clause of this method.

while (System.in.read() != -1)^

1 error

Page 75: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Usando Throws (3)class Count {

public static void main (String args[]) {try {

read();} catch (IOException e) {}

}

static void read() throws IOException {int count = 0;while (System.in.read() != -1)

count ++;System.out.println(“Caracteres: ”+count);

}}

Page 76: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Throw

throw new Exception(“Ocorreu uma Excecao!”);

Page 77: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Try, Catch e Finally

try {...

} catch (umaExcecao e1) {...

} catch (outraExcecao e2) {...

} catch (maisUmaExcecao e3) {...

} finally {...

}

Page 78: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Exemplo 1: Não Tratando Exceçõesclass Divide {

public static void main (String args[]) {int dividendo, divisor;

dividendo = (Integer.valueOf(args[0])).intvalue();divisor = (Integer.valueOf(args[1])).intvalue();metodoA (dividendo, divisor);

}

public static void metodoA (int dividendo, divisor) {metodoB (dividendo, divisor);return;

}

public static void metodoB (int dividendo, divisor) {System.out.println (“Resultado: ” + dividendo/divisor);return;

}} ArithmeticException

levantada!

ArithmeticEception

ArithmeticException

Erro em tempo de execução!

ArithmeticExceptionlevantada!

ArithmeticEception

ArithmeticException

Erro em tempo de execução!

Page 79: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Exemplo 2: Capturando uma Exceçãoclass Divide {

public static void main (String args[]) {int dividendo, divisor;

dividendo = (Integer.valueOf(args[0])).intvalue();divisor = (Integer.valueOf(args[1])).intvalue();try {

metodoA (dividendo, divisor);} catch (ArithmeticException e) {

System.out.println (“Divisor Invalido!”);}

}

public static void metodoA (int dividendo, divisor) {metodoB (dividendo, divisor);return;

}

public static void metodoB (int dividendo, divisor) {System.out.println (“Resultado: ” + dividendo/divisor);return;

}} ArithmeticException

levantada!

ArithmeticEception

Excecao capturada!

ArithmeticExceptionlevantada!

ArithmeticException

Excecao capturada!

Page 80: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Resumo da Parte 4: Threads e Tratamento de Exceções

• Threads– Simplificam a construção de programas

concorrentes• Exceções

– Aumentam a qualidade do código, por torná-lomais organizado

Page 81: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Prática Simulada: Construir umApplet

• Criar página HTML• Criar programa Java• Compilar e retirar erros do programa• Executar via appletviewer• Executar via Netscape

Page 82: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Parte 5: Ambientes de Desenvolvimento

• AppletMaker, by Heechang Choi• SunSoft JavaWorkshop• Symantec Café• JavaSoft HotJava

Page 83: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

AppletMaker

• Simples e pequeno. 125 KB compactados• Interface gráfica para automatizar edição,

compilação e execução de applets.• Windows 95, NT• Sem custo

Page 84: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

JavaWorkshop 1.0• Gerenciamento de portfólios e projetos• Automatiza a construção de aplicações, applets,

pacotes e HTML• Escrito em Java, mas com versão própria do JDK• 7 MB compactados, lento para micros pequenos• Programação e depuração visual• Interessantes provas de conceito sobre Java• Solaris, Windows 95, NT. Mac em 1997• Avaliação sem compromisso por 30 dias • Us$ 99, nos EUA

Page 85: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Café• Gerenciamento de projetos• Automatiza construção de aplicações e applets,

com várias opções• Tutorial, introdução a Java, API e referência em

um mesmo pacote.• Escrito em C, para Windows 95/NT• Rápido em micros pequenos• 13 MB compactados• us$ 130,00, via Internet

Page 86: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

HotJava

• Browser escrito em Java, com suporte limitado a HTML, mas com ...

• Prova de conceitos interessantes para arquiteturas de software na Internet– content handler– protocol handle

• Solaris e Windows 95/NT• Licensa de uso interno gratuita

Page 87: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Parte 5: Resumo

• Existem vários ambientes de desenvolvimento de programas em Java

• Alguns são gratuitos, outros pagos• É preciso usar o espírito da linguagem no

desenvolvimento de projetos– Orientação a objetos– Código móvel

• A cada semana surgem novas propostas

Page 88: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Parte 6: Desenvolvendo Software com Java

• Projetos Desenvolvidos no DI-UFPE– WebSteer– The Visible Computer– BRight!

• Desenvolvimento de Projetos em Java– Teoria e métodos– Ferramentas e ambientes– Pragmáticas

Page 89: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Projetos desenvolvidos no DI-UPFE:WebSteer

• Applet de suporte a treinamento e documentação interativa na Web– Integração de eventos entre browser e applets

• 19 pesquisadores envolvidos durante 2 meses• 2 grandes grupos de desenvolvimento

– WebSteer Básico (10.2 KLOC)– Módulos de Treinamento (13.1 KLOC)

Page 90: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

WebSteer: Próximos Passos

• Incorporar Funções de Gerenciamento• Criar Ambiente de Autoria• Estender o Conceito para Ambientes de

Desenvolvimento de Software na Web

Page 91: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

• Ambiente para experimentação visual de arquiteturas de computador

• Níveis de visualização– Clock, unidade de controle, CPU, memória, programas,

E/S

• Dois pesquisadores envolvidos durante 2 mêses• Desenvolvimento do projeto (8.25 KLOC)

Projetos desenvolvidos no DI-UPFE:The Visible Computer

Page 92: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

The Visible Computer: Próximos Passos

• Integração de compiladores ao ambiente• Substituição de unidades “on-the-fly”• Integração com WebSteer

Page 93: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

• Armazenamento e busca de páginas na Web• Conceitos de vizinhança

– Domínio, localização geográfica e assunto• Três pesquisadores envolvidos durante três

mêses• Desenvolvimento do projeto

– 2.5 KLOC em Java– 1.1 KLOC em C (CGI Scripts)– Integração com ADABAS

Projetos desenvolvidos no DI-UPFE:BRight!

Page 94: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

BRight!: Próximos Passos

• Indexação e busca distribuídas• Robôs reusáveis em outros contextos• Grenciamento de sessões de busca

Page 95: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

• Objetos, classes e interfaces• Threads• Código móvel na Web• Computação distribuída na Web• Persistência e integração com SGBD’s

Desenvolvimento de Projetos em Java:Teoria

Page 96: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

• API padrão de Java• Ferramentas do Java Development Kit• Ambientes de Desenvolvimento• Código Disponível na Internet• Extensões da API

Desenvolvimento de Projetos em Java:Desenvolvimento de Projetos em Java:Ferramentas e AmbientesFerramentas e Ambientes

Page 97: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Extensões da API de Java• Java Enterprise API

– JDBC, Java IDL, Java RMI e Object Serialization• Java Server API• Java Security API• Java Commerce API• Java Management API• Java Beans• Java Embedded API• Java Media API

– 2D, Media (áudio, vídeo, MIDI), Share,Animation, telephony, 3D

Page 98: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

• Desenvolvimento em grupo– Cada equipe resposável por um ou mais packages

• Applets versus Aplicações– Devem ser integradas– Applets no front-end– Aplicações no back-end

Desenvolvimento de Projetos em Java:Pragmáticas (1)

Page 99: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

• Sistemas de grande porte– RMI+Serialization é a opção básica– JDBC requer que se tenha um SGBD compatível

com ODBC– Java IDL requer um ORB instalado

• Gerenciamento de Threads– Agrupe threads em threadgroups– Planeje cuidadosamente regiões de sincronização

Desenvolvimento de Projetos em Java:Pragmáticas (2)

Page 100: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

• Interface Gráfica– Use Layout Managers– Deixe espaço para barras de warnings– Veja diferenças e limitações no tratamento de

eventos– Use BorderLayout, CardLayout e Panel

• Testes– Crie métodos de teste para cada classe criada

Desenvolvimento de Projetos em Java:Pragmáticas (3)

Page 101: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Desenvolvimento de Projetos em Java:Pragmáticas (4)

• Netscape versus Appletviewer– Não são completamente compatíveis– Quando em desenvolvimento use o appletviewer e

carregue as classes via sistema de arquivos– Periodicamente faça testes “smoke and run”

• Codificação e Documentação– Criar documentários após escrever cada método– Usar as facilidades do javadoc

Page 102: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Conclusões Gerais• Java implementa o modelo de objetos de forma

elegante e simplificada• Java está para ficar, embora existam várias outras

propostas• Ainda há muito o que ser melhorado

– performance– robustez

• Código móvel ainda está no início de seu processo de amadurecimento

Page 103: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática

Onde obter mais informações• Tutorial em HTML• Home-page do Recife Java Team

– http://www.di.ufpe.br/~java– Cursos on-line

• Listas de discussão– [email protected]– enterprise-java

• Sun Microsystems• Internet• Livros

Page 104: Departamento de Informática Comdex Internet Brasil’96jhcf/MyBooks/itjava/slides/TutorialJavaComdex...em Java(tm) Jorge Henrique Cabral Fernandes Departamento de Informática