na Web - cic.unb.brjhcf/MyBooks/itjava/IntroducaoGeralaPlataforma... · da / UFRN Introdução...
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