na Web - cic.unb.brjhcf/MyBooks/itjava/IntroducaoGeralaPlataforma... · da / UFRN Introdução...

163
Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital Interativa Prof. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN Introdução Geral à Plataforma Java ou Desenvolvimento Java de Sistemas na Web, em Celulares e na TV Digital Interativa Prof. Dr. Jorge H C Fernandes [email protected] CIC/UnB – DIMAp/UFRN

Transcript of na Web - cic.unb.brjhcf/MyBooks/itjava/IntroducaoGeralaPlataforma... · da / UFRN Introdução...

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Introdução Geral à Plataforma Javaou

Desenvolvimento Java de Sistemas na Web, em Celulares e na TV

Digital Interativa

Prof. Dr. Jorge H C [email protected]

CIC/UnB – DIMAp/UFRN

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Introdução Geral à Plataforma Java

• Apresentação teórico-prática sobre os conceitos emamplitude da plataforma Java no apoio ao desenvolvimento de software e sistemas

• Exemplos de aplicações da linguagem Java na:– Programação de pequenos programas em computadores

pessoais– Desenvolvimento de módulos de sistemas web– Software para execução em dispositivos móveis como

celulares e PDAs– Distribuição via broadcast e execução em equipamentos

para televisão digital interativa (set top box)

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Parte 1Conceitos no desenvolvimento

de software e sistemasSofware e Sistemas

Máquinas e LinguagensCadeia de Valor na Convergência

DigitalMiddleware

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Conceitos no desenvolvimentode software e sistemas

• O que é um software e o que é um sistema• Quando o software é livre

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Softwarepublic class Calc {

private int estadoInteracao;private int operacaoSelecionada;private long acumulador0;private long acumulador1;private static final int NENHUMA = 0;private static final int SOMA = 1;private static final int SUBTRACAO = 2;private static final int ACUMULANDO_0 = 0;private static final int ACUMULANDO_1 = 1;public Calc() {}long soma() {

operacaoSelecionada = SOMA;estadoInteracao = ACUMULANDO_1;return acumulador0;

}long um() {return numeroDigitado(1);}long dois() {return numeroDigitado(2);}long numeroDigitado(int valor) {

if (estadoInteracao == ACUMULANDO_0) {acumulador0 = acumulador0 * 10 + valor;estadoInteracao = ACUMULANDO_0;return acumulador0;

} else if (estadoInteracao == ACUMULANDO_1) {acumulador1 = acumulador1 * 10 + valor;estadoInteracao = ACUMULANDO_1;return acumulador1;

}return 0;

}long igual() {

long resultado = 0;if (operacaoSelecionada == SOMA) {

resultado = acumulador0 + acumulador1;

import java.awt.*;import java.awt.event.*;public class CalcVisual extends Frame {

// Cria os painéisPanel panelTeclas = new Panel();Panel panelTeclasTopo = new Panel();Panel panelTeclasNumericas = new Panel();

// cria os gerenciadores de layout dos painéisBorderLayout BorderLayoutPrincipal = new BorderLayout();BorderLayout BorderLayoutTodasAsTeclas = new BorderLayout();GridLayout gridLayoutClearCEBackSpace = new GridLayout();GridLayout gridLayoutTeclasNumericasEOperacoes = new GridLayout();

// cria a área de display da calculadoraTextField textFieldDisplay = new TextField();

// cria os botões da calculadoraButton buttonBackspace = new Button();Button buttonC = new Button();Button buttonCE = new Button();Button button_0 = new Button();Button button_1 = new Button();Button button_2 = new Button();Button button_3 = new Button();Button button_4 = new Button();Button button_5 = new Button();Button button_6 = new Button();Button button_7 = new Button();Button button_8 = new Button();Button button_9 = new Button();Button button_pontoDecimal = new Button();Button button_igual = new Button();Button button_soma = new Button();

button_9.setLabel("9");button_soma.setLabel("+");button_igual.setLabel("=");

// adiciona alguns botões no painel de teclas superiorgridLayoutClearCEBackSpace.setColumns(3);panelTeclasTopo.setLayout(gridLayoutClearCEBackSpace);panelTeclasTopo.add(buttonBackspace, null);panelTeclasTopo.add(buttonCE, null);panelTeclasTopo.add(buttonC, null);

// adiciona alguns botões no painel de teclas inferiorgridLayoutTeclasNumericasEOperacoes.setRows(4);gridLayoutTeclasNumericasEOperacoes.setColumns(5);gridLayoutTeclasNumericasEOperacoes.setHgap(4);gridLayoutTeclasNumericasEOperacoes.setVgap(4);

panelTeclasNumericas.setLayout(gridLayoutTeclasNumericasEracoes);

panelTeclasNumericas.add(button_7, null);panelTeclasNumericas.add(button_8, null);panelTeclasNumericas.add(button_9, null);

lT l N i dd(b tt di i ll)

pbutton_2.addActionListener(new

java.awt.event.ActionListener() {public void actionPerformed(ActionEvent

button_2_actionPerformed(e);}

});// cria o tratador de evento para o botão "+"button_soma.addActionListener(new

java.awt.event.ActionListener() {public void actionPerformed(ActionEvent

button_soma_actionPerformed(e);}

});// cria o tratador de evento para o botão "-"button_subtracao.addActionListener(new

java.awt.event.ActionListener() {public void actionPerformed(ActionEvent

button_subtracao_actionPerformed(e);}

});// cria o tratador de evento para o botão "*"button_mult.addActionListener(new

java.awt.event.ActionListener() {public void actionPerformed(ActionEvent

button_mult_actionPerformed(e);}

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Software

• Conjunto organizado de instruções e descrições de dados

• Escrito em uma (ou mais) linguagens compreensíveis por um sistema de computação

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Sistema• um conjunto de elementos inter-relacionados que interagem no

desempenho de uma função• Sistema econômico

– mantém os recursos da economia em circulação • Sistema Computacional

– atende a uma determinada necessidade de processamento de informações de usuários

• Sistema Solar – Manter os planetas girando em torno do sol

• Sistema de injeção eletrônica – regular a mistura ótima de combustível e ar para o funcionamento do motor

• Sistema digestivo – incorporar, ao corpo de um animal, a energia e matéria contidas em

alimentos • Biosfera

– manter a vida sobre a terra

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Um Sistema De Computador é uma Máquina

• O Usuário Conversa com a Máquina

Sistema de Computador(Estendido

Pelo Software)

Entrada(input)

Usuário

Saída(output)

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Uma Máquina de Calcular

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Uma Máquina para Analisar Programas Java

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Um Sistema para Desenhar ou Máquina de Desenhar

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Um Sistema ou Máquina para Tratar Imagens

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Um Sistema ou Máquina,que Simula um Celular,

que simula um jogo de damas

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Várias Máquinas Coexistem em um Sistema de Computador em um

Mesmo Instante de Tempo

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Um Sistema de Computador Programável é uma Fábrica de Máquinas

ExtensívelE cada software descreve

como fábricar uma máquinaE o programador constrói estas

descrições de máquinas conforme especificações do que a máquina deve

fazer quando em funcionamento

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

O uso da Máquina é feito por uma Conversa, que é

Baseada uma LinguagemLinguagem A(Conversar com Celular)

Linguagem B(Conversar com Paint)

Linguagem C(Conversar com Calculadora)

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

A Linguagem da “Máquina” Paint

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

A Linguagem da “Máquina” Calculadora

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Vamos conversar com Algumas Máquinas?

• Converse com o Paint• Converse com o GIMP• Converse com o Powerpoint!• Converse com o sistema operacional

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

No que consiste o conversar?

• Num diálogo com a máquina• Na locução de frases que são

construídas numa linguagem com sintaxe e semântica próprias

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Quando uma máquina faz sucesso?

• Quando a conversa entre usuário e máquina é produtiva

• Quando do diálogo são produzidos resultados que satisfazem as necessidades do usuário

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Máquinas Complexas e Hierarquizadas

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Interpretação do Software

Máquina n+1

MáquinanSoftware Carga

Uso

Usuário

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Software em Execução

Máquinan (MCSW)

Interpretação

Software Carga...

...

Software em Execução

Máquina2 (MCSW)

Interpretação

Software em Execução

Máquina1 (MCSW)

InterpretaçãoMáquina0

MPUSoftware CargaUso

Software Carga

Uso

Uso

Um Sistema Computacional Usual

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Sistema Operacional(machine)

Loadingcmd(machine)

JVM – Java Virtual Machine(machine)

Interpretation

Loader(machine)

Interpretation

inputoutput

usuário

Echo(machine)

Interpretation

vc0(machine)

Loadingecho.txt(software) input

output

Loader.class(software) input

output

java.exe(software) input

output

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Sistema Operacional(machine)

Interpretation

input

output

cmd(machine)

Loading

Uma Máquina explorer criada pelo sistema operacional

Usuário do Sistema Operacional

explorer.exe(software)

Readexplorer

(machine)

input

outputUsuário do Explorer

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Você Usa ou Testa Software?

public class Calc {private int estadoInteracao;

private int operacaoSelecionada;private long acumulador0;private long acumulador1;private static final int NENHUMA = 0;private static final int SOMA = 1;private static final int SUBTRACAO = 2;private static final int ACUMULANDO_0 = 0;private static final int ACUMULANDO_1 = 1;public Calc() {}long soma() {operacaoSelecionada = SOMA;estadoInteracao = ACUMULANDO_1;return acumulador0;

}long um() {return numeroDigitado(1);}long dois() {return numeroDigitado(2);}long numeroDigitado(int valor) {if (estadoInteracao == ACUMULANDO_0) {acumulador0 = acumulador0 * 10 + valor;estadoInteracao = ACUMULANDO_0;return acumulador0;

} else if (estadoInteracao == ACUMULANDO_1) {

acumulador1 = acumulador1 * 10 + valor;estadoInteracao = ACUMULANDO_1;return acumulador1;

}return 0;

}long igual() {long resultado = 0;if (operacaoSelecionada == SOMA) {resultado = acumulador0 + acumulador1;

}reset();return resultado;

}long reset() {estadoInteracao = ACUMULANDO_0;operacaoSelecionada = NENHUMA;acumulador0 = 0;acumulador1 = 0;return acumulador0;

}}

import java.awt.*;import java.awt.event.*;public class CalcVisual extends Frame {// Cria os painéisPanel panelTeclas = new Panel();Panel panelTeclasTopo = new Panel();Panel panelTeclasNumericas = new Panel();

// cria os gerenciadores de layout dos painéisBorderLayout BorderLayoutPrincipal = new BorderLayout();BorderLayout BorderLayoutTodasAsTeclas = new BorderLayout();GridLayout gridLayoutClearCEBackSpace = new GridLayout();GridLayout gridLayoutTeclasNumericasEOperacoes = new GridLayout();

// cria a área de display da calculadoraTextField textFieldDisplay = new TextField();

// cria os botões da calculadoraButton buttonBackspace = new Button();Button buttonC = new Button();Button buttonCE = new Button();Button button_0 = new Button();Button button_1 = new Button();Button button_2 = new Button();Button button_3 = new Button();Button button_4 = new Button();Button button_5 = new Button();Button button_6 = new Button();Button button_7 = new Button();Button button_8 = new Button();Button button_9 = new Button();Button button_pontoDecimal = new Button();Button button_igual = new Button();Button button_soma = new Button();Button button_subtracao = new Button();Button button_mult = new Button();Button button_divisao = new Button();Button button_percento = new Button();Button button_raiz = new Button();Button button_inverteSinal = new Button();Button button_reciproco = new Button();

// cria o "modelo de dados", isto é, o próprio objeto calculadora// que irá efetivamente realizar os cálculosCalc calc = new Calc();

// construtor da parte visual da calculadorapublic CalcVisual() {

try {buildGUI();

} catch (Exception e) {e.printStackTrace();

}}/*** Constroi os elementos da interface grafica da calculadora*/private void buildGUI() throws Exception {

// ajusta as propriedades displaytextFieldDisplay.setText("0");

// modifica cores de alguns botõesbuttonBackspace.setForeground(Color.red);buttonC.setForeground(Color.red);buttonCE.setForeground(Color.red);

// atribui rótulos aos botões da calculadorabuttonC.setLabel("C");buttonCE.setLabel("CE");buttonBackspace.setLabel("Backspace");button_0.setLabel("0");button_1.setLabel("1");button_2.setLabel("2");button_3.setLabel("3");button_4.setLabel("4");button_5.setLabel("5");button_6.setLabel("6");button_7.setLabel("7");button_8.setLabel("8");

button_9.setLabel("9");button_soma.setLabel("+");button_igual.setLabel("=");

// adiciona alguns botões no painel de teclas superiorgridLayoutClearCEBackSpace.setColumns(3);panelTeclasTopo.setLayout(gridLayoutClearCEBackSpace);panelTeclasTopo.add(buttonBackspace, null);panelTeclasTopo.add(buttonCE, null);panelTeclasTopo.add(buttonC, null);

// adiciona alguns botões no painel de teclas inferiorgridLayoutTeclasNumericasEOperacoes.setRows(4);gridLayoutTeclasNumericasEOperacoes.setColumns(5);gridLayoutTeclasNumericasEOperacoes.setHgap(4);gridLayoutTeclasNumericasEOperacoes.setVgap(4);panelTeclasNumericas.setLayout(gridLayoutTeclasNumericasEOperacoes);panelTeclasNumericas.add(button_7, null);panelTeclasNumericas.add(button_8, null);panelTeclasNumericas.add(button_9, null);panelTeclasNumericas.add(button_divisao, null);panelTeclasNumericas.add(button_raiz, null);panelTeclasNumericas.add(button_4, null);panelTeclasNumericas.add(button_5, null);panelTeclasNumericas.add(button_6, null);panelTeclasNumericas.add(button_mult, null);panelTeclasNumericas.add(button_percento, null);panelTeclasNumericas.add(button_1, null);panelTeclasNumericas.add(button_2, null);panelTeclasNumericas.add(button_3, null);panelTeclasNumericas.add(button_subtracao, null);panelTeclasNumericas.add(button_reciproco, null);panelTeclasNumericas.add(button_0, null);panelTeclasNumericas.add(button_inverteSinal, null);panelTeclasNumericas.add(button_pontoDecimal, null);panelTeclasNumericas.add(button_soma, null);panelTeclasNumericas.add(button_igual, null);

// adiciona ao painel geral de todas as teclas // os dois paineis de teclas menores// ajusta as propriedades dos gerenciadores de layoutpanelTeclas.setLayout(BorderLayoutTodasAsTeclas);panelTeclas.add(panelTeclasTopo, BorderLayout.NORTH);panelTeclas.add(panelTeclasNumericas, BorderLayout.CENTER);

// ajusta propriedades gerais visuais da interfacethis.setSize(250, 275);this.setResizable(false);this.setLayout(BorderLayoutPrincipal);// adiciona o painel geral de teclas ao centro frame (this)this.add(panelTeclas, BorderLayout.CENTER);// adiciona o display ao topo do frame (this)this.add(textFieldDisplay, BorderLayout.NORTH);

/*** cria os vários tratadores de evento

*/// cria o tratador de evento para o botão C (clear)buttonC.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {buttonC_actionPerformed(e);

}});// cria o tratador de evento para o botão "1"button_1.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {button_1_actionPerformed(e);

}});

// cria o tratador de evento para o botão "2"button_2.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {

button_2_actionPerformed(e);}

});// cria o tratador de evento para o botão "+"button_soma.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {

button_soma_actionPerformed(e);}

});// cria o tratador de evento para o botão "-"button_subtracao.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {

button_subtracao_actionPerformed(e);}

});// cria o tratador de evento para o botão "*"button_mult.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {

button_mult_actionPerformed(e);}

});// cria o tratador de evento para o botão "/"button_divisao.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {

button_divisao_actionPerformed(e);}

});// cria o tratador de evento para o botão "="button_igual.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {

button_igual_actionPerformed(e);}

});// cria o tratador de evento para o comando de janelas window close // (ALT+F4 no windows)this.addWindowListener(new java.awt.event.WindowAdapter() {public void windowClosing(WindowEvent e) {

this_windowClosing(e);}

});// mostra a interface grafica para o usuárioshow();

}// métodos que implementam o tratamento de eventosvoid this_windowClosing(WindowEvent e) {

System.exit(0);}void button_soma_actionPerformed(ActionEvent e) {this.textFieldDisplay.setText("" + calc.soma());

}void button_subtracao_actionPerformed(ActionEvent e) {this.textFieldDisplay.setText("" + calc.sub());

}void button_mult_actionPerformed(ActionEvent e) {this.textFieldDisplay.setText("" + calc.mult());

}void button_divisao_actionPerformed(ActionEvent e) {this.textFieldDisplay.setText("" + calc.div());

}void button_igual_actionPerformed(ActionEvent e) {this.textFieldDisplay.setText("" + calc.igual());

}void button_1_actionPerformed(ActionEvent e) {this.textFieldDisplay.setText("" + calc.um());

}void button_2_actionPerformed(ActionEvent e) {this.textFieldDisplay.setText("" + calc.dois());

}void buttonC_actionPerformed(ActionEvent e) {this.textFieldDisplay.setText("" + calc.reset());

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

CalcVisual CalcVisual1 = new CalcVisual();}

}

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Software ou Sistema?

Device Drivers

Hardware

Windows

Win32

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Ser livre é ter liberdade para pensar, criar e se comunicar

com sistemas de computadores complexos e

hierarquizados:Apropriar-se dos meios de

comunicação com as máquinas computáveis

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Conversas com Sistemas Sistemas Computacionais

muito Abstratos

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Descrever Casos de Uso de uma Aplicação …# Caso de Uso Descrição

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Mapa de navegação de uma aplicação…

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Conceber um mapa de um site

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Conversas com Sistemas Sistemas Computacionais

menos Abstratos

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Descrever Estruturas de uma aplicação

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Descrever Comportamentos…

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Conversas com Sistemas Computacionais Concretos:

Programação

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Construir Código compreensível e útil

• Construir programas funcionais e coerentes através da codificação, auto-validação e teste unitário.

• Passos– Organize a arquitetura e design antes de

implementar– Entenda as APIs antes de usar– Utilize técnicas e convenções de codificação– Faça teste unitário dos módulos– Adote padrões e idiomas de design

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Testar Software e Sistemas

• Verificar dinamicamente o comportamento do programa através do uso de um conjunto finito de casos de teste - adequadamente selecionados de um domínio de execuções usualmente infinito - contra o comportamento esperado deste

• Passos– Defina e documente um plano de teste e um

formulário de log de testes, que serão executados durante o desenvolvimento da aplicação e que servirão para validar a aplicação antes de entregar/apresentar

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Plano de Teste

Histórico de Alterações: <DT-CRIACÃO> <ALT-1> <ALT-2>,…, <ALT-N>

Caso de TesteCASO 1 Objetivo: <OBJETIVO DO CASO DE TESTE-1>

Passos: Resultado Esperado<PASSO-1-1> <RESULTADO-1-1><PASSO-1-2> <RESULTADO-1-2>

<PASSO-1-n> <RESULTADO-1-n>

CASO 2 Objetivo: <OBJETIVO DO CASO DE TESTE-2>Passos: Resultado Esperado<PASSO-1-1> <RESULTADO-1-1><PASSO-1-2> <RESULTADO-1-2>

<PASSO-1-n> <RESULTADO-1-n>

Plano de Teste: <APLICACAO> <VERSÃO-DO-PLANO>Autor: <AUTOR-PLANO>

Configuração sob teste: <DESCRIÇÃO-CONFIG><VERSÃO-CONFIG>

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Log de Teste

Casos de TesteCASO 1 Objetivo: <OBJETIVO DO CASO DE TESTE-1>

Passos: Resultado Esperado Observações<PASSO-1-1> <RESULTADO-OBTIDO> <ERRO? Ou ACERTO?><PASSO-1-2> <RESULTADO-OBTIDO> <ERRO? Ou ACERTO?>

<PASSO-1-n> <RESULTADO-OBTIDO> <ERRO? Ou ACERTO?>

CASO 2 Objetivo: <OBJETIVO DO CASO DE TESTE-2>Passos: Resultado Esperado<PASSO-1-1> <RESULTADO-OBTIDO> <ERRO? Ou ACERTO?><PASSO-1-2> <RESULTADO-OBTIDO> <ERRO? Ou ACERTO?>

<PASSO-1-n> <RESULTADO-OBTIDO> <ERRO? Ou ACERTO?>

Log de Teste: <APLICACAO> <VERSÃO-DO-PLANO>Testador: <TESTADOR>

Configuração sob teste: <DESCRIÇÃO-CONFIG><VERSÃO-CONFIG>Data: <DATA DE REALIZACAO DO TESTE>

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

A Amplitude das Plataformas Computacionais Atuais

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Cadeia de Valor na Era da Convergência Digital

Back-End Wap/WebServers Internet Mobile/Broadcast

NetworkNetwork

Content ContentProvision

ContentAggregation

SoftwareDevelopment

PaymentSolutions

SecuritySolutions

SoftwarePlatforms

ApplicationDevelopmentTechnology

Portals/Services/Channels

Devices (TV / Mobile)Interface

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Middleware: Solução para Organização da

Complexidade dos Sistemas Computacionais

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Middleware: Um Modelo de Portabilidade

• Uma camada de software que provê uma API (Application Programming Interface) genérica, padronizada e bem definida que abstrai especificidades e heterogeneidades de hardware e software dos diversos tipos de dispositivos

Hardware

Sistema Operacional

API Genérica

Aplicações

•Desenvolvedores independentes•Diferentes provedores de serviços•Diversas áreas de aplicação

•Implementações independentes•Diferentes plataformas de hardware•Diferentes plataformas de sistemaoperacional

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Parte 2: Plataforma e Linguagem de

Programação Java

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Java: Uma Plataforma de Desenvolvimento de Software

com Arquitetura Aberta e Amplo Espectro de Aplicação

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Java é uma proposta de middleware que apresenta várias características de

suporte ao modelo aberto de desenvolvimento de software e sistemas: Arquiteturas bem

conhecidas

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Edições Java 2 e Seus

Dispositivos

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Linguagem de Programação Java

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Introdução

• A linguagem de Programação Java™ é– De uso geral– Concorrente– Baseada em classes– Orientada a objetos– Fortemente tipada– Compilada

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Tempo de compilação (compile-time) e tempo de execução (runtime)

• Tempo de compilação – Tradução para byte-code independente de

máquina• Tempo de Runtime

– Carga e ligação de classes necessárias à execução

– Geração de código de máquina (opcional)– Otimização dinâmica do programa– Execução do código

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Gerenciamento Automático de Memória

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Tipos e valores: primitivos e referências

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Organização modular

• Organização em packages, similar à linguagem Modula. – Membros de um package:

• classes, interfaces, e subpackages

– Packages são divided em unidades de compilação

• Unidades de Compilação– Contem declarações de tipos– Podem importar tipos de outros packages

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Métodos e Variáveis de Classe e Instância

• Variáveis de classe – uma por classe• Métodos de classe – operam sem

referência a instâncias específicas• Variáveis de instância – dinamicamente

criadas em objetos que são instâncias de uma classe

• Métodos de instância – são invocados sobre uma instância de uma classe: this

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

String

Strings de caracter em formato Unicode

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Herança (inheritance)

Herança simples de implementação

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Sincronização e Exceções

Programação concorrente com métodos sincronizados

Declaração de exceções checadas em tempo de

compilação

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Interfaces

• Declaram métodos abstratos, tipos aninhados e constantes

• Classes não relacionadas por herança podem implementar a mesma interface

• Uma variável do tipo de uma interface pode conter uma referência a qualquer objeto que implementa a interface

• Implementação de múltiplas interfaces

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Arrays

Com verificação de limites de acesso

Arrays são objetos dinâmicamente criados

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Tratamento de Exceções

• Totalmente integrado com a semântica da linguagem e mecanismos de concorrência

• Três tipos de exceções: – Checadas– Run-time– Errors

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Blocos e Comandos

• Baseados em C e C++. • Sem goto, mas com break e continue• Sem conversão entre booleanos e inteiros• Blocos sincronizados• Comando try, com cláusulas catch e finally

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Expressões

• Com ordem de avaliação completamente especificada: determinismo e portabilidade

• Métodos e construtores sobrecarregados e sobrescritos

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Threads e Locks

• Usa modelo de concorrência baseado em monitor, introduzido originalmente com a linguagem Mesa

• Modelo de memória para sistemas multi-processados com memória compartilhada

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Java – Organização Léxica e Sintática

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Java – Organização Léxica

• Análise léxica de uma unidade de compilação (arquivo) produz uma seqüência de tokens

Tradução léxica (tradução para unicode,tradução para input chars e terminadores,

produção de input-elements)

White-spaceComments

Tokens (terminais)

class HelloWorld { // HelloWorldpublic static void main(String[] args) {

System.out.println( “Olá”+”Mundo \u0030”);}

}Id

KWLiteralSep

Operator

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

“{”: Sep

“HelloWorld”: Id

“class”: KW

“}”: Sep

“{“:Sep “}“:Sep“public”: KW

“static”: KW

“void”: KW“main”:Id

“(“:Sep“)“:Sep

“String”: Id “]“:Sep“[“:Sep

“args”: Id“String”: Id “s”: Id

“System”: Id

“.“:Sep

“out”: Id

“.“:Sep“println”: Id

“(“:Sep

“)“:Sep

“s”: Id

“\”Olá\””:Lit “\”Mundo0\””:Lit“+”:Oper

Java Organização Sintáticaclass HelloWorld { // HelloWorld

public static void main(String[] args) {String s = “Olá”+”Mundo \u0030”;System.out.println(s);

}}

Identifier-IdKeyword-KW

Literal-LitSeparator-SepOperator-Oper

ClassBody

ClassBodyDecl

Class-Decl

Type-Decl

CompilationUnit

Block

MethodDecl

MethodDeclarator

ResultTypeFormalParas

FormalParam

Type

Name

Name

BlockStmtBlockStmt

Name

StmtExprStmtLocalVarDecl

Type VarDecl

Name VarInit

Expr

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Java: Um Modelo de Organização Semântica

Estruturas de Controle

Concorrência etratamento de exceções

Subrotinas

herança de implementações

Classes

alocação de memória

Objetos

classes-módulos-interfaces

Herança

estruturas de controle e subrotinas

variáveis e tipos de dados

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Linguagem Java: Keywords[1996]

Estruturas de Controle

Concorrência etratamento de exceções

Subrotinas

herança de implementações

Classes

alocação de memória

Objetos

classes-módulos-interfaces

Herança

estruturas de controle e subrotinas

variáveis e tipos de dados

Estruturas de Controle

Concorrência etratamento de exceções

Subrotinas

herança de implementações

Classes

alocação de memória

Objetos

classes-módulos-interfaces

Herança

estruturas de controle e subrotinas

variáveis e tipos de dados

public

gotoinstanceofvoidclass

constsuperreturnfinalnativecontinuestatic

volatileextendsdefaultdouble

transientabstractswitchfloatsynchronizedprotectedbreaklongfinallyprivateforintcatchpackagedochartryimportwhileshortthrowsthisinterfaceelsebytethrownewimplementsifboolean

public

gotoinstanceofvoidclass

constsuperreturnfinalnativecontinuestatic

volatileextendsdefaultdouble

transientabstractswitchfloatsynchronizedprotectedbreaklongfinallyprivateforintcatchpackagedochartryimportwhileshortthrowsthisinterfaceelsebytethrownewimplementsifboolean

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Linguagem Java: Literais• Integer

– DecimalInteger– HexInteger– OctalInteger

• FloatingPoint– Float– Double

• Boolean– true, false (reserved literal words)

• Character• String• Null Literal

– null (reserved literal word)

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Linguagem Java: Separadores

( ) { } [ ] ; , .

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Linguagem Java: Operadores= attrib > greather

++ incr < smaller

-- decr ! not

+ sum += attrib-sum ~ bitwise-inv

- sub -= attrib-sub ? conditional

* mult *= attrib-mult : conditional

/ div /= attrib-div == equals

% remainder %= attrib-rem-div <= small-or-equal

& and-bin &= attrib-and-bin >= great-or-equal

| or-bin |= attrib-or-bin != different

^ xor-bin ^= attrib-xor-bin || logical-or

<< shiftleft <<= attrib-shl && logical-and

>> shiftright >>= attrib-shr

>>> unsigned-shr >>>= attrib-unsigned-shr

Numéricos Atribuição Lógicos

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Linguagem Java: Categorias de Variáveis

• Variáveis de classe– Usam a palavra reservada

static numa declaração de classe

– Dentro de uma declaração de interface

• Variáveis de Instância – Declaradas no escopo de

uma classe sem a palavra reservada static

• Componentes de array– Variáveis não nomeadas

dentro de um array

• Parâmetros de métodos– Valores de argumentos

nomeados passados para um métodos

• Parâmetros de Constructor– Valores de argumentos

nomeados passados para um métodos

• Parâmetros de tratamento de exceção– Criadas sempre que uma

exceção e agarrada em uma clásula catch

• Variáveis locais– Declaradas dentro de

blocos

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Aprendendo a Programar em Java: Reconstruindo a

História das Linguagens de Programação

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Programação Estruturada em Java

• Algoritmos simples

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Tipos de dados

• Primitivos• Referências

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Programação Java Baseada em Classes: Métodos e

variáveis estáticas• Calculando com módulos

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Programação Java Baseada em Objetos: Métodos e variáveis de instância

• Alocando Memória

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Interfaces, contratos e arquiteturas

• Descrevendo e implementando contratos

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Parte 3:Aplicações de Java na

programação de pequenos programas em computadores

pessoais

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Programação de pequenos programas em computadores

pessoais• Linguagem Java + Java 2 Standard Edition• Ferramenta para desenvolvimento

– Java Development Kit – JDK

• Ferramenta para Aprendizagem– BlueJ

• Exemplos– Interface Gráfica– Acesso a arquivos– Conectividade de rede

• Estado da prática

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Estrutura Hierárquica da Interface de uma Calculadora

:Frame (Container)

:TextField (Component)

:Panel (Container)

“7”:Button “8”:Button “9”:Button “/”:Button

“4”:Button “5”:Button “6”:Button “*”:Button

“1”:Button “2”:Button “3”:Button “-”:Button

“0”:Button “+/-”:Button “.”:Button “+”:Button

“=“:Button “C”:Button “%”:Button “M+”:Button

[components]

[components]

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Parte 4:Aplicações de Java no

Desenvolvimento de módulos de sistemas web

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Aplicações de Java no Desenvolvimento de módulos de

sistemas web• Arquitetura de Sistemas Web

– HTTP/HTML/JDBC• Animação em Páginas HTML: Applet• Usando o Protocolo HTTP: Servlet• Gerando Páginas HTML: JSP• Conectividade com SGBDs: JDBC• Estado da prática

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Arquiteturas Multi-Camadas com ServletsTwo-Tier

Cliente JavaAplicação/Applet,

HTML Browserjava.net

A B C

SGBD Relacional

MiddlewareHTTP

N-Tier

Servlets

HTTP

Three-Tier

MiddlewareHTTP

javax.servlet

java.sqlServlets

java.servlet

Servlets

javax.servlet

Cliente JavaAplicação/Applet,

HTML Browserjava.net

Cliente JavaAplicação/Applet,

HTML Browserjava.net

java.net, javax.servlet

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Arquiteturas Multi-Camadas com Enterprise Java Beans (EJBs)

Two-TierCliente Java

Aplicação/Applet,

java.rmi, javax.jndi

A B C

SGBD Relacional

MiddlewareRMI, JNDI

N-Tier

Servlets

HTTP

N-Tier

MiddlewareRMI, JNDI

javax.ejb

java.sqlEJBs

javax.ejbEJBs

javax.servlet

Cliente JavaAplicação/Applet

Cliente JavaAplicação/Applet,

HTML Browserjava.net

java.rmi, javax.jndi

java.rmi, javax.jndi

java.rmi, javax.jndi

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Construindo um Pequeno Exemplo: Uma Aplicação de Consulta a Dados

de um Restaurante

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Um Restaurante

• Quer oferecer o cardápio de pratos através da internet– Consulta cardápio– Faz pedido

• Clientes web• Clientes via celular• Clientes através de televisão digital

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Arquitetura da Aplicação Restaurante usando Browser

Cliente Web Servidor Web Servidor Dados

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Protocolos Usados

• HTTP (Servlets)• SQL (JDBC)

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Um Típico Pedido HTTP (com GET)

GET /~jhcf/CGI/Welcome.html HTTP/1.0Connection: Keep-AliveUser-Agent: Mozilla/4.5 [en] (WinNT; I)Host: www.cic.unb.br:80Accept: image/gif, image/x-xbitmap, image/jpeg,

image/pjpeg, image/png, */*Accept-Encoding: gzipAccept-Language: enAccept-Charset: iso-8859-1,*,utf-8

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Uma Típica Resposta HTTPHTTP/1.1 200 OKDate: Wed, 28 Jul 1999 02:29:08

GMTServer: Apache/1.2.5Last-Modified: Wed, 28 Jul 1999

01:32:21 GMTETag: "1bfc-62-379e5da5"Content-Length: 98Accept-Ranges: bytesKeep-Alive: timeout=15, max=100Connection: Keep-AliveContent-Type: text/html

<HTML><HEAD><TITLE>Saudação</TITLE></HEAD><BODY><H1>Bem vindo à Web!</H1></BODY></HTML>

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

NomeAnoMod

FormulárioNomeAnoMod

Sepia1997999.999

Formulário

Web Server

WWW(HTTP)

Web Browser

HTTP e HTML com Servlets

Servlet Engine

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

ClienteCliente

Java CORE APIsJDBC API A B C

Bases de DadosSGBD Relacional

Modelo Computacional JDBC

createStmt()

execUpdate()execQuery()

ConnStmt ResultSet

get*(“Col-n”); get*(n);next();next();

DriverMngr

Aplicação

Driver

getConn()

Servidor

Col-1 Col-2 ... Col-nnext();

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Construindo a Aplicação Restaurante usando Browser

Cliente Web Servidor Web Servidor Dados

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Java e a Computação Corporativa: Estado da Arte

• Muita gente desenvolvendo soluções para organizações de pequeno e médio porte

• Modelo já estabelecido no Brasil

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Parte 5:Software Java para dispositivos móveis como celulares e PDAs

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Software para dispositivos móveis como celulares e PDAs

• J2ME/MIDP• Arquitetura de sistemas com mobilidade

– HTTP/XML• Programação de pequenos programas para

celulares– Dispositivos de acesso a dados– Jogos e outras aplicações com interface gráfica

de baixo nível• Estado da prática

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Limitações dos Dispositivos Móveis

• Pequena espaço de display• Pequeno espaço para entrada de dados• “Pequeno” espaço de memória • “Pequena” capacidade de processamento• Pequena banda de rede• Rede insegura• Trabalho eventual em modo desconectado• Necessidade de sincronização

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Vantagens dos Dispositivos Móveis

• O celular é mais importante que a Internet!– A internet está no celular

• Computador móvel, de baixo custo, com alta taxa de penetração mundial

• Canal de lucros constante através dos modelos fidelizadores das operadoras

• Curto ciclo de renovação tecnológica• Oportunidades de integração com automação

doméstica e corporativa

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Características do Modelo de Aplicações e Serviços Móveis• Independência de localização• Conectividade instantânea• Adaptabilidade e intimidade• Novas formas de trabalho• Novas formas de negociação• Novas formas de entretenimento

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Categorias de Aplicações da Internet Móvel[MBS, 2001]Corporativo ConsumidorVoz VozE-mail E-mailMensagem instantânea Mensagem instantâneaMessagem unificada Messagem unificadaFerramentas de trabalho em grupo ChatVideo telefonia Video telefonia

Serviços em comunidadeCartões postais digitais

Varejo VarejoComércio-baseado em localização Comércio-baseado em localizaçãoCorretagem de ações Compras por comparação no shoppingServiços bancários Compra de ticketsLeilões corporativos Corretagem de açõesComércio multicanais Serviços bancáriosSeguros Leilões corporativosReservas Comércio multicanaisAnúncios Música

Jogos e apostasTons musicais e íconesSegurosReservasAnúncios

Notícias financeiras e industriais NotíciasCRM - Customer Relatioship Management EntretenimentoRelatórios gerenciais ViagensGerência de frota Direcionamento ao volanteAutomação de força de vendas Serviços baseados em localizaçãoAuto-serviço para empregados SegurançaGerenciamento de viagens Controle remoto domésticoRecrutamento CalendárioGerenciamento de cadeia de suprimentos Serviços sociaisGerencia de recursos humanos Mensagens instantâneasSegurançaControle remoto

Comércio

Comunicação

Serviços de valor agregado

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

MIDlets

• Pequenas aplicações instaláveis em um dispositivo MIDP, baseadas numa API bastante reduzida de programação, formada por aproximadamente – 138 classes e interfaces (MIDP 1.0)

• Similar ao modelo de applets• Downloadable• Permite criar serviços para consumidores de

telefones celulares – jogos e aplicações de comércio

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Mobile Information Devices(Versão 1.0)

• Mobilidade– Operado com bateria

• Memória (mínima)– 128KB de memória não volátil para implementação MIDP– 8KB de memória não volátil para persistir dados das

aplicações– 32KB de runtime e heap

• Interface com o usuário (mínima)– Display com 1 bit de cor e resolução mínima de 96 x 54

pixels– Entrada de dados via teclado ou tela sensível ao toque

• Conexões de rede bidirecionais, com banda limitada

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

J2ME: Organização em Configurações e Perfis

...Profile

Mobile Information DeviceProfile (MIDP)

...Profile

...Profile

...Profile

...Profile

Connected DeviceConfiguration (CDC)

Connected, Limited DeviceConfiguration (CLDC)

JVM (CVM) KVM (Kilo Virtual Machine)

Foundation Profile

...Profile

...Profile

...Profile

Mobile Information DeviceProfile (MIDP)

...Profile

...Profile

...Profile

...Profile

Connected DeviceConfiguration (CDC)

Connected, Limited DeviceConfiguration (CLDC)

JVM (CVM) KVM (Kilo Virtual Machine)

Foundation Profile

...Profile

...Profile

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Evolução das Tecnologias de Sistemas Interativos na Web

HTML Browser

HTML + FORMS

HTML Browser + Java VM

Applet

WAP Cell Phone

WML

MIDP Cell Phone

MIDlet

Wireless

Desktop

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Applet 1

Applet 2

Applet 3

Interface Browser

WWW(HTTP(s))

Web BrowserWeb Server

Funcionamento dos Applets

Applet 1

Applet 2

Applet 3

Classe

Objeto

Applet 1

Applet 2

Applet 3

Página HTML

SandboxClasse Applet

Objeto Applet

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Objeto MIDlet

WWW(HTTP(s))

Funcionamento dos MIDlets

SUITE 1

SUITE 2

SUITE 3

Web Server

SUITE 2

SUITE 1

SUITE 3

MIDlet B

MIDlet A

SUITE 2

SUITE 1

SUITE 3

MIDlet B

MIDlet A

MIDlet C

SUIT

E 3

SUIT

E 1

ClasseObjeto

Applet 1

Applet 2

Applet 3 Página HTML

Descritor de Aplicação (JAD)

Arquivos (Imagens, etc)

SandboxRepositórioWeb

RecordStore

Classe MIDlet

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

HelloWorldMIDlet: Implementaçãoimport javax.microedition.midlet.MIDlet;import javax.microedition.lcdui.*;public class HelloWorldMIDlet extends MIDlet implements CommandListener {

private Command exitCommand;private TextBox textBox;public HelloWorldMIDlet() {

exitCommand = new Command("Exit", Command.EXIT, 1/*Priority*/);textBox = new TextBox("OláMundo MIDlet” /* Nome do componente */,

"Olá, Mundo!“ /* conteúdo */, 15 /*tamanho máximo */, 0 /*máscara*/);textBox.addCommand(exitCommand);textBox.setCommandListener(this);

}protected void startApp() {

Display.getDisplay(this).setCurrent(textBox);}protected void pauseApp() {}protected void destroyApp(boolean unconditional) {}public void commandAction(Command c, Displayable d) {

if (c == exitCommand) {destroyApp(false);notifyDestroyed();

}}

}

// Adapta para tratar comandos// Para associar a softkey// Para entrada de dados

// Criação e // interligação

// entre objetos

// Exec.quando MIDLet é ativado

// Exec. quando MIDlet é suspenso// Exec. quando MIDLet é destruído

// Exec. quando comando é acionado

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

HelloWorldMIDlet em Ação: Diagrama de Objetos

:TextBoxtextBox

<<displayable>>

1.1 – Criação de um textBox (Displayable) para preencher o display

:HelloWorldMIDlet

1 – new HelloWorldMIDlet() - Criação do MIDlet

:CommandexitCommand

1.2 – Criação de comandos para inserir no Displayable

:Display

theDisplay

2 – startApp() - Associação do Displayable ao Display

current

3 – commandAction() – Ativação do comando “Exit”3.1 – destroyApp() – Desativação do MIDlet

current

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Packages CLDC1.0/MIDP 1.0J2SE

CDC

CLDC

javax.microedition.lcdui javax.microedition.midlet javax.microedition.rms

java.util

MIDP1.0javax.microedition.io

java.lang java.io

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

CLDC1.0/MIDP1.0: java.lang

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

CLDC1.0/MIDP1.0: java.io

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

CLDC1.0: java.util - MIDP1.0: java.util

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

CLDC1.0: javax.microedition.ioe MIDP1.0: javax.microedition.io

GENERIC CONNECTION FRAMEWORK

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

MIDP1.0: javax.microedtion.midlet

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

MIDP1.0: javax.microedition.lcdui

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

javax.microedition.rms

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Arquitetura da Aplicação M-Commerce em J2EE [Gupta and Mayank, 2001]

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Arquitetura da Aplicação Restaurante usando

Dispositivo Móvel

Dispositivo Móvel Gateway/Servidor Web

Servidor Dados

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Java e a Computação Móvel: Estado da Arte

• Muita gente desenvolvendo soluções que dão lucro

• Modelo Asiático/Americanode consumo já bem desenvolvido

• Oportunidades no Brasil

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Parte 6:Software em Java para

plataformas de televisão digital interativa

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Breve Introdução à Televisão Digital Interativa

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Televisão Interativa

• Apresentação de menus e seleções de links em um aparelho de tv

• Associada ao conteúdo apresentado• Que pode estar interagindo com o

broadcaster

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Televisão Digital

• Padrão para codificação, transmissão, modulação, difusão e recepção digital de programas televisivos

• TV Digital– Terrestre– Satélite– Cabo

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Substituição Analógica->Digital

• Arquivos -> Sistemas de Arquivos• LP -> CD• Telefone Analógico -> Digital• Celular Analógico -> Digital• Televisão Analógica -> Digital

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Ondas de Impacto na Transformação Analógica->Digital

• 1a – Substituição de Equipamentos de Estúdio / Laboratório

• 2a – Padrão Uniforme de Distribuição e Transmissão

• 3a – Novos Modelos de Negócios

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Aplicações em TVDI

• Televisão Digital de Alta Definição

• Democracia Eletrônica• Guias de Programação

Eletrônica (EPG)• Pay-Per-View• Personalização• Personal Video

Recorder

• Vídeo sob Demanda com Inscrição

• Propaganda Focalizada• T-Commerce• Jogos baseados na TV• Vídeo sob Demanda• Walled Garden• BroadBand Data Transfer• Rede Doméstica• Segurança Doméstica

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Arquitetura de Alto Nível de um Sistema de TV

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Arquitetura Atual de

Sistemas de TV

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Arquitetura de

Sistemas de TV Digital

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Impactos da TVD

• Sobre o Estúdio– Câmera com maior resolução – Codificador MPEG-2– Streams de A/V armazenáveis em DVD – Ilha de Edição não Linear– distribuição dos programas através de

rede de computadores

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Impactos da TVD

• Sobre a Central de Produções– Chamada de provedora de serviços– Streamer

• transmite e recebe fluxos de transporte MPEG-2 (MPEG-2-TS)• aumenta fortemente a capacidade de integração da Central

com uma maior quantidade de estúdios, inclusive externos• Reduz o uso de satélite

– Multiplexador• Agrega programas de vários estúdios para distribuição em rede

de tv

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Impactos da TVD• Impacto da TV Digital sobre a Rádio-Difusão

– Técnicas de compressão • Tornam possível transmitir pelo menos 4 programas com qualidade

superior• Transmitir programas e dados adicionais

– Módulo Remultiplexador• Responsável por fazer a multiplexação entre os vários TS gerados por

uma ou mais centrais de produção• Eliminar, substituir ou inserir programas e fluxos de dados que serão

veiculados• Inserir informações gerais sobre a programação dos vários canais

veiculados• Proteger programas cujo conteúdo é consumido através de pagamento

(pay-per-view). • Permite ao difusor operar uma maior quantidade de Centrais de

Produção (Provedores de Serviços), o que aumenta a oferta de conteúdo e canais.

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Impactos da TVD

• Sobre a Recepção Doméstica– Necessita de um STB

• equipamento digital com capacidade de processamento de sinais de áudio e vídeo, e eventualmente capacidade de execução de programas

• Capaz de receber, demodular, decodificar e remodular o sinal televisivo

• Gera sinal de A/V compatível com televisores analógicos

– Interação• Pseudo e Real

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

TV Digital Pseudo-InterativaEnhanced DTV

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

TV Digital

Interativa

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Arquitetura Genérica de um STB Interativo

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Arquitetura do Carrossel

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Uma questão fundamental para o sucesso de um sistema

de televisão digital!Adoção e aceitação de padrões

abertos para os vários componentes do sistema

No Brasil…Milhares de estações transmissoras

e retransmissoras Milhões de aparelhos receptores

E no Mundo…

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Modelo de Referência ITU, para TVD [2]

MPEG-2 Padrões Mundiais

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

MPEG-2 Video, Audio e Systems [5]

• PS – Arbitrary size packets – Variable bitrate• TS – 188 bit Packets – Fixed bitrate

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

MPEG-2 SystemsTS - Transport Streams

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Estrutura de um Transport Stream

• PID – Packet Identification Code• PCR – Program Clock Reference

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

MPEG-2-TS-PSI PMT: Program Map Table

......

...

Multiplexer

Elementary stream 1 (Video)

Elementary stream 2 (Audio1)

Elementary stream 3 (Audio2)

Elementary Stream n-1 (Data i)

Elementary stream map(program_map_tabl e)

PID1PID2

PID3

PID(n-1)

PID(n+1)

PIDnElementary Stream n (Data j)

MU Xedprogramtransportbit stream

......

...

Multiplexer

Elementary stream 1 (Video)

Elementary stream 2 (Audio1)

Elementary stream 3 (Audio2)

Elementary Stream n-1 (Data i)

Elementary stream map(program_map_tabl e)

Elementary stream map(program_map_tabl e)

PID1PID2

PID3

PID(n-1)

PID(n+1)

PIDnElementary Stream n (Data j)

MU Xedprogramtransportbit stream

MU Xedprogramtransportbit stream

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

MPEG-2-TS-PSIPAT: Program Association Table

......

...

Multiplexer

Program transport stream 1

Program transport stream 2

Program transport stream 3

Program transport stream 4

Program transport stream 5System level multiplex

Program stream map(program_assocication_table)

PID = 0

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Remultiplexação...

......

Multiplexer

Program transport stream 1

Program transport stream 2

Program transport stream 3

Program transport stream 4

Program transport stream 5System level multiplex

Program stream map(program_assocication_table)

PID = 0

......

...

Multiplexer

Program transport stream 1

Program transport stream 2

Program transport stream 3

Program transport stream 4

Program transport stream 5System level multiplex

Program stream map(program_assocication_table)

PID = 0

......

...

Multiplexer

Program transport stream 1

Program transport stream 2

Program transport stream 3

Program transport stream 4

Program transport stream 5System level multiplex

Program stream map(program_assocication_table)

PID = 0

......

...

Multiplexer

Program transport stream 1

Program transport stream 2

Program transport stream 3

Program transport stream 4

Program transport stream 5System level multiplex

Program stream map(program_assocication_table)

PID = 0

......

...

Multiplexer

Program transport stream 1

Program transport stream 2

Program transport stream 3

Program transport stream 4

Program transport stream 5System level multiplex

Program stream map(program_assocication_table)

PID = 0......

...

Multiplexer

Elementary stream 1 (Video)

Elementary stream 2 (Audio1)

Elementary stream 3 (Audio2)

Elementary Stream n-1 (Data i)

Elementary stream map(program_map_tabl e)

PID1PID2

PID3

PID(n-1)

PID(n+1)

PIDnElementary Stream n (Data j)

MU Xedprogramtransportbit stream

......

...

Multiplexer

Elementary stream 1 (Video)

Elementary stream 2 (Audio1)

Elementary stream 3 (Audio2)

Elementary Stream n-1 (Data i)

Elementary stream map(program_map_tabl e)

Elementary stream map(program_map_tabl e)

PID1PID2

PID3

PID(n-1)

PID(n+1)

PIDnElementary Stream n (Data j)

MU Xedprogramtransportbit stream

MU Xedprogramtransportbit stream

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Demultiplexação de Programas e Fluxos Elementares

Systembit stream

Obtain program_map_PID(PID of bit stream containing

the program_map_table)

Obtain PIDsfor elementary

bit streams

prog

ram

_ass

ocia

tion_

tabl

e

prog

ram

_map

_tab

le

program_map_PID

PID1 PID2 .

.

PIDn

.. .. ..

.

Elem

enta

ry b

it st

ream

sfo

r a p

rogr

am

Dump othertransportpackets

ProgramIdentity

PID = 0

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Blocos Fundamentais de um Middleware para TV Digital

• DAVIC - Digital Audio-Visual Council• HAVi - Home Audio Video

Interoperability • Java TV• Java Media Framework

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

DAVIC - Digital Audio-Visual Council[8]

Padrão da indústria para interoperabilidade fim-a-fim de informações audiovisual digital interativa e por difusão.

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

HAVi - Home Audio Video Interoperability

• Padrão para interconexão e interoperação de dispositivos de áudio e vídeo digital

• Cenário de Uso– O STB pode ser conectado em uma rede HAVi, podendo

compartilhar seus recursos com outros dispositivos e usar os recursos de outros dispositivos para compor aplicações mais sofisticadas.

– Um STB pode gerar um menu completo que permite ao usuário acessar funcionalidades de qualquer dispositivo ou uma combinação de dispositivos HAVi, usando somente o controle remoto da televisão e apresentando o sistema de forma consistente para o usuário, como programar o aparelho de vídeo cassete a partir das informações obtidas do guia de programação eletrônico (EPG – Electronic Program Guide).

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

HAVi Display (HScreen) Model[3]

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Elementos Abrangidos pela JavaTV[6]

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

APIs JavaTV• javax.tv.locator

– Referencia dados e recursos via JavaTV

• javax.tv.service– Acessa os dados da SI

database• javax.tv.media

– Gerencia os componentes dotransport stream

• javax.tv.xlet– Apoia a criação e ciclo

de vida de Xlets

• javax.tv.graphics– Gerencia a área do

display• javax.tv.carousel

– Acesso ao DSM-CCObject e Data Carrossel

• javax.tv.util– Gerencia eventos

temporizados e sincronização

• javax.tv.net– Acesso a dados IP,

transmitidos em broadcast

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Xlet: Gerenciamento de Aplicação e Ciclo de Vida[6]

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Ambiente para Desenvolviment

o MHP em Equipe (Frolich,

2002).

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Uma plataforma pessoal para desenvolvimento DVB-J/MHP

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Esboço de Arquitetura da Aplicação Restaurante usando TV Digital Interativa

Cliente TVDI Servidor Web Servidor Dados

Sistema de Televisão

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Java e a Televisão Digital: Estado da Arte

• Pouca gente desenvolvendo soluções lucrativas

• Modelo Europeu de consumo televisivo ainda em desenvolvimento

• Oportunidades no Brasil

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Tecnologia Java em Três Plataformas

• Desktops e servidores– Ponto a ponto - fixo

• Celulares e PDAs– Ponto a ponto - móvel

• Setop Boxes de TV Digital Interativa– Broadcast

Introdução Geral à Plataforma Java para Desenvolvimento de Sistemas na Web, em Celulares e na Televisão Digital InterativaProf. Dr. Jorge H C Fernandes ([email protected]). Depto Ciência da Computação / UnB – Depto Informática e Mat. aplicada / UFRN

Introdução Geral à Plataforma Javaou

Java no Desktop, na Web, no Celular e na TV Digital: Como as

Peças se Encaixam

Prof. Dr. Jorge H C [email protected]

Departamento de Ciência da ComputaçãoUniversidade de Brasília