UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz...

146
UNIVERSIDADE DO VALE DO ITAJAI CENTRO DE EDUCAÇÃO SÃO JOSÉ CURSO DE CIÊNCIA DA COMPUTAÇÃO TRABALHO DE CONCLUSÃO DE CURSO UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE CORREIO ELETRÔNICO Rodrigo Luiz Duarte São José 2005

Transcript of UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz...

Page 1: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

UNIVERSIDADE DO VALE DO ITAJAI CENTRO DE EDUCAÇÃO SÃO JOSÉ

CURSO DE CIÊNCIA DA COMPUTAÇÃO

TRABALHO DE CONCLUSÃO DE CURSO

UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE CORREIO

ELETRÔNICO

Rodrigo Luiz Duarte

São José 2005

Page 2: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

RODRIGO LUIZ DUARTE

UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE CORREIO

ELETRÔNICO

Monografia apresentada à Banca Examinadora do Trabalho de Conclusão de Curso de Ciência da Computação da Universidade do Vale do Itajaí, Centro de Educação de São José, como requisito parcial para obtenção do título de Bacharel em Ciência da Computação.

Orientador: Alexandre Moraes Ramos

São José

2005

Page 3: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

RODRIGO LUIZ DUARTE

UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE

CORREIO ELETRÔNICO

Este Trabalho de Conclusão de Curso foi julgado adequado como requisito parcial para a

obtenção do título de Bacharel em Ciência da Computação, tendo sido aprovado pelo Curso

de Ciência da Computação, Centro de Educação São José da Universidade do Vale do Itajaí

(SC).

São José, 19 de Dezembro de 2005.

_____________________________ ___________________________________

Prof. Esp. Alecir Pedro da Cunha Prof. M. Eng. Fernanda dos Santos Cunha

Responsável pela Coord. do TCC Coordenadora do Curso

Apresentada à Banca Examinadora formada pelos professores:

________________________________

Orientador Prof. Dr. Alexandre Moraes Ramos

___________________________________________________

Prof. M. Eng. José Francisco Salm Júnior, membro da banca examinadora

__________________________________________________

Prof. M. Eng. Paulo Henrique de Souza Bermejo, membro da banca examinadora

Page 4: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

DEDICATÓRIA

Este trabalho de conclusão de curso é dedicado aos meus pais, pela educação e

ensinamentos a mim transmitidos. A minha amada Rubia Truppel, pela

paciência, amor, carinho e incentivo durante esses anos.

Page 5: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

AGRADECIMENTOS

Aos meus amigos, pelo apoio, pelos momentos de descontração e alegria. Aos

meus colegas de classe e professores, pela troca de conhecimentos e pela

amizade conquistada.

Page 6: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

Não se pode ensinar tudo a alguém, pode-se apenas ajudá-lo a encontrar por si

mesmo.

Galileu Galilei

Page 7: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

RESUMO

Este trabalho apresenta o protótipo de uma implementação de serviço de correio eletrônico

para celulares utilizando a tecnologia J2ME, que permite o envio de mensagens contendo

além de texto, anexar arquivos a essas mensagens. A primeira parte do trabalho é composta de

uma revisão bibliográfica sobre a telefonia móvel no Brasil, total de usuários do serviço

móvel e como está distribuído o mercado entre as operadoras. É apresentada também uma

visão sobre as gerações das redes de telefonia móvel, desde a primeira geração representada

pelas tecnologias analógicas, passando para a segunda com a introdução de telefonia digital e

a terceira geração que tem como característica principal a transmissão de dados em alta

velocidade por meio das redes celulares. A segunda parte é aborda algumas tecnologias para o

desenvolvimento de aplicações para dispositivos móveis, entre elas o J2ME que é aplicada

este trabalho, o SUPERWABA que é uma tecnologia brasileira, o .NET da Microsoft, a

plataforma BREW da fabricante de equipamentos para redes celulares Qualcomm e o WAP,

que foi a primeira solução para o desenvolvimento de aplicações para redes celulares. A

terceira parte trata do serviço de correio eletrônico, os protocolos usados para envio e

recebimento de e-mails, o padrão MIME que permite o envio de mensagens em diferentes

formatos, inclusive anexar arquivos às mensagens de texto simples, mensagens HTML, entre

outras. A quarta refere-se ao desenvolvimento do protótipo, arquitetura, funcionamento e

modelagem da solução. Por último são apresentadas as conclusões obtidas, dificuldades

encontradas e algumas sugestões pra trabalhos futuros.

Page 8: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

ABSTRACT

This work presents the archetype of an implementation of service of e-mail for cellular using

technology J2ME, that allows the sending of messages contends beyond text, to annex

archives to the these messages. The first part of the work is composed of a bibliographical

revision on the mobile telephony in Brazil, total of users of the mobile service and as the

market between the operators is distributed. A vision on the generations of the networks of

mobile telephony is also presented, since the first generation represented for the analogical

technologies, passing to second with the introduction of digital telephony and third generation

that the transmission of data in high speed by means of the cellular networks has as

characteristic main. The second part is approaches some technologies for the development of

applications for mobile devices, between them the J2ME that is applied this work, the

SUPERWABA that is a Brazilian technology, NET of the Microsoft, platform BREW of the

equipment manufacturer for cellular networks Qualcomm and the WAP, that was the first

solution for the development of applications for cellular networks. The third part deals with

the service of e-mail, the used protocols for sending and act of receiving of e-mails, standard

MIME that the sending of messages in different formats allows, also to annex archives to the

messages of simple text, messages HTML, among others. Fourth one mentions the

development of the archetype, architecture, functioning and modeling to it of the solution.

Finally the gotten conclusions, joined difficulties and some suggestions for future works are

presented.

Page 9: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

SUMÁRIO

LISTA DE FIGURAS.............................................................................................................11

LISTA DE TABELAS............................................................................................................13

LISTA DE ABREVIAÇÕES .................................................................................................14

1 INTRODUÇÃO ..........................................................................................................17 1.1 APRESENTAÇÃO .........................................................................................................17 1.2 JUSTIFICATIVA ...........................................................................................................18 1.3 OBJETIVOS .................................................................................................................19 1.3.1 Objetivo geral ...................................................................................................19 1.3.2 Objetivos específicos ........................................................................................19 1.3.3 Escopo e delimitação........................................................................................19 1.4 RESULTADOS ESPERADOS...........................................................................................20 1.5 ASPECTOS METODOLÓGICOS ......................................................................................20 1.6 ESTRUTURA DO TRABALHO ........................................................................................20

2 REDES E TECNOLOGIAS MÓVEIS .....................................................................22 2.1 REDES MÓVEIS ...........................................................................................................22 2.2 REDE CELULAR ..........................................................................................................23 2.3 GERAÇÕES DA REDE CELULAR....................................................................................27 2.3.1 Primeira geração..............................................................................................28 2.3.2 Segunda geração ..............................................................................................30 2.3.3 Terceira geração ..............................................................................................41 2.4 TECNOLOGIAS MÓVEIS ...............................................................................................49 2.4.1 WAP..................................................................................................................50 2.4.2 BREW ...............................................................................................................53 2.4.3 SUPERWABA ...................................................................................................54 2.4.4 Visual Studio.....................................................................................................56 2.4.5 J2ME.................................................................................................................57 2.5 CONSIDERAÇÕES FINAIS .............................................................................................59

3 CORREIO ELETRÔNICO.......................................................................................60 3.1 ARQUITETURA E SERVIÇOS.........................................................................................61 3.2 ENVIO DE MENSAGENS DE CORREIO ELETRÔNICO....................................63 3.2.1 SMTP ................................................................................................................63 3.2.2 Formato de mensagens.....................................................................................65 3.3 RECEBIMENTO DE MENSAGENS DE CORREIO ELETRÔNICO ................................68 3.3.1 POP3 ................................................................................................................69 3.3.2 IMAP.................................................................................................................70

4 PROTÓTIPO DO SISTEMA ....................................................................................71 4.1 ARQUITETURA DO SISTEMA........................................................................................72 4.1.1 Formato das requisições e respostas HTTP.....................................................74 4.2 FUNCIONAMENTO DO SISTEMA...................................................................................77 4.3 MODELAGEM DO SISTEMA..........................................................................................81 4.3.1 Requisitos funcionais e não funcionais ............................................................81 4.3.2 Diagramas UML módulo servidor ...................................................................82 4.3.3 Diagramas UML módulo cliente ......................................................................88 4.4 MODELO DE CICLO DE VIDA........................................................................................94 4.5 CONSIDERAÇÕES FINAIS ............................................................................................94

Page 10: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

5 CONCLUSÃO E TRABALHOS FUTUROS...........................................................96 5.1 CONCLUSÃO...............................................................................................................96 5.2 TRABALHOS FUTUROS................................................................................................98

6 REFERÊNCIAS BIBLIOGRÁFICAS .....................................................................99

ANEXOS ...............................................................................................................................102

ANEXO A – CÓDIGO FONTE MÓDULO SERVIDOR.................................................102

ANEXO A.1 – PACOTE BEAN ..........................................................................................102

ANEXO A.2 – PACOTE CONTROLE ..............................................................................104

ANEXO A.3 – PACOTE ENTIDADE ................................................................................110

ANEXO B – CÓDIGO FONTE MÓDULO CLIENTE ....................................................112

ANEXO B.1 – PACOTE BEAN ..........................................................................................112

ANEXO B.2 – PACOTE CONTROLE ..............................................................................114

ANEXO B.3 – PACOTE CONTROLE.ACAO..................................................................115

ANEXO B.4 – PACOTE ENTIDADE ................................................................................122

ANEXO B.5 – PACOTE VISÃO.........................................................................................123

ANEXO C – BIBLIOTECA MOBILELIB ........................................................................142

ANEXO C.1 – PACOTE IO ................................................................................................142

ANEXO C.2 - PACOTE NET..............................................................................................144

Page 11: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

LISTA DE FIGURAS

FIGURA 1 - TOPOLOGIA BÁSICA DA REDE CELULAR ...................................................................25

FIGURA 2 - REPRESENTAÇÃO CIRCULAR E HEXAGONAL DE UMA CÉLULA ..................................25

FIGURA 3 - CLUSTER DE CÉLULAS DE TAMANHO 7.....................................................................26

FIGURA 4 – HANDOFF ENTRE AS TORRES A E B .........................................................................27

FIGURA 5 - QUANTIDADE DE CANAIS POR CÉLULA EM UMA REDE AMPS COM 395 CANAIS .......29

FIGURA 6 - UTILIZAÇÃO DO ESPECTRO NO FDMA.....................................................................29

FIGURA 7 - SLOT D-AMPS (IS-136), ESTRUTURA DE FRAME E MULTIFRAME ............................32

FIGURA 8 - SLOT GSM, ESTRUTURA DE FRAME E MULTIFRAME.................................................34

FIGURA 9 - HSCSD DE QUATRO SLOTS......................................................................................39

FIGURA 10 - PERCURSO DE ATUALIZAÇÃO PARA A TERCEIRA GERAÇÃO ....................................42

FIGURA 11 - PILHA DE PROTOCOLOS WAP ................................................................................51

FIGURA 12 - PROCESSO DE DESENVOLVIMENTO SUPERWABA ...................................................56

FIGURA 13 - COMPONENTES DE UM SISTEMA DE CORREIO ELETRÔNICO.....................................62

FIGURA 14 - ARQUITETURA DO SISTEMA ...................................................................................72

FIGURA 15 - DIAGRAMA DE IMPLANTAÇÃO ...............................................................................73

FIGURA 16 - TELA DE ABERTURA DO MÓDULO CLIENTE.............................................................78

FIGURA 17 - TELA PRINCIPAL DO MÓDULO CLIENTE ..................................................................78

FIGURA 18 - TELA DE LOGIN DO MÓDULO CLIENTE....................................................................79

FIGURA 19 - TELA DE ENVIO DE MENSAGENS.............................................................................80

FIGURA 20 - TELA DE PROGRESSO DE AÇÕES NO SERVIDOR .......................................................80

FIGURA 21 - LISTAGEM DO CONTEÚDO DE UM DIRETÓRIO .........................................................81

FIGURA 22 – DIAGRAMA DE CASO DE USO (USC 001 – VALIDA LOGIN) ....................................82

FIGURA 23 – DIAGRAMA DE CASO DE USO (USC 002 – LISTA DIRETÓRIO DO USUÁRIO) ............83

FIGURA 24 - DIAGRAMA DE CASO DE USO (USC 003 - ENVIA MENSAGEM DE CORREIO

ELETRÔNICO) .....................................................................................................................84

FIGURA 25 - DIAGRAMA DE CLASSES DO PACOTE CONTROLE.....................................................85

FIGURA 26 - DIAGRAMA DE CLASSE DO PACOTE BEAN...............................................................85

FIGURA 27 - DIAGRAMA DE CLASSES DO PACOTE ENTIDADE......................................................86

FIGURA 28 - DIAGRAMA DE SEQÜÊNCIA DA VALIDAÇÃO DE LOGIN............................................86

FIGURA 29 - DIAGRAMA DE SEQÜÊNCIA DA LISTAGEM DE DIRETÓRIOS DO USUÁRIO .................87

FIGURA 30 - DIAGRAMA DE SEQÜÊNCIA DO ENVIO DE MENSAGEM ............................................87

Page 12: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

FIGURA 31 - DIAGRAMA DE CASOS DE USO MÓDULO CLIENTE ...................................................88

FIGURA 32- DIAGRAMA DE CLASSES DO PACOTE CONTROLE DO MÓDULO CLIENTE ...................91

FIGURA 33 - DIAGRAMA DE CLASSES DO PACOTE VISAO DO MÓDULO CLIENTE..........................91

FIGURA 34 - DIAGRAMA DE CLASSES DO PACOTE ENTIDADE DO MÓDULO CLIENTE....................92

FIGURA 35 - DIAGRAMA DE CLASSES DO PACOTE BEAN DO MÓDULO CLIENTE...........................92

FIGURA 36 - DIAGRAMA DE CLASSES DA BIBLIOTECA MOBILELIB .............................................92

FIGURA 37 - DIAGRAMA DE SEQÜÊNCIA PARA EFETUAR LOGIN DO MÓDULO CLIENTE ...............93

FIGURA 38 - DIAGRAMA DE SEQÜÊNCIA DA LISTAGEM E SELEÇÃO DE ARQUIVOS DO MÓDULO

CLIENTE .............................................................................................................................93

FIGURA 39 - DIAGRAMA DE SEQÜÊNCIA ENVIO DA MENSAGEM DE CORREIO ELETRÔNICO DO

MÓDULO CLIENTE ..............................................................................................................94

Page 13: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

LISTA DE TABELAS

TABELA 1 - PARTICIPAÇÃO DO MERCADO NO SERVIÇO MÓVEL PESSOAL NO BRASIL..................23

TABELA 2 - SISTEMAS CELULARES ANALÓGICOS .......................................................................30

TABELA 3 - ALOCAÇÃO DE FREQÜÊNCIA DO GSM.....................................................................33

TABELA 4 - COMPARAÇÃO ENTRE PDC, D-AMPS E GSM........................................................35

TABELA 5 - TIPOS DE SERVIÇOS DISPONÍVEIS NO IMT-2000......................................................44

TABELA 6 - COMPARAÇÃO DE SISTEMAS CDMA.......................................................................47

TABELA 7 - AS NOVE MODULAÇÕES E ESQUEMAS DE CODIFICAÇÃO DO EDGE..........................49

TABELA 8 - TIPOS E SUBTIPOS MIME DEFINIDOS NA RFC 2045 ................................................68

TABELA 9 - FORMATO DA REQUISIÇÃO E RESPOSTA PARA A AÇÃO EFETUAR LOGIN ...................75

TABELA 10 - FORMATO DA REQUISIÇÃO E RESPOSTA PARA A AÇÃO NAVEGAR E LISTAR

DIRETÓRIOS / ARQUIVOS ....................................................................................................75

TABELA 11 - FORMATO DA REQUISIÇÃO E RESPOSTA PARA A AÇÃO ENVIAR MENSAGEM DE

CORREIO ELETRÔNICO........................................................................................................76

TABELA 12 - REQUISITOS FUNCIONAIS ......................................................................................81

TABELA 13 - REQUISITOS NÃO FUNCIONAIS...............................................................................82

TABELA 14 - DETALHAMENTO DO CASO DE USO USC 001.........................................................82

TABELA 15 - DETALHAMENTO DO CASO DE USO USC 0002.......................................................83

TABELA 16 - DETALHAMENTO DO CASO DE USO USC 003.........................................................84

TABELA 17- DETALHAMENTO DO CASO DE USO EFETUA LOGIN .................................................88

TABELA 18 - DETALHAMENTO DO CASO DE USO NAVEGA NO DIRETÓRIO E SELECIONA ARQUIVOS

..........................................................................................................................................89

TABELA 19 - DETALHAMENTO DO CASO DE USO ENVIA MENSAGEM ..........................................89

Page 14: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

LISTA DE ABREVIAÇÕES

1G – Primeira geração 2G – Segunda geração 3G – Terceira geração 8-PSK – 8 Phase Shift Keying (Chaveamento por deslocamento de 8 fases) ASCII – American Standard Caracters II (Padrão Americano de caracteres versão II) AMPS - Advanced Mobile Phone System (Sistema de telefonia móvel avançado) API – Application Programmer Interface (Interface programadora de aplicação) AuC - Authentication Center (Centro de autenticação) BDS – BREW Distribuition System (Sistema de distribuição BREW) BSC – Base Station Controller (Controlador de estação base) BTS – Base Transceiver Station (Estação transceptora base) CCITT - Comité Consultatif International Télégraphique et Téléphonique CLI - Caller Line Identification (Identificador de chamadas) CDC - Connected Device Configuration (Configuração de dispositivo conectado) CDMA - Code Division Multiple Access (Acesso múltiplo por divisão de código) CLDC - Connected Limited Device Configuration (Configuração de dispositivo conectado limitado) C-HTML – Compact HTML (HTML compacto) D-AMPS – Digital Advanced Mobile Phone System (Sistema de telefonia móvel avançado digital) DCN - Digital Communications Network (Rede de comunicações digitais) DNS - Domain Name System (Systema de nome de domínio) DQPSK - Differential Quadrature Phase Shift Keying (Chaveamento de deslocamento de fase por diferencial de quadratura) EDGE - Enhanced Data Rates for GSM Evolution (Evolução GSM para taxas de dados aumentadas) EIR - Equipament Identity Register (Registro de identidade do equipamento) EM – Estação Móvel ESN - Electronic Serial Number (Número serial eletônico) ETSI - European Telecommunications Standards Institute (Instituto europeu de padrões em telecomunicações) FCC - Federal Communications Commission (Comissão federal de comunicações) FDM – Frequency Division Modulation (Modulação por divisão de freqüência) FDMA – Frequency Division Multiple Access (Acesso múltiplo por divisão de freqüência) FEC - Forward Error Correction (Correção antecipada de erro) FPLMTS - Future Public Land Mobile Telecommunications System (Sistema futuro público de telecomunicações móvel nacional) GMSK - Gaussian Minimum Shift Keying (Chaveamento de deslocamento Gaussiano mínimo) GPRS - General Packet Radio Service (Serviço geral de rádio por pacote) GPS - Global Positioning System (Sistema de posicionamento global) GSM - Global System for Mobile Communications (Sistema global de comunicações móveis) HDML - Handheld Device Markup Language (Linguagem de marcação de dispositivos de mão) HDR - High Data Rate (Alta taxa de dados) HLR – Home Location Register (Registro de localização de origem)

Page 15: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

HSCSD - High Speed Circuit Switched Data (Circuito comutado de alta velocidade de dados) HTTP – Hypertext Transfer Protocol (Protocolo de transferência de hipertexto) IDE - Integrated Development Environment (Ambiente de desenvolvimento integrado) IMAP - Internet Message Access Protocol (Protocolo de acesso às mensagens de Internet) IMT - Internacional Mobile Telecommunications (Telecomunicações móveis Internacionais) ISDN - Integrated Services Digital Network (Rede digital de services integrados) ITU - Internacional Telecommunications Union (União internacional de telecomunicações) J2ME – Java 2 Micro Edition (Java 2 edição micro) J2SE – Java 2 Standard Edition (Java 2 edição padrão) JDC - Japanese Digital Cellular (Celular digital japonês) JSP – Java Server Page (Servidor de páginas Java) JVM – Java Virtual Machine (Máquina virtual Java) J-TACS – Japonese Total Access Communication System (Sistema de comunicação de acesso total japonês) KVM - K Virtual Machine (Máquina virtual K) MCS - Modulation and Coding Schemes (Esquemas de codificação e modulação) MIDP - Mobile Information Device Profile (Perfil de dispositivo móvel de informação) MIME - Multipurpose Internet Mail Extensions (Extensão Multipropósito de correio Internet) MIN - Mobile Identity Number (Número de identidade móvel) MSC – Mobile Switching Center (Centro de comutação móvel) MVC – Model-View-Controller (Modelo-Visão-Controle) NMT - Nordic Mobile Telephony (Telefonia móvel nórdica) OQPSK - Offset Quadrature Phase Shift Keying (Chaveamento de deslocamento de fase por compensação de quadratura) OSI - Open System Interconnection (Sistema aberto de interconexão) PDB – Palm DataBase file (Arquivo de base de dados para palm) PCS - Personal Communications Services (Serviços de comunicações pessoal) PCM - Pulse Code Modulation (Modulação por código de pulso) PDA – Personal Digital Assistant (Assistente digital pessoal) PDC - Personal Digital Cellular (Celular digital pessoal) PMR - Private Mobile Radio (Rádio móvel privado) POP3 - Post Office Protocol Version 3 (Protocolo de postagem de escritório versão 3) QPSK - Quadrature Phase Shift Keying (Chaveamento de deslocamento de quadratura de fase) RFC – Request For Comments (Requisição para comentário) SDK – Source Development Kit (Kit fonte para desenvolvimento) SMTP - Simple Mail Transfer Protocol (Protocolo de transferência de correio simples) TACS – Total Access Communication System (Sistema de Comunicação de acesso total) TCP/IP – Transport Control Protocol / Internet Protocol (Protocolo de controle de transporte / protocolo Internet) TDMA - Time Division Multiple Access (Acesso múltiplo por divisão de tempo) TIA - Telecommunications Industry Associations (Associação das indústrias de telecomunicações) UML – Unified Modeling Language (Linguagem de modelagem unificada) UMTS - Universal Mobile Telecommunications System (Sistema universal de telecomunicações móvel) USB – Universal Serial Bus (Barramento serial universal) UWCC - Universal Wireless Communications Consortium (Consórcio universal de comunicações sem fio) VLR – Visitor Location Register (Registro de localização visitante)

Page 16: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

VM – Virtual Machine (Máquina virtual) VPN – Virtual Private Network (Rede virtual privada) WAP - Wireless Application Protocol (Protocolo de aplicação sem fio) WAE – Wireless Application Environment (Ambiente de aplicação sem fio) WBMP – Wireless Bitmap (Imagem bitmap sem fio) WDP - Wireless Datagram Protocol (Protocolo de datagrama sem fio) WML – Wireless Markup Language (Linguagem de marcação sem fio) WSP – Wireless Session Protocol (Protocolo de sessão sem fio) WTA – Wireless Telephony Application (Aplicação telefônica sem fio) WTLS - Wireless Transport Layer Security (Camada de transporte seguro sem fio) WTP – Wireless Transaction Protocol (Protocolo de transação sem fio) W-CMDA - Wideband CDMA (CDMA banda larga) XML – eXtensible Markup Language (Linguagem de marcação extensível)

Page 17: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

17

1 INTRODUÇÃO

1.1 APRESENTAÇÃO

Com a evolução tecnológica das redes e também dos dispositivos móveis, a mobilidade é uma

forte tendência. Em conseqüência disso, surgem também novas oportunidades de serviços a

serem oferecidos pelas operadoras de serviço móvel e também para empresas que venham a

desenvolver aplicações que proporcionem aos usuários do serviço móvel pessoal, acesso às

informações que os mesmos necessitem independente de sua localização física. Com base nas

afirmações de Dornan (2001) e de Kalakota e Robinson (2002) apresentadas a seguir, torna-se

ainda mais evidente a tendência da mobilidade e do surgimento de novos negócios suportados

pelas redes sem fio.

Os evangelizadores da Internet falam de uma era da informação que promete nos

libertar da tirania do mundo físico. Perdendo nossa dependência de objetos

corpóreos e de viagens físicas. Utilizaremos a rede wireless para acessar dados onde

e quando for necessário. (DORNAN, 2001, p 217).

Uma revolução silenciosa está afetando inúmeros setores industriais na economia

mundial. O surgimento da Internet móvel, capaz de interligar numerosos aparelhos e

múltiplas redes de informações, representa uma megatendência global. Ela

representa uma nova fase na capacitação do trabalhador com conhecimento. Como

conseqüência, nos encontramos sob um novo ciclo criativo, suportado pelo

casamento da Internet com a tecnologia sem fio e o comércio eletrônico.

(KALAKOTA; ROBINSON, 2002, p 16).

Uma das tentativas iniciais de se oferecer serviços de dados na rede móvel foi feita através da

tecnologia WAP. Porém novas tecnologias estão surgindo com a finalidade de disponibilizar

aplicações para dispositivos móveis, visando explorar a mobilidade oferecida por esses

dispositivos. Tecnologias como J2ME, BREW e .NET oferecem recursos de programação

capazes de tornar um celular uma ferramenta de trabalho muito útil para as pessoas que

precisam obter dados, seja qual for o lugar onde elas estejam. A funcionalidade de transmitir

Page 18: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

18

voz será apenas mais uma das funções desses aparelhos e não mais a função principal. “[...] os

telefones estão começando a incorporar mais características de computação, permitindo não

apenas substituir os laptops e PDAs, mas também aparelhos de som e televisão.” (DORNAN,

2001, p.217).

A necessidade de ferramentas corporativas e pessoais que permitam aos usuários da rede

celular o acesso a dados, independente da localização física desses usuários desde que estejam

em uma área coberta pela rede, pode ser uma nova oportunidade para os desenvolvedores de

software bem como para as operadoras, que podem faturar na distribuição dos softwares e

também no tráfego gerado por eles. Um exemplo prático de uma dessas ferramentas é uma

aplicação que permita aos usuários, em deslocamento ou sem um ponto de acesso a sua rede,

o envio de mensagens com a possibilidade de anexar arquivos e enviá-las por meio do serviço

de correio eletrônico, utilizando o seu celular para acessar seu servidor de arquivos, selecionar

o arquivo desejado, escolher o destinatário e disparar o envio do e-mail.

1.2 JUSTIFICATIVA

Com a grande competitividade presente nos diversos segmentos do mercado, estar bem

informado é um diferencial perante os concorrentes. Ter acesso às informações, independente

de onde se esteja, torna-se uma grande arma para sobreviver em um mercado tão competitivo.

Ter disponíveis em dispositivos móveis, recursos que permitam ter acesso a essas

informações, é a nova tendência do mercado, no que diz respeito aos serviços a serem

oferecidos pelas operadoras de telefonia móvel. A evolução dos dispositivos móveis também

tornará possível oferecer serviços ainda mais sofisticados, aliados a sua mobilidade.

Por tratar-se ainda de uma tendência, existe um grande nicho de mercado a ser explorado

pelos desenvolvedores de software, e aqueles que criarem serviços diferenciados poderão

levar muita vantagem. O uso de uma tecnologia como o J2ME torna o desenvolvimento de

aplicações para dispositivos móveis uma tarefa fácil para aqueles que já estão acostumados

com as outras edições do Java. Entretanto, a edição Micro Edition do Java apresenta

limitações quanto á suas APIs, pois é voltada para dispositivos com poucos recursos de

memória e processamento, e os recursos disponíveis nas APIs do J2ME devem ser observados

antes da elaboração de uma proposta de ferramenta a ser desenvolvida utilizando essa

tecnologia. Por ser uma linguagem orientada a objeto, a customização das aplicações aos

Page 19: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

19

diversos tipos e modelos de dispositivos existentes no mercado é relativamente simples,

bastando fazer uso das classes que mais se adequarem ao equipamento em questão.

Atualmente os serviços de envio de e-mail por meio de telefones celulares oferecidos pelas

operadoras, não permitem anexar arquivos às mensagens enviadas. Por se tratar de algo

inovador, este trabalho se propõe a implementar o envio de mensagens de correio eletrônico,

incorporando a funcionalidade de anexar arquivos localizados em um servidor remoto, às

mensagens enviadas e assim fornecer às operadoras e seus usuários novos serviços aliados à

mobilidade oferecida pelas redes e pelos dispositivos móveis.

1.3 OBJETIVOS

1.3.1 Objetivo geral

Utilização da tecnologia J2ME para acesso ao serviço de correio eletrônico.

1.3.2 Objetivos específicos

• Explorar a mobilidade oferecida pelos celulares, fazendo uso dos recursos disponíveis

nesses dispositivos e na tecnologia J2ME.

• Buscar os conhecimentos necessários para fazer uso da maneira mais eficiente, dos

recursos do J2ME.

• Desenvolver uma aplicação Java ou Servlet/Java Server Pages para atender aos pedidos de

listagem de diretório, anexar arquivo e envio de e-mail.

• Desenvolver uma aplicação em J2ME para acessar um servidor e solicitar a listagem do

conteúdo de um diretório, selecionar um ou mais arquivos listados e encaminhá-los

através do serviço de correio eletrônico a um ou mais destinatários.

1.3.3 Escopo e delimitação

Este trabalho se propõe a desenvolver uma aplicação para celulares, que possibilite a conexão

com um servidor remoto, listar um diretório deste servidor, selecionar um ou mais arquivos e

enviá-los como anexos em uma mensagem de correio eletrônico utilizando a tecnologia

J2ME.

Este trabalho não se propõe a atingir outros dispositivos móveis além dos telefones celulares,

nem oferecer outros tipos de serviços de rede como FTP, TELNET, etc.

Page 20: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

20

1.4 RESULTADOS ESPERADOS

Ao final deste trabalho espera-se ter um protótipo da aplicação proposta com suas

funcionalidades testadas e realizando envio de e-mails por meio de telefones celulares com

arquivos anexados, e desta forma comprovar a viabilidade do desenvolvimento de aplicações

para celulares que permitam oferecer serviços diferenciados aos seus usuários, fazendo uso da

rede de dados da telefonia móvel.

1.5 ASPECTOS METODOLÓGICOS

Este trabalho trata-se de uma pesquisa bibliográfica com abordagem qualitativa, onde será

desenvolvida uma aplicação que rode em telefones celulares com suporte a Java, e uma outra

aplicação que rodará em um servidor remoto. Primeiramente será realizada uma revisão

bibliográfica para obter as informações necessárias para a implementação da aplicação J2ME,

buscando a melhor forma de utilização dos recursos de interface com o usuário, bem como os

de conectividade.

Será usada a linguagem UML para modelagem das aplicações e como resultado desta, serão

gerados diagramas de classe, de casos de uso, robustez e seqüência. A ferramenta VISUAL

PARADIGM FOR UML 4.1 será utilizada para a confecção dos diagramas. Uma vez

modeladas as aplicações, elas serão implementadas utilizando-se a ferramenta NETBEANS

4.1.

1.6 ESTRUTURA DO TRABALHO

Para facilitar o entendimento deste trabalho, faz-se necessário uma apresentação e

compreensão do conceito de uma rede celular, suas gerações e diferentes tecnologias,

tecnologias de desenvolvimento de aplicações para dispositivos móveis, e serviço de correio

eletrônico.

Neste contexto, este trabalho está organizado em quatro capítulos:

• Capítulo 2: Redes e tecnologias móveis:

Apresenta uma visão geral sobre redes móveis, aprofundando-se um pouco mais em redes

celulares, informações sobre o mercado brasileiro nesse aspecto, topologia básica, gerações,

Page 21: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

21

suas respectivas características, tecnologias e plataformas de desenvolvimento para

dispositivos móveis.

• Capítulo 3: Correio eletrônico:

Contém uma visão geral sobre o serviço de correio eletrônico, as RFCs (Request For

Comments) que possibilitaram a existência e evolução desse serviço, protocolo de envio e

recebimento de mensagens de correio eletrônico.

• Capítulo 4: Protótipo do sistema:

Apresenta o protótipo de um serviço de correio eletrônico acessado por celular e que além de

enviar mensagens de texto, pode anexar à essas mensagens arquivos localizados em um

servidor de arquivos. Como resultado dessa implementação temos duas aplicações: uma

servidora executada em algum servidor da rede fixa, e uma cliente executada num dispositivo

móvel.

• Capítulo 5: Conclusão:

Discute os resultados obtidos, dificuldades encontradas e sugestões para trabalhos futuros.

Page 22: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

22

2 REDES E TECNOLOGIAS MÓVEIS

2.1 REDES MÓVEIS

“O sistema telefônico tradicional (ainda que ele algum dia chegue a vários gigabits entre uma

extremidade e outra da fibra) não será capaz de satisfazer a um grupo crescente de usuários:

as pessoas em trânsito.” (TANENBAUM, 2003, p 161).

O surgimento das redes sem fio como celular e WI-FI estão permitindo cada vez mais a

utilização de recursos antes disponíveis apenas em residências, escritórios e empresas. Os

usuários das redes móveis de onde quer que estejam, podem desfrutar da mobilidade e ainda

assim fazer uso dos mesmos recursos que os usuários das redes fixas, bastando haver

cobertura dessas redes onde eles se encontram.

Devido à sua grande cobertura e ao grande número de usuários, a rede de telefonia celular tem

um grande potencial de exploração, seja para as operadoras como para empresas de

desenvolvimento de software, oferecendo novos serviços por meio de aplicações voltadas

para os dispositivos móveis.

Só no Brasil, segundo a Agência Nacional de Telecomunicações (ANATEL, 2005a), o

número de clientes do serviço móvel pessoal (SMP) em abril de 2005 era de 70.790.305.

Diante deste número, pode-se se ter uma idéia do potencial de exploração deste mercado que

está dividido entre as operadoras existentes no país, conforme mostrado na tabela 1.

Page 23: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

23

Tabela 1 - Participação do mercado no serviço móvel pessoal no Brasil

PARTICIPAÇÃO DO MERCADO NO SERVIÇO MÓVEL PESSOAL - SMP

POSIÇÃO HOLDING % DO MERCADO - BRASIL

1° VIVO 38,82

2° TIM 21,46

3° CLARO 21,06

4° OI 10,56

5° TELEMIG / AMAZÔNIA 5,83

6° BRASIL TELECOM GSM 1,67

7° CTBC CELULAR 0,48

8° SERCOMTEL CELULAR 0,12

TOTAL 100

TOTAL DE CLIENTES ATÉ O MÊS DE ABRIL/2005 – 70.790.305

Fonte: Agência Nacional de Telecomunicações (2005b) – Adaptada por Rodrigo L. Duarte.

2.2 REDE CELULAR

A primeira rede celular foi criada nos Estados Unidos pela empresa AT&T e foi

regulamentada para todo país. Como resultado dessa regulamentação, um celular comprado na

Califórnia funcionava perfeitamente em Nova York. Já na Europa, cada país desenvolveu seu

próprio sistema resultando num grande fiasco, onde o deslocamento de um país ao outro

resultava no não funcionamento dos telefones. (TANENBAUM, 2003).

Com o surgimento da tecnologia digital a Europa resolveu aprender com os erros cometidos

na implantação da sua rede analógica e as operadoras de telefonia móvel uniram-se e criaram

um sistema único (GSM), que permite o funcionamento de um telefone móvel europeu em

qualquer lugar da Europa. (TANENBAUM, 2003).

Uma rede de telefonia celular possui basicamente os seguintes elementos: estação móvel

(EM) , torre de rádio ou BTS (Base Transceiver Station), estação base ou BSC (Base Station

Controller), centro de comutação móvel ou MSC (Mobile Switching Center), HLR (Home

Location Register), VLR (Visitor Location Register), EIR (Equipament Identity Register) e o

AuC (Authentication Center). Todos esses elementos são descritos a seguir:

As estações móveis (EM) são os telefones celulares ou PDA’s que fazem acesso à rede pelas

torres de rádio. Conhecidas também como BTS (Base Transceiver Station), uma torre de rádio

Page 24: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

24

ou celular “é o local de transmissão da telefonia celular.” (SHARMA, 2001, p 17). São elas

que estabelecem a conexão entre as EM’s e a rede celular.

A estação base, também chamada de BSC (Base Station Controller) “controla um

conglomerado de torres celulares.“ (SHARMA, 2001, p 17). Ela é responsável por gerenciar

as chamadas de voz ou de dados de uma EM e controlar quando as EM’s realizam a troca de

uma torre de rádio para outra sem a interromper o serviço (processo de handoff). Já o centro

de comutação móvel também conhecido como MSC (Mobile Switching Center) “conecta

todas as estações base para passar os sinais de comunicações de e para os assinantes que estão

operando na rede.” (SHARMA, 2001, p 19).

O HLR (Home Location Register) armazena informações pertinentes ao assinante, como por

exemplo, a última vez que a EM se registrou na rede. As EM periodicamente, em intervalos

de poucos segundos, registram-se na rede para agilizar a sua localização pelas BSC’s diante

de uma chamada destinada a elas. (SHARMA, 2001, p 19).

O VLR (Visitor Location Register) “registra as informações sobre unidades móveis que foram

introduzidas na rede, vindo de outras redes, ou seja, ele registra os visitantes.” (SHARMA,

2001, p 19). O EIR (Equipament Identity Register) “armazena e verifica os status dos MIN’s e

ESN’s.” (SHARMA, 2001, p 19). O MIN (Mobile Identity Number) assim como o ESN

(Electronic Serial Number) “são usados para verificação, autenticação e faturamento.”

(SHARMA, 2001, p 19). O AuC (Authentication Center) “é responsável pela autenticação e

validação dos serviços para cada dispositivo móvel que está tentando usar a rede.”

(SHARMA, 2001, p 19).

A figura 1 ilustra a topologia básica de uma rede celular e como seus componentes estão

interligados.

A denominação rede celular se deve ao fato da utilização do conceito de células. Segundo

Dornan (2001, p 43), célula é a área de cobertura de uma única estação-base. Os telefones

celulares têm acesso aos serviços da rede celular através das células em que se encontram.

Para se cobrir geograficamente uma grande área é necessário disponibilizar um grande

número de torres de maneira a atingir a cobertura desejada. A figura 2 mostra a representação

real de uma célula (célula circular) e a representação ideal (célula hexagonal).

Page 25: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

25

Figura 1 - Topologia básica da rede celular

Fonte: Sharma (2001, p 20) – Adaptada por Rodrigo L. Duarte.

Figura 2 - Representação circular e hexagonal de uma célula

Fonte: Dornan (2001, p 44) – Adaptada por Rodrigo L. Duarte.

As células ainda podem ser divididas criando-se as microcélulas. Microcélulas são “pequenas

células que realizam a cobertura de determinada rua ou até de um prédio específico como um

centro de conferências.” (DORNAN, 2001, p 44). “Em uma área em que o número de

usuários cresce a ponto de o sistema ficar sobrecarregado, a potência é reduzida, e as células

sobrecarregadas são divididas em células menores chamadas microcélulas para permitir maior

reutilização de freqüências [...]” (TANENBAUM, 2003, p 164).

Estação móvel

Estação Base

Centro de Comutação Móvel

Telefonia Fixa

HLRVLR

AUC

EIR

Torre de Rádio

Estação Base

Circular Hexagonal

Page 26: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

26

As células utilizam um conjunto de freqüências e devido as suas características físicas, uma

célula sempre acaba se sobrepondo a outra, tornando inviável a reutilização destas freqüências

em células adjacentes. Como essas freqüências são em número limitado e visando evitar a

interferência entre os canais de mesma freqüência em células adjacentes, criou-se a técnica de

clusterização. As freqüências disponíveis são distribuídas para um determinado número de

células, formando um conjunto denominado de cluster. No cluster vizinho a distribuição das

freqüências se repete, conforme mostrado na figura 3.

Figura 3 - Cluster de células de tamanho 7

Fonte: Tanenbaum (2003, p 165) – Adaptada por Rodrigo L. Duarte.

Com a utilização de clusters consegue-se um bom distanciamento entre células que utilizam

as mesmas freqüências, possibilitando uma boa reutilização de freqüências e uma boa

qualidade de comunicação. Existem vários padrões de tamanho de cluster, e esses tamanhos

irão depender da necessidade particular de cada rede e da existência de microcélulas.

Entretanto, os mais usados são os de tamanho 7 e 12, em função de fornecerem a melhor

relação distanciamento de células que utilizam as mesmas freqüências e a quantidade de

canais por células.

As redes móveis oferecem um recurso muito importante, que é permitir aos seus clientes o

deslocamento entre células. “O processo de comutação do usuário de uma célula para outra

enquanto a ligação está em andamento é chamado de handoff ou handover.” (DORNAN,

2001, p 45). São procedimentos complicados e que exigem da estação base cálculos precisos

para detectar quando o usuário está saindo de uma célula e entrando em outra. Este

procedimento leva em torno de 300 ms e pode ser feito de três modos conhecidos como soft

handoff, hard handoff e nenhum handoff.

Page 27: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

27

No soft handoff “o sinal do telefone é adquirido pela nova estação base antes da anterior se

desconectar”. (TANENBAUM, 2003, p 165). O soft handoff também é chamado de ligar antes

de quebrar e é considerado um sistema muito confiável. (DORNAN, 2001, grifo do autor).

Com este tipo de handoff a queda de ligação durante o processo é pouco provável, exceto se a

troca de célula ocorrer em alta velocidade ou o usuário sair da área de cobertura da rede

celular.

Em um hard handoff “a estação base antiga libera o sinal do telefone antes de ele ser

adquirido pela nova estação base”. (TANENBAUM, 2003, p 166). Não havendo canais

disponíveis na nova célula, a ligação será interrompida de forma abrupta. Em redes que

utilizam esse tipo de handoff a conversação poderá sofrer interrupções, mesmo nas

tecnologias digitais mais avançadas.

Já no modo nenhum handoff o processo “é muito simples e sempre depende de o terminal

móvel realmente fazer uma nova ligação após sair da faixa de um transmissor.” (DORNAN,

2001, p 46). Este modo não é muito comum em redes celulares, mas é utilizado em alguns

sistemas empregados no mercado de redes PMR (Private Mobile Radio) e apresenta como

única vantagem, menor tempo de conexão para as chamadas novas e para as em andamento.

A figura 4 ilustra a ocorrência de um handoff onde a torre B assume o gerenciamento da

chamada do usuário anteriormente controlado pela torre A.

Figura 4 – Handoff entre as torres A e B

2.3 GERAÇÕES DA REDE CELULAR

Por se tratarem de sistemas de transmissão via rádio, as redes celulares necessitam fazer uso

de técnicas de divisão de freqüência, fracionando seu espectro disponível em bandas menores,

e podendo um ou mais usuários usufruir dessas frações de banda. (DORNAN, 2001). Com a

evolução tecnológica, novas técnicas de divisão de freqüência foram criadas e a possibilidade

Torre B

Torre A

Page 28: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

28

de oferta de novos serviços na rede celular proporcionou o surgimento de novas gerações de

redes celulares.

Segundo Tanenbaum (2003) as redes celulares passaram por três gerações distintas e com

diferentes tecnologias:

• Primeira geração caracterizada pela transmissão analógica da voz.

• Segunda geração com transmissão de voz digital.

• Terceira geração com voz digital e transmissão de dados.

2.3.1 Primeira geração

Inventado pelo Bell Labs e instalado primeiramente nos Estados Unidos em 1982, o AMPS

(Advanced Mobile Phone System) é a tecnologia que representa as redes celulares de primeira

geração (1G). Foi utilizado posteriormente na Inglaterra e no Japão onde receberam os nomes

TACS e MCS-L1, respectivamente. (TANENBAUM, 2003).

Utilizando transmissão analógica, o AMPS utiliza 832 canais full-duplex, cada um consistindo

em um par de canais simplex. Existem 832 canais de transmissão simplex de 824 a 849 MHz,

e 832 canais de recepção simplex de 869 a 894 MHz. Cada um desses canais simplex tem 30

KHz de largura. Desse modo, o AMPS utiliza FDM para separar os canais. (TANENBAUM,

2003, p 166).

O FDMA (Frequency Division Multiple Access) é técnica de multiplexação empregada nas

redes AMPS, permitindo que cada canal de comunicação tenha sua própria freqüência

específica. (DORNAN, 2001).

Dos 832 canais disponíveis no espectro, 42 são utilizados para controle de informações. Os

790 canais restantes normalmente são divididos entre duas operadoras celulares concorrentes,

resultando em 395 canais para cada operadora e conseqüentemente um limite de 395 ligações

simultâneas. (DORNAN, 2001). Todavia, a grande vantagem das redes celulares é que as

freqüências podem ser reutilizadas por meio da criação de novas células, dessa forma temos o

limite de 395 ligações em uma célula isolada e não na rede inteira. (DORNAN, 2001). Em

virtude da interferência, uma célula não pode transmitir e receber em todos os 395 canais.

Para tornar mais eficaz a reutilização de freqüência, utiliza-se a técnica de clusterização de

células. A figura 5 mostra o número de canais por célula para alguns padrões de cluster.

Page 29: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

29

Figura 5 - Quantidade de canais por célula em uma rede AMPS com 395 canais

Fonte: Dornan (2001, p 50).

Por se tratar de um sistema FDMA puro, o AMPS apresenta um problema de interferência

causado por freqüências próximas. Essas interferências são evitadas distanciando-se um canal

de seus adjacentes por um intervalo de freqüência, causando um grande desperdício de

espectro. O espectro alocado para cada canal é maior do que realmente é preciso, causando

perdas de freqüências que poderiam ser utilizadas para alocação de canais e reduzindo a

eficiência do sistema. A figura 6 ilustra a utilização do espectro em sistemas que fazem uso do

FDMA e o distanciamento entre os canais.

Figura 6 - Utilização do espectro no FDMA

Fonte: Dornan (2001, p 51) – Adaptada por Rodrigo L. Duarte.

A tabela 2 mostra alguns sistemas celulares analógicos e algumas de suas características,

como por exemplo, as freqüências para os links diretos e reversos, o espectro ocupado por

canal, o tamanho do canal, a taxa de transmissão de dados e os países ou regiões que utilizam

cada uma das tecnologias.

838,04 838,06 838,08 838,1 838,12 838,14 Freqüência (MHz)

Alcance

CH34 CH35 CH36 CH37

Intervalo de freqüência entre canais

020406080

100120140

Tamanho do cluster 3 4 7 12 21

Page 30: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

30

Tabela 2 - Sistemas celulares analógicos

Sistema Freqüências

(MHz)

Espectro

por

canal

Tamanho

do canal

Capacidade

máxima de

dados

Utilizado em

Link

direto

Link

reverso

AMPS (Advanced Mobile

Phone System) 869-894 824-849 24 KHz 30 KHz 9,6 Kbps Américas

C-Netz 461-466 451-456 8 KHz 20 KHz 5,3 Kbps Europa central

J-TACS (TACS japonês) 925-940 870-885 10 KHz 25 KHz 0,3 Kbps Somente Japão

NMT (Nordic Mobile

Telephony)

463-

467,5

935-960

453-

457,5

890-915

9,4 KHz 25 KHz 1,2 Kbps Escandinávia, Europa

Oriental, Ásia

TACS (Total Access

Communications System)

935-950

917-933

890-905

872-888 19 KHz 25 KHz 8,0 Kbps

Europa ocidental,

Ásia

Fonte: Dornan (2001, p 51).

2.3.2 Segunda geração

A segunda geração (2G) de redes celulares é caracterizada pelo fato da transmissão de voz ser

realizada de forma digital. Assim como o sistema analógico, os sistemas digitais da segunda

geração não sofreram uma padronização mundial resultando em quatro sistemas: D-AMPS,

GSM, CDMA e PDC. A segunda geração é conhecida também como PCS (Personal

Communications Services). “Este termo foi utilizado foi utilizado originalmente pela FCC

(Federal Communications Commission) para descrever um grupo especial de licenças para a

banda de 1900 MHz, mas tem sido adotado pelo pessoal de marketing para incluir qualquer

sistema digital que forneça voz de alta qualidade e dados de banda estreita.” (DORNAN,

2001, p 63).

2.3.2.1 D-AMPS

O D-AMPS (Digital Advanced Mobile Phone System) é a segunda geração do sistema AMPS

e foi projetado para permitir a compatibilidade entre os dois sistemas, de modo a operar com

telefones de primeira e segunda geração possam operar simultaneamente em uma mesma

célula. “Ele é descrito pelo padrão internacional IS-54 em seu sucessor o IS-136.”

(TANENBAUM, 2003, p 168).

Page 31: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

31

O D-AMPS faz uso dos mesmos canais de 30 KHz utilizados no AMPS e nas mesmas

freqüências, podendo um canal ser analógico e seus adjacentes serem digitais. A quantidade

de canais digitais e analógicos em uma célula é definida pela concentração de telefones

analógicos ou digitais nessa célula. A MSC então, define dinamicamente quais canais serão

analógicos e quais serão digitais, e conforme essa mistura de telefones analógicos e digitais se

altera na célula, a MSC redefine a quantidade de canais analógicos e digitais.

(TANENBAUM, 2003).

Prevendo um aumento de carga com o lançamento do D-AMPS, foi disponibilizada uma nova

banda de freqüências onde os canais de link direto1 estão na faixa de 1.930 a 1.990 MHz e os

canais de link reverso2 correspondente estão na faixa de 1.850 a 1.990 MHz. A fim de se obter

uma faixa mais ampla de canais o D-AMPS utiliza além dessa nova banda de freqüências, a

banda utilizada pelo AMPS conforme descrito na tabela 2.

Segundo Dornan (2001) a diferença entre o AMPS e o D-AMPS é que, em vez utilizar um

canal de 30 KHz para transmitir uma única conversação, o D-AMPS divide cada canal em três

slots TDMA (Time Division Multiple Access), permitindo que cada canal seja utilizado por

três conversações simultaneamente.

A voz é digitalizada já no telefone móvel e compactada com o uso de um modelo sofisticado.

A compactação leva em consideração detalhes do sistema vocal humano e reduz os 56 Kbps,

resultantes da codificação PCM (Pulse Code Modulation), para 8 Kbps ou menos, buscando

reduzir o número de bits a serem transmitidos pelo enlace aéreo. (TANENBAUM, 2003).

A técnica de modulação utilizada é chamada de DQPSK (Differential Quadrature Phase Shift

Keying) e para Dornan (2001), o D-AMPS é mais eficiente que o AMPS e também que o

GSM quanto à utilização do espectro.

1 Canal de transmissão no sentido rádio base para estação móvel. Também conhecido como downlink ou canal

de downstream.

2 Canal de transmissão no sentido estação móvel para rádio base. É conhecido também com uplink ou canal de

upstream.

Page 32: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

32

O D-AMPS apresenta uma velocidade de dados de 48,6 Kbps, sendo compartilhada por três

usuários. Cada usuário utiliza o canal por um terço do tempo, resultando em um terço da

velocidade para cada usuário.

Cada time slot no D-AMPS dura 6,67 ms, e contêm informações de sinalização e controle,

serviços avançados como identificação de chamadas, mensagens de texto, além dos dados de

voz. A figura 7 ilustra a estrutura de um multiframe, frame e slot para o D-AMPS padrão IS-

136.

Figura 7 - Slot D-AMPS (IS-136), estrutura de frame e multiframe

Fonte: Dornan (2001, p 78) – Adaptada por Rodrigo L. Duarte.

2.3.2.2 GSM

Inicialmente conhecido como Groupe Spéciale Mobile, nome do comitê formado para

padronizá-lo, o GSM atualmente é conhecido por Global System for Mobile Communications

e é o sistema celular mais utilizado no mundo. Segundo Dornan (2001) em 1999, essa

tecnologia já utilizada por mais da metade de todos os telefones móveis, expandia-se com 1

milhão de novos usuários por semana. Por possuir uma ótima qualidade de voz, facilidade de

atualização para velocidades de dados superiores e principalmente pela padronização

realizada pelos governos europeus, este sistema tornou-se muito popular.

O GSM foi projetado originalmente para trabalhar em freqüências em torno de 900 MHz,

visando reaproveitar o espetro utilizado pelas redes analógicas européias TACS. O sistema

sofreu adaptações e hoje opera em quatro bandas de freqüências diferentes como mostra a

tabela 3. “Essas variantes de freqüência mais alta às vezes são chamadas de DCN (Digital

Frame: 972 bits ou 20 ms Slot: 324 bits ou 6,67 ms

Cabeçalho

do protocolo

Sinalização

Voz ou dados

122 bits de tráfego 16 bits de tráfego

A B C D E F G H I J K L M N O P

Multiframe D-AMPS padrão IS-136

1 2 3 1 2 3

12 bits finais 28 bits de treinamento

122 bits de tráfego

24 bits de controle

Page 33: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

33

Communications Network), mas na verdade são apenas GSM. A variante mais recente usa

freqüências mais baixas de 450 MHz, para poder substituir redes analógicas anteriores,

baseadas no sistema escandinavo NMT (Nordic Mobile Telephony).” (DORNAN, 2001, p 66).

Tabela 3 - Alocação de freqüência do GSM

Tipo de GSM Freqüência de link

reverso Freqüência de link direto Tamanho da célula

GSM 450 450,4 – 457,6 MHz ou

478-486 MHz

460,4-467,6 MHz ou

488,8-496 MHz Maior possível

GSM 900 880-915 MHz 925-960 MHz Grande

DCN 1800 1710-1785 MHz 1805-1880 MHz Pequeno

PCS 1900 1850-1910 MHz 1930-1990 MHz Menor possível

Fonte: Dornan (2001, p 66).

Assim como o D-AMPS, o GSM utiliza tanto FDMA quanto o TDMA. A diferença está

basicamente na quantidade de time slots utilizada pelo GSM que passa a ser 8 contra 3 do D-

AMPS. Os canais GSM também possuem uma largura de banda de 200 KHz contra 30 KHz

do D-AMPS. A técnica de modulação utilizada no GSM é conhecida como GMSK (Gaussian

Minimum Shift Keying) “[...] uma forma de modulação de fase, um sistema que usa diferentes

partes da forma de onda para representar informações.” (DORNAN, 2001, p 67). Essa forma

de modulação permite velocidade de 270,8 Kbps para cada canal de 200 KHz. Entretanto,

essa velocidade é dividida por oito motivada pelo uso do TDMA, ou seja, compartilhamento

de canal por divisão de tempo, atingindo velocidades de até 33,9 Kbps.

Visando compensar o retardo da propagação do sinal da estação rádio base até o telefone

móvel, o GSM inutiliza uma parte da banda de cada canal, o que segundo Dornan (2001) está

na ordem de uns 27 por cento, uma vez que o tempo que um sinal de rádio gasta para

percorrer um quilômetro é de 3,3 microssegundos, o que resulta em um atraso de

aproximadamente 100 microssegundos em um telefone a 30 Km da estação rádio base. Cada

time slot tem a duração de 577 microssegundos e transmite exatos 156,25 bits como mostrado

na figura 8.

Um frame é um conjunto de oito time slots e para cada 24 frames Dornan (2001) diz que 22

deles são usados para tráfego de voz ou dados, enquanto um é utilizado para sinalização e

outro é reservado para outros tipos de tráfego, como por exemplo, mensagens de texto ou CLI

(Caller Line Identification) ou identificador de chamadas. Isso torna necessária a existência de

Page 34: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

34

mais uma estrutura conhecida como multiframe, ou seja, um conjunto de 26 frames. A figura

8 ilustra a estrutura de um multiframe, um frame e um time slot GSM.

Figura 8 - Slot GSM, estrutura de frame e multiframe

Fonte: Dornan (2001, p 69) – Adaptada por Rodrigo L. Duarte.

Para a estrutura de slot apresentada na figura 8, Dornan (2001) diz que os cabeçalhos são

espaços vazios acrescentados no início e no fim de cada slot com a finalidade de separá-lo de

seus vizinhos e também evitar o tempo de retardo da propagação a uma distância de até 35

Km da estação rádio base. Dornan (2001) conceitua a seqüência de treinamento ou bits de

treinamento como sendo um padrão fixo de bits no meio dos slots, utilizados para auxiliar

receptores bloqueados no slot, não transmitindo informação útil e servindo de cabeçalho ou

rodapé quando o slot é submetido a novas divisões, por exemplo, quando é utilizado um codec

de meia velocidade.

Para Dornan (2001) os bits roubados são usados com o objetivo de identificar se o slot está

sendo utilizado para conduzir dados ou para controlar informações. Daí vem o nome

“roubado”, pois o slot está sendo roubado para enviar informações de sinalização ao invés de

conduzir voz ou dados. Já os bits de tráfego são destinados para transporte de dados, voz,

além de informações de controle e correção de erros.

Sinalização

Voz ou dados

Cabeçalho do

protocolo

11,25 bits finais26 bits de treinamento

57 bits de tráfego57 bits de tráfego

3 bits iniciais

Slot: 156,25 bits ou 0,577 ms

Frame: 1250 bits ou 4,6 ms

Multiframe: 32.500 bits ou 120 msA B C D E F G H I J K L M N O P Q R S T U V W X Y Z

1 2 3 4 5 6 7 8

2 bits roubados

Page 35: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

35

2.3.2.3 PDC

Baseado no sistema D-AMPS, o PDC (Personal Digital Cellular) ou JDC (Japanese Digital

Cellular) foi desenvolvido pelo Japão visando a compatibilidade retroativa com seu sistema

de telefonia celular analógico J-TACS. “Apesar de ser utilizado em apenas um país, é o

segundo padrão móvel mais popular do mundo (o primeiro é o GSM), em parte por causa do

i-mode de serviço de Internet sem fio.” (DORNAN, 2001, p 79).

Pelo fato do J-TACS utilizar canais de 25 KHz, o D-AMPS sofreu alterações em virtude de

ter sido projetado para trabalhar com canais de 30 KHz. Todavia, foram utilizados os mesmo

tamanhos de time slots e a mesma forma de modulação, ocasionado velocidade de dados

inferiores ao D-AMPS. Mas se forem feitas algumas simplificações no cabeçalho e nas

informações de correção de erros, consegue-se obter os mesmos 9,6 Kbps do D-AMPS,

pagando-se o preço de fazer uso de um sistema menos confiável.

Para Dornan (2001) o sucesso do PDC é motivado pelo i-mode, um sistema de Internet móvel

desenvolvido pela NTT DoCoMo, a maior operadora japonesa, onde são utilizadas conexões

comuns de 9,6 Kbps ou até mais lentas e provê acesso a milhares de sites da web, adaptados

especialmente para serem exibidos nas pequenas telas dos telefones celulares. A tabela 4 faz

um comparativo entre o PDC, D-AMPS e GSM.

Tabela 4 - Comparação entre PDC, D-AMPS e GSM

Sistema Canal Slots Tamanho

do slot Bits/Slot Modulação

Taxa

bruta de

bits

Capacidade

de dados

GSM 200 KHz 8 0,577 ms 156,25 GMSK 33,9 Kbps 14,4 Kbps

D-AMPS 30 KHz 3 6,67 ms 324 DQPSK 16,2 Kbps 9,6 Kbps

PDC 25 KHz 3 6,67 ms 290 DQPSK 14 Kbps 9,6 Kbps

Fonte: Dornan (2001, p 80).

2.3.2.4 CDMA

Desenvolvido pela empresa Qualcomm, o CDMA (Code Division Multiple Access)

inicialmente não obteve uma boa aceitação. Tanenbaum (2003) diz que graças à persistência

da Qualcomm, o CDMA passou por um processo de amadurecimento e não só foi aceito

Page 36: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

36

como se tornou a melhor solução técnica para os sistemas celulares de terceira geração.

Padronizado pela TIA (Telecommunications Industry Associations) e batizado como IS-95a e

também conhecido como cdmaOne, o CDMA é amplamente utilizado nos Estados Unidos.

No Brasil a VIVO, a maior operadora celular do país, também utiliza essa tecnologia.

“Os sistemas CDMA parecem superficialmente mais simples do que os baseados no TDMA.

Não envolvem slots nem estruturas de frames; cada telefone apenas transmite e recebe o

tempo todo, enviando muitas repetições das mesmas informações com o objetivo de assegurar

que pelo menos uma seja bem sucedida.” (DORNAN, 2001, p 81).

Segundo Tanenbaum (2003) o CDMA permite que cada estação transmita sobre todo o

espectro de freqüências e durante todo o tempo, diferente dos sistemas baseados em FDMA e

TDMA que dividiam o espectro em algumas centenas de canais estreitos. As varias

transmissões simultâneas são separadas com o uso da teoria de codificação. Uma outra

característica importante do CDMA relatada por Tanenbaum (2003) é a não preocupação com

a colisão de quadros, pois se pressupõe que os mesmo não são totalmente adulterados e sim

somados de modo linear.

A quantidade de repetições realizadas pelo CDMA é conhecida como ganho e para Dornan

(2001) ela depende da largura de banda e do comprimento do código utilizado. O cdmaOne

utiliza como código um conjunto de 64 números, cada qual com 64 bits. Esse conjunto de

números é conhecido como códigos Walsh e são calculados para um número cancelar o outro.

Para cada usuário é atribuído um código Walsh diferente, e antes dos dados serem

transmitidos, cada bit de dados é multiplicado por esse código resultando no envio de cada bit

dado 64 vezes.

No CDMA são utilizadas duas técnicas diferentes de modulação de fase, a QPSK

(Quadrature Phase Shift Keying) e a OQPSK (Offset Quadrature Phase Shift Keying). A

QPSK é utilizada no link direto e proporciona uma velocidade bruta por usuário de 19,2 Kbps,

porém o telefone recebe a 1228,8 Kbps, ou seja, 64 x 19,2. Já a OQPSK é utilizada no link

reverso e proporciona velocidade de 28,8 Kbps. O fato de a velocidade ser mais alta no link

reverso que no link direto, é motivado pelas correções de erro antecipadas que se tornam

necessárias pela incapacidade dos telefones em coordenarem suas transmissões da mesma

forma feita pelas estações rádio base.

Page 37: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

37

Além das altas velocidades Dornan (2001) afirma que o CDMA apresenta uma outra grande

vantagem em relação aos sistemas que utilizam TDMA. O mesmo canal pode ser utilizado por

vários telefones diferentes e por todas as estações rádio base, e as freqüências utilizadas em

uma célula podem ser reutilizadas por suas células adjacentes, eliminando a necessidade de

utilização dos clusters de células existentes nos sistemas TDMA e FDMA.

De acordo com Dornan (2001) uma grande desvantagem dos sistemas CDMA é o alto

consumo de energia motivado pelas transmissões repetidas de dados, o que provocaria

também um aumento da exposição dos usuários às radiações microondas. Porém, realizando

um controle cuidadoso do poder transmissão, o cdmaOne solucionou os problemas de

consumo de bateria das estações móveis e a quantidade de radiação a qual são expostos seus

usuários. Esse controle do poder de transmissão requer que os telefones necessitem ficar

inativos o maior tempo possível, e sua potência de transmissão sendo aumentada à medida

que os telefones forem se afastando da estação rádio base.

Como todas as células utilizam todas as freqüências disponíveis no espectro, as estações rádio

base precisam sincronizar suas transmissões, visando impedir um excesso de interferência.

Conforme Dornan (2001) isso ocorre com a utilização de sinais de satélites GPS (Global

Positioning System), com capacidade de apontar qualquer localização na Terra em 5 m e de

calcular o tempo com maior precisão que rotação da Terra. Todas as estações rádio base são

equipadas com receptores GPS e a localização de cada telefone é calculada em função do

tempo que um sinal emitido por cada telefone chegue a várias estações rádio base e retorne.

Esse processo é semelhante ao utilizado por radares e é conhecido como triangulação.

O CDMA permite velocidades de dados muito altas e os telefones existentes já transmitem e

recebem simultaneamente nessas velocidades. Porém, muitos dos dados recebidos são

redundantes. Com a utilização de mais de um código Walsh, Dornan (2001) afirma que a

capacidade de 16 Kbps de cada telefone, pode ser multiplicada por qualquer fator até o

número de ligações por canal. Na teoria, este número máximo é 64, o que fornece velocidades

superiores a 1Mbps. Na prática, velocidades dessa grandeza talvez ainda não sejam possíveis,

mas com um máximo de 15 códigos o sistema pode proporcionar velocidades respeitáveis

chegando a 240 Kbps. Limitações de hardware dos telefones e a baixa capacidade das

operadoras, tornam essas velocidades inatingíveis.

Page 38: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

38

A partir de uma atualização conhecida como IS-95b ou cdmaTwo, o CDMA pode fornecer

velocidades semelhantes às que GPRS e HSCSD fornecem para os sistemas GSM. As

operadoras podem implementar o cdmaTwo com uma simples atualização de software,

entretanto, seus clientes precisarão trocar seus telefones. O cdmaTwo serve como base para a

implementação de redes de terceira geração.

2.3.2.5 HSCSD

Segundo Dornan (2001) o HSCSD (High Speed Circuit Switched Data) é uma simples

atualização no sistema GSM, capaz de fornecer mais de um time slot para cada um dos seus

usuários na operação de multiplexação. Foi padronizado em 1997 pelo ETSI (European

Telecommunications Standards Institute) e teve seu lançamento comercial apenas em 2000.

Ele equivale a juntar duas ou mais linhas telefônicas e somar suas capacidades de transmissão.

As redes e telefones móveis com suporte a HSCSD utilizam codecs mais sofisticados,

permitindo uma velocidade de transferência de dados de 14,4 Kbps. O padrão HSCSD

permite a fusão de até quatro canais GSM, resultando em velocidades de 57,6 Kbps. Porém,

velocidades intermediárias de 28,8 e 43,2 Kbps são possíveis e mais comuns. Também é

possível realizar transferência de dados assimétrica, por exemplo, três time slots transmitidos

da estação rádio base para a estação móvel e um ou dois time slots no sentido contrário.

“O limite de quatro canais não foi escolhido de forma aleatória. Seria possível agregar todos

os oito canais em um time slot, mas isso dificultaria o projeto dos aparelhos de telefone e o

HSCSD pretendia ser uma simples atualização.” (DORNAN, 2001, p 71). Utilizando apenas

quatro canais os telefones não precisam transmitir e receber dados simultaneamente, e cada

time slot nos frames de link direto GSM é emparelhado com um time slot no link reverso

correspondente, conforme mostrado na figura 9.

Dornan (2001) explica que o HSCSD de transferência plena significa que cada cliente precisa

de quatro vezes mais largura de banda para chamadas regulares e oito vezes mais para

chamadas que utilizem codec de meia velocidade3. Todavia, muitos clientes não desejam

3 Codec de meia velocidade é um codec (codificador e decodificador responsável por converter a voz analógica

em sinal digital) que divide pela metade a largura de banda necessária por chamada, duplicando a capacidade de

transmissão com uma pequena perda na qualidade do sinal. (DORNAN, 2001).

Page 39: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

39

pagar oito vezes mais por uma chamada regular, o que fez com que as operadoras GSM não

implementassem o HSCSD e aguardassem por outro sistema mais eficiente do ponto de vista

de utilização de largura de banda.

Figura 9 - HSCSD de quatro slots

Fonte: Dornan (2001, p 72) – Adaptada por Rodrigo L. Duarte.

Um outro problema apresentado por Dornan (2001, p 71) é:

O projeto de terminais HSCSD também oferece dificuldades. Quatro time slots

precisam transmitir por quatro vezes mais que um telefone GSM comum, com os

correspondentes aumento de consumo de bateria e de emissão de radiação. Além de

possíveis danos à saúde, existe um problema mais imediato: os primeiros terminais

com transferência plena simplesmente se incendiariam.

Uma solução para o superaquecimento foi a construção de dispositivos HSCSD assimétricos,

onde velocidades maiores são fornecidas para downloads e velocidades menores para

uploads. Essa solução vem de encontro com as características da navegação na web, onde

páginas de texto e imagens são transmitidas em um único sentido e poucos cliques do mouse

em sentido contrário. Mas por se tratar de uma tecnologia que utiliza comutação por circuito,

não há uma maneira de se aproveitar a largura de banda não utilizada resultando em time slots

vazios nas transmissões no sentido estação móvel para estação rádio base.

Apenas uma única aplicação simétrica utilizando HSCSD foi lançada até agora, é o vídeo

bidirecional. Conforme Dornan (2001) a operadora britânica Orange desenvolveu um

videofone com câmera embutida e um terminal HSCSD de 28,8 Kbps. Seu lançamento era

previsto para o início de 2000, mas foi adiado por pelo menos um ano.

Slots emparelhados Telefone recebe

Frame A

Link reverso

Link direto 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

Frame B

Telefone transmite

Page 40: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

40

2.3.2.6 GPRS

O GPRS (General Packet Radio Service) é o mais popular esquema de Internet sem fio entre

as operadoras, pois foi projetado para dados e prometendo fornecer a cada usuário uma

conexão permanente e de alta velocidade à Internet. Ele foi projetado para funcionar sistema

baseado no padrão, porém funciona apenas com GSM. (DORNAN, 2001).

Para Tanenbaum (2003, p 179) o GPRS é “uma rede de superposição de pacotes sobre o D-

AMPS ou o GSM. Ele permite que estações móveis transmitam e recebam pacotes IP em uma

célula que executa um sistema de voz.”

O grande aperfeiçoamento realizado no GPRS é a introdução de comutação de pacotes em

redes móveis, sendo mais eficiente que a comutação por circuito. Pelo fato de a comutação

por pacote ser o padrão para as redes de terceira geração, as redes GPRS também são

conhecidas como redes 2,5G.

Numa rede GSM ou HSCSD, que utilizam comutação por circuito, cada usuário ocupa por

inteiro um canal de 9,6 Kbps, mesmo não estando transmitindo ou recebendo nada, apenas

pelo fato de estarem conectados. Para Dornan (2001) isso resulta em um desperdício tanto

para os usuários como para as operadoras. O cliente por estar pagando por uma conexão

ociosa e a operadora comprometendo uma parte do espectro que poderia estar sem utilizada

de uma forma mais lucrativa.

O GPRS pode compartilhar um único time slot de 14,4 Kbps entre centenas de usuários, desde

que todos não tentem utilizá-lo ao mesmo tempo. (DORNAN, 2001). Desta forma, cada

usuário tem uma conexão permanente com velocidades bem baixas, na faixa de 0,1 Kbps ou

até menos, e que sobem de velocidade na medida em que haja necessidade de transmissão ou

recepção de dados.

O GPRS prevê uma velocidade máxima de dados de até 115,2 Kbps, mas para isso necessita

de estações móveis capazes de fazer uso dos oito time slots de forma simultânea. Contudo,

esse valor é puramente teórico, uma vez que o GPRS enfrenta o mesmo problema de

superaquecimento existente no HSCSD, ou seja, os sistemas GPRS também são assimétricos.

O GPRS deve coexistir com o GSM e talvez com o HSCSD, o que implica em telefones que

trabalhem tanto com comutação de circuitos como comutação por pacote. Mas a grande

Page 41: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

41

tendência é que as redes GPRS conduzam voz nos pacotes, utilizando um codec de velocidade

variável para que os dados possam ser transmitidos durante os intervalos da conversação.

(DORNAN, 2001). Em virtude da necessidade de os telefones com suporte a GPRS terem que

trabalhar tanto com comutação por pacotes quanto com comutação por circuito, os aparelhos

estão classificados em 3 categorias: A, B, C.

Na categoria A os aparelhos “[...] são capazes de realizar conexões simultâneas de comutação

de circuito e de pacotes. O cliente pode conversar no telefone e surfar na Web ao mesmo

tempo.” (DORNAN, 2001, p 74). Os aparelhos da categoria B “[...] mantêm uma conexão de

pacotes, enquanto está em andamento uma chamada de circuito comutado, mas não são

capazes de enviar dados. O cliente pode ser notificado, por exemplo, da chegada de um e-mail

enquanto uma ligação está em andamento, mas será necessário desligar para recebê-la.”

(DORNAN, 2001, p 74). Já os da categoria C “[...] operam nos modos de comutação de

pacotes ou circuitos, mas não os dois ao mesmo tempo. Quando ocorre uma chamada de voz,

é necessário interromper a conexão de dados que, com essa exceção, é permanente.”

(DORNAN, 2001, p 74).

2.3.3 Terceira geração

Os sistemas de terceira geração (3G) são essenciais para os serviços de Internet sem

fio e, quase sempre, são considerados como o futuro da comunicação móvel.

Inicialmente, proporcionariam acesso permanente à Web, vídeo interativo e

qualidade de voz semelhante à de um CD-player e não de um telefone celular.

Muitas de suas futuras aplicações ainda são desconhecidas, mas os especialistas do

setor afirmam que serão descobertas com o passar do tempo. (DORNAN, 2001, p

94).

A principal característica das redes de terceira geração (3G) é a transmissão de dados em alta

velocidade, e o conceito original de um sistema 3G segundo Dornan (2001) é qualquer padrão

capaz de fornecer aos usuários móveis o desempenho das redes ISDN (Integrated Services

Digital Network) ou superior, mas pelo menos 144 Kbps. Mas o termo 3G acabou se tornando

bastante vago.

Padrões considerados como 2,5G oferecem velocidades equivalentes aos padrões 3G, por

exemplo, o GPRS e o cdmaTwo. Porém estes dois padrões só oferecem esse desempenho em

condições ideais, e os sistemas 3G precisam oferecer o desempenho proposto para todos os

seus usuários, independente da sua localização em relação à estação rádio base e do

Page 42: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

42

equipamento utilizado por esses usuários. A figura 10 mostra o processo de atualização das

redes 1G e 2G para se tornarem redes 3G.

A compatibilidade retroativa deverá ser mantida entre os padrões 3G e seus predecessores,

para que os telefones possam manter a conexão enquanto se deslocam entre células baseadas

no antigo e no novo padrão. (DORNAN, 2001).

Segundo Dornan (2001) assim como aconteceu com as redes 1G e 2G, não existe uma única

solução para redes 3G. Por exemplo, a Europa definiu um tipo de CDMA que funcionará com

o GSM, que poderá ou não ser compatível com um sistema já existente no Japão. Já em

regiões onde as redes 2G são baseadas na tecnologia CDMA, surge uma solução conhecida

como cdma2000 e sem compatibilidade entre os sistemas europeu e japonês. Na América as

operadoras de redes D-AMPS e GSM, a solução desejada é baseada na tecnologia TDMA, o

que segundo Dornan (2001) resulta num padrão federal, que é mais precisamente descrito

como uma fraude, onde o roaming4 global só será possível com o uso de telefones multímodo

especiais.

Figura 10 - Percurso de atualização para a terceira geração

Fonte: Dornan (2001, p 95) – Adaptada por Rodrigo L. Duarte.

4 Processo no qual um usuário da rede celular faz uso de uma outra rede celular que não é a sua rede de origem.

América

Europa

Japão

Atualização com sistemas de rádio inteiramente

novos necessários

Atualização com nova modulação necessária

Atualização fácil sem adaptações

cdma2000

PDC

GSM

HSCSD

GPRS EDGE W-CDMA

AMPS / D-AMPS D-AMPS+

IS-95a IS-95b 1XMC

HDR 3XMC

1Xtreme

Sistemas 2G

Sistemas 3G

Page 43: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

43

Em 1992 a ITU (Internacional Telecommunications Union) percebendo que as comunicações

móveis cada vez mais tornavam-se importantes, lançou um projeto originalmente chamado de

FPLMTS (Future Public Land Mobile Telecommunications System) e logo depois alterado

para IMT-2000, cujo objetivo é de unir o mundo sob um padrão único. De acordo com

Dornan (2001) a sigla IMT significava Internacional Mobile Telecommunications e o número

2000 tinha três significados:

• O ano 2000, ano em que o sistema deveria entrar em serviço.

• As transferências de dados de 2000 Kbps.

• As freqüências na faixa de 2000 MHz na qual ele deveria operar.

Segundo Tanenbaum (2003) nenhum dos três aspectos foram alcançados, pois em 2000 não

havia nada implementado. Com exceção da China, nenhum país atendeu à recomendação da

ITU com relação a parte do espectro na faixa de 2GHz. E por fim, reconheceu-se que uma

largura de banda de 2Mbps não era viável naquele momento para usuários com alta

mobilidade, em virtude da dificuldade de se realizar handoffs com a rapidez necessária.

Dornan (2001) também afirma que nenhuma das três aspirações se realizou totalmente, mas o

projeto se manteve com o nome IMT-2000, e que apesar de protótipos desenvolvidos em

1999, os telefones eram do tamanho de caminhões e esperava-se apenas para 2003 a

comercialização em larga escala do serviço.

Em função da dificuldade de realizar handoffs na velocidade necessária para suportar uma

largura de banda de 2Mbps, decidiu-se em uma escolha mais realista na qual se definiu três

velocidades diferentes, de acordo com Tanenbaum (2003):

• 144 Kbps para conexões em automóveis.

• 384 Kbps para pessoas se deslocando a pé.

• 2 Mbps para usuários estacionários em recintos fechados.

A tabela 5 mostra os tipos de serviços disponíveis no IMT-2000.

Page 44: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

44

Tabela 5 - Tipos de serviços disponíveis no IMT-2000

Classificação

dos serviços

Velocidade de

dados de saída

Velocidade de

dados de

entrada

Fator de

assimetria Exemplo Comutação

Multimídia

interativa 256 Kbps 256 Kbps Simétrica Videoconferência Circuito

Multimídia de

alto nível 20 Kbps 2 Mbps 100 Televisão Pacote

Meio de

multimídia 19,2 Kbps 768 Kbps 40

Navegação na

Web Pacote

Comutação de

dados 43,2 Kbps 43,2 Kbps Simétrica Fax Circuito

Mensagens

simples 28,8 Kbps 28,8 Kbps Simétrica E-mail Pacote

Fala 28,8 Kbps 28,8 Kbps Simétrica Telefonia Circuito

Fonte: Dornan (2001, p 100).

Dornan (2001) acredita que para os serviços listados na tabela 5 onde o tipo de comutação

seja por circuito, que esta comutação deva ser realizada por circuitos virtuais ao invés de

circuitos reais. Tudo é compactado em pacotes incluindo voz, fax e vídeo, porém os pacotes

de voz recebem prioridade sobre os demais.

Para as redes 3G a ITU previu uma única tecnologia mundial para o IMT-2000, visando que

os fabricantes de telefones celulares construíssem de um único dispositivo que pudesse ser

comercializado e utilizado no mundo inteiro. Entretanto, Tanenbaum (2003) diz que várias

propostas foram feitas e dentre elas foram selecionadas duas. A primeira foi o W-CMDA

(Wideband CDMA), que foi proposta pela empresa Ericsson. Este sistema foi adotado pela

União Européia e batizado de UMTS (Universal Mobile Telecommunications System). A

segunda proposta foi o cdma2000, proposto pela empresa Qualcomm.

2.3.3.1 W-CDMA

Preferido pela maioria das operadoras para ser o sistema das redes 3G, o W-CDMA ou

CDMA banda larga foi projetado para permitir handoff para o GSM, porém, são sistemas bem

Page 45: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

45

diferentes. Conforme Dornan (2001), as redes GSM não podem ser atualizadas para o W-

CDMA, podendo-se apenas aproveitar o backbone5 GPRS.

Utilizando uma largura de banda de 5 MHz por canal, por isso o nome banda larga, o W-

CDMA fornece uma capacidade quatros vezes maior que o cdmaOne e 25 vezes a do GSM,

afirma Dornan (2001). Tanenbaum (2003) diz que o W-CDMA funciona em uma largura de

banda de 5 MHz e que foi projetado para interoperar com redes GSM, mas sem

compatibilidade retroativa.

A utilização de uma banda maior se deve ao fato de permitir maiores velocidades de dados,

apesar de somente oferecer essas velocidades em ares de baixa densidade demográfica e com

uma boa intensidade de sinal. O W-CDMA sofreu algumas melhorias com relação ao envio

repetido de bits de dados, presente no cdmaOne. Ao invés de as informações serem enviadas

64 vezes, W-CDMA ajusta o número de repetições, conhecido como ganho, em função da

intensidade de sinal. Neste caso, cada bit pode ser enviado de 4 a 128 vezes, onde, quanto

mais fraco o sinal, mais vezes as informações são enviadas, reduzindo a largura de banda útil.

Dornan (2001) diz que uma outra grande diferença entre W-CDMA e o cdmaOne é a

necessidade de sincronização, pois foi projetado para trabalhar sem os sinais de clock6 GPS,

ele utiliza uma técnica de codificação conhecida como códigos Gold. A combinação destes

códigos com a modulação QPSK do cdmaOne, proporcionam velocidades de

aproximadamente 4 Mbps por canal em cada célula, o que supera os requisitos do IMT-2000.

O W-CDMA apresenta um aprimoramento da eficiência do espectro se comparado com os

sistemas TDMA, pois cada canal é reaproveitado em todas as células. Ele ainda permite a

realização de soft handoff, com exceção para as redes GSM onde os handoffs ainda são hard.

(DORNAN, 2001).

Na Europa o W-CDMA foi batizado de UMTS e foi planejado desde 1996 visando ser o

substituto do GSM, e tornando-o tão bem sucedido quanto. Em virtude de haver pouquíssima

capacidade nas redes 2G do Japão, as primeiras redes no padrão W-CDMA estão sendo

5 Suporte principal ou espinha dorsal da rede.

6 São sinais elétricos de cadência fixa, utilizados para sincronizar equipamentos de comunicação.

Page 46: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

46

implantadas no Japão pelas operadoras NTT DoCoMo e JPhone. Segundo Dornan (2001) as

duas empresas iniciaram testes em 2000 e esperavam comercializar o serviço em 2002.

2.3.3.2 CDMA 2000

O cdmaOne já se baseia no CDMA, o que o coloca na frente dos demais sistemas 2G na

corrida para o 3G. Isso se deve ao fato de as operadoras poderem atualizar suas redes através

de atualizações de software ou de modulação, enquanto as demais necessitam de um novo

sistema de rádio. Essas atualizações são conhecidas como cdma2000 e possuem

compatibilidade retroativa com todas as redes IS-95 existentes. (DORNAN, 2001).

A atualização final para o cdmaOne é conhecida como cdma2000 3XMC, e combina três

canais o que aumenta a largura de banda. A especificação do cdma2000 3XMC é quase

idêntica ao do W-CDMA, mas apresentou problemas de compatibilidade com as redes W-

CDMA da Europa e do Japão, motivada pela velocidade dos chips7, ou seja, a freqüência de

ressonância do transceptor. Segundo Dornan (2001) a freqüência do cdma2000 precisa ser um

múltiplo do cdmaOne, enquanto a do W-CDMA precisa ser adequada a estrutura de frames do

GSM.

Em 2000 surge o 1Xtreme, um conjunto de sistemas lançados pela Nokia e Motorola. O

1Xtreme é capaz de alcançar velocidades semelhantes às do 3XMC, porém , utilizando apenas

um canal, ou seja, um terço do espectro. De acordo com Dornan (2001) as características do

1Xtreme não estão comprovadas e que para alguns analistas não passa de uma mera tentativa

de combater muitas das patentes do CDMA da concorrente Qualcomm.

Se as características do 1Xtreme forem comprovadas, ele proporcionará às operadoras de

cdmaOne um aumento de suas capacidades, muito além de qualquer sistema concorrente. A

tabela 6 mostra as atualizações concorrentes para o CDMA, porém, Dornan (2001) ressalta

que as capacidades reais são apenas estimativas dos fabricantes e que sua confiabilidade

deverá ser considerada apenas depois de serem testadas.

7 Componente eletrônico integrado em uma pastilha de silício.

Page 47: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

47

Tabela 6 - Comparação de sistemas CDMA

Sistema CDMA Largura de banda

do canal Velocidade do chip

Capacidade

máxima Capacidade real

cdmaOne IS-95b 1,25 MHz 1,2288 MHz 115,2 Kbps 64 Kbps

cdma2000 1XMC 1,25 MHz 1,2288 MHz 384 Kbps 144 Kbps

cdma2000 1Xtreme 1,25 MHz 1,2288 MHz 5,2 Mbps 1200 Kbps

cdma2000 HDR 1,25 MHz 1,2288 MHz 2,4 Mbps 621 Kbps

cdma2000 3XMC 3,75 MHz 3,6864 MHz 4 Mbps 1117 Kbps

W-CDMA (UMTS) 5 MHz 4,096 MHz 4 Mbps 1126 Kbps

Fonte: Dornan (2001, p 109).

• O 1XMC segundo Dornan (2001) é a etapa seguinte para as redes IS-95b. As letras MC

significam Multi Carrier e este sistema exige novo hardware nos controladores da estação

rádio base. Promete o dobro da capacidade do cdmaOne, fazendo uso de duas vezes para

cada código Walsh. Devido à semelhança com o IS-95b, ele é chamado às vezes de IS-

95c.

• Para Dornan (2001), o 3XMC é a proposta de cdma2000 aceita pelo ITU como parte do

IMT-2000. Possui desempenho semelhante ao do W-CDMA, e utiliza menos banda que o

W-CDMA e herda algumas características do cdmaOne, por exemplo, a velocidade do

chip e a necessidade de temporização GPS.

• O HDR (High Data Rate) é uma atualização do 1XMC proposta pela Qualcomm. Seu

funcionamento se resume em transformar um único canal de 1,25 MHz em um canal para

dados e o ganho de velocidade é obtido através de diferentes tipos de modulação.

(DORNAN, 2001).

• Já o 1Xtreme é o concorrente do HDR e do 3XMC. Utiliza as mesmas técnicas de

modulação do HDR, porém, para voz e dados e podendo ser aplicadas para toda a rede e

não apenas a um único canal. (DORNAN, 2001).

2.3.3.3 EDGE

O EDGE (Enhanced Data Rates for GSM Evolution) foi planejado para ser uma atualização

da velocidade de dados para as redes GSM, sendo mais uma etapa para as operadoras que já

possuíam HSCSD ou GPRS.

Page 48: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

48

A idéia original era que o EDGE fosse apenas um intermediário entre as redes GSM e o

UMTS, mas ele acabou sendo adotado como um padrão 3G para redes TDMA, e dessa forma

concorrendo com as tecnologias 3G baseadas em CDMA. (DORNAN, 2001). Para

Tanenbaum (2003) o EDGE não é classificado como um padrão 3G e sim como um padrão

2,5G, apesar de que para ele a identificação como 2,1G fosse a mais adequada. “Em 2000, a

ITU aceitou o EDGE como um modo de IMT-2000 e o padronizou como UWC-136.”

(DORNAN, 2001, p 112).

Segundo Dornan (2001) a UWCC (Universal Wireless Communications Consortium) foi

quem adotou o EDGE e em conjunto com a GSM Association, desenvolveram uma forma de

migrar o D-AMPS para o EDGE, motivada pelo esgotamento das redes D-AMPS tradicionais

e a migração para outras tecnologias 3G, necessitariam da construção de novas redes.

As características principais do GSM e do GPRS são herdadas pelo EDGE, desde a estrutura

TDMA de 8 time slots quanto o tamanho dos slots de 577 microssegundos. A diferença

basicamente está na forma de modulação, que deixa de ser GMSK e passa a ser 8-PSK, a

mesma utilizada no HDR, o que triplica a capacidade do EDGE em relação ao GSM.

“Como o 8-PSK é mais sujeito a ruído do que o GMSK, o EDGE possui nove MCSs

(Modulation and Coding Schemes) diferentes, cada um projetado para uma conexão de

qualidade diferente.” (DORNAN, 2001, p 112). A diferença entre os nove MCSs está apenas

na utilização ou não da modulação 8-PSK, em função do nível de ruído, e da quantidade de

correção antecipada de erro ou FEC8 (Forward Error Correction). Para conexões ruidosas o

EDGE automaticamente utiliza a modulação GMSK, deixando o 8-PSK apenas para as

conexões de melhor qualidade. A tabela 7 mostra os MCSs, o tipo de modulação e o FEC para

cada um deles.

Na prática a utilização do padrão EDGE em redes GSM, requer a utilização também do

GPRS, como mostrado na figura 10.

8 FEC é um recurso que prevê a ocorrência de erros e procura superá-los, enviando códigos de correção extras.

(DORNAN, 2001, p 70).

Page 49: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

49

Uma versão simplificada do EDGE foi desenvolvida pelo consórcio UWCC, visando facilitar

a implementação do EDGE nas operadoras D-AMPS. Essa versão simplificada foi chamada

de EDGE Compact, podendo ser utilizada apenas para dados e não para voz, e omitindo

vários canais de controle que são encontrados num sistema completo. Por isso, o EDGE

Compact é considerado como etapa intermediária e não um sistema completo. (DORNAN,

2001).

Tabela 7 - As nove modulações e esquemas de codificação do EDGE

MCS Capacidade do slot FEC Modulação Capacidade do

canal

MCS-1 8,8 Kbps 143% GMSK 70,4 Kbps

MCS-2 11,2 Kbps 91% GMSK 89,6 Kbps

MCS-3 14,8 Kbps 45% GMSK 118,4 Kbps

MCS-4 17,6 Kbps 22% GMSK 140,8 Kbps

MCS-5 22,4 Kbps 187% 8-PSK 179,2 Kbps

MCS-6 29,6 Kbps 117% 8-PSK 236,8 Kbps

MCS-7 44,8 Kbps 43% 8-PSK 358,4 Kbps

MCS-8 54,4 Kbps 18% 8-PSK 435,2 Kbps

MCS-9 59,2 Kbps 8% 8-PSK 473,6 Kbps

Fonte: Dornan (2001, p 113).

2.4 TECNOLOGIAS MÓVEIS

Com o advento das redes celulares, percebeu-se uma grande oportunidade de aproveitar essas

redes para trafegar também dados. Partiu-se então para o desenvolvimento de tecnologias que

proporcionassem aos telefones celulares e PDAs, o acesso à Internet. Uma das primeiras

tecnologias criadas para oferecer um serviço de web móvel foi a WAP. Atualmente existem

algumas outras tecnologias, por exemplo, J2ME, BREW e Visual Studio, que permitem não

só o acesso a Internet e transferência de dados, mas o desenvolvimento de aplicativos e jogos

para os dispositivos móveis.

Uma outra solução seria a utilização direta de aplicações web visualizadas em mini

navegadores, uma vez que, os aparelhos celulares estão ganhando cada vez mais recursos e as

Page 50: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

50

aplicações web serem tratadas na sua grande maioria no lado servidor, pode ser uma solução

possível de ser implementada.

2.4.1 WAP

Segundo Dornan (2001), em 1997 a Omnipoint, operadora norte-americana, resolveu

implementar um serviço de web móvel. Sem saber como implementar o serviço e também

quais tecnologias seriam necessárias, a operadora optou por abrir um processo de

concorrência de proposta. As propostas poderiam ser enviadas por qualquer pessoa ou

empresa e deveriam ser explicadas à Omnipoint, como o serviço seria oferecido aos seus

usuários e também como a receita da operadora sofreria aumentos.

O desafio foi aceito por quatro empresas, entre elas três fornecedores de telefones celulares

que sugeriram como solução, uma variante dos seus serviços de mensagem. A quarta empresa

conhecida como Planet, enviou uma proposta chamada de HDML (Handheld Device Markup

Language). Apesar de todas as proposta oferecem vantagens, elas foram recusadas em função

de serem soluções proprietárias, o que tornaria obrigatório o uso de telefones e softwares de

um único fornecedor. A Omnipoint então solicitou a definição de um padrão, o que resultou

na criação do WAP Forum formado originalmente pelas quatro empresas. Após um ano o

Forum foi aberto a novos membros e anunciada a primeira versão do WAP (Wireless

Application Protocol).

Dornan (2001) diz que outras soluções não-proprietárias foram criadas, por exemplo, o C-

HTML (Compact HTML) que tem o apoio do consórcio W3C. Porém, o WAP se destaca em

relação à outros sistemas web sem fio por ser uma nova pilha de protocolos completa e não

apenas uma linguagem de marcação. Por isso o WAP é mais complexo que o C-HTML, no

entanto, mais confiável por ter sido projetado para superar problemas específicos das redes

sem fio, como alta latência e flutuação. A figura 11 mostra a pilha de protocolos WAP e como

eles se encaixam no modelo OSI (Open System Interconnection).

Page 51: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

51

Figura 11 - Pilha de protocolos WAP

Fonte: Dornan (2001, p 136).

Os componentes da pilha de protocolos WAP são descritos a seguir:

• WDP (Wireless Datagram Protocol): “é a camada inferior da pilha WAP e é aquela dos

elementos que tornam o WAP, o protocolo extremamente portátil que é, possível de ser

usado em redes móveis extremamente diferentes.” (AREHART et al, 2001, p 27). É uma

alternativa ao uso do UDP/IP e cobre as camadas 3 e 4, resultando em transmissões mais

eficazes. (DORNAN, 2001).

• WTLS (Wireless Transport Layer Security): é uma camada opcional e tem como objetivo

resolver os problemas de segurança. É baseada na TLS (Transport Layer Security), que

por sua vez tem como base a SSL (Socket Security Layer) que são protocolos de Internet.

Opera por meio da camada WDP. (AREHART et al, 2001).

WML (Wireless Markup Language)

WTA (Wireless Telephony Application)

Wscript

WAE (Wireless Application Environment)

WSP (Wireless Session Protocol)

WTP (Wireless Transaction Protocol)

WTLS (Wireless Transport Layer Security)

UDP

IP

SMS USSD GRPS CDPD EDGE Bluetooth

WDP (Wireless Datagram Protocol)

GSM D-AMPS IS-95 UMTS

Camada 7

Camada 5

Camada 4

Camada 3

Camada 2

Protocolo WAP Outros protocolos

Page 52: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

52

• WTP (Wireless Transaction Protocol): “[...] fornece serviços para realizar transações

confiáveis e não confiáveis e opera por meio da camada WDP ou por meio da camada de

segurança opcional, WTLS.” (AREHART et al, 2001, p 24).

• WSP (Wireless Session Protocol): “[...] protocolo de sessão sem fio, permite que serviços

troquem dados entre aplicativos de forma organizada.” (AREHART et al, 2001, p 23).

Oferece serviços orientados à conexão por meio do WTP e não orientados à conexão por

meio do WDP.

• WAE (Wireless Application Environment): “[...] permite ao desenvolvedor usar formatos

e serviços específicos, criados e otimizados para apresentar conteúdo e interagir com

dispositivos de capacidade limitada.” (AREHART et al, 2001, p 21). Permite a utilização

de três aplicações diferentes: WML, WMLscript e WTA.

• WML (Wireless Markup Language): linguagem de marcação projetada para apresentar

principalmente páginas baseadas em texto. É definida como um arquivo XML (eXtensible

Markup Language), e possui suporte a texto (formatação, negrito, itálico, etc), imagens

WBMP (Wireless Bitmap), entradas do usuário e variáveis. (AREHART et al, 2001).

• WMLscript ou Wscript: “[...] uma linguagem de script baseada em JavaScript.”

(DORNAN, 2001, p 134).

• WTA (Wireless Telephony Application): “[...] interface que permite ao WAP acessar

recursos do telefone, como catálogo de endereços, e até realizar ligações.” (DORNAN,

2001, p 134).

Dornan (2001) diz que, embora o WAP possua seus próprios protocolos, ele foi projetado

para ser compatível com a Internet. Desta forma, as páginas escritas em WML podem ser

transportadas utilizando o HTTP comum sobre TCP/IP, sendo convertidas para WAP nos

gateways entre a Internet e as redes sem fio. Essa conversão enfraquece a segurança, pois a

criptografia realizada para a transmissão na Internet é diferente da criptografia utilizada na

transmissão das redes móveis, e no momento em que os dados vindos da Internet são

descriptografados para serem convertidos e criptografados pelo WTLS, os dados tornam-se

vulneráveis. Dornan (2001) comenta que o WAP também costuma ser descrito como um

protocolo centrado em redes, o que significa que a maior parte da inteligência está

concentrada na rede e não nos telefones. Isso provoca problemas de compatibilidade,

principalmente quando WMLScript é utilizado, pois os navegadores comuns de Internet

possuem interpretadores para a sua linguagem de script, enquanto o mesmo não ocorre com

os telefones celulares.

Page 53: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

53

2.4.2 BREW

“A plataforma BREW é a única solução aberta e de ponta a ponta que fornece um caminho

para o lucro com aplicativos de dados para desenvolvedores de aplicativos, fabricantes de

dispositivos e operadoras de redes. Ela é uma tecnologia e um sistema de negócios flexível e

pronto para usar.” (QUALCOMM, 2002).

Segundo a Qualcomm (2002), o aprendizado para desenvolvedores de aplicativos é facilitado

em função de a plataforma ser baseada nas linguagens C e C++, linguagens essas que são

populares, e pelo download do kit de desenvolvimento BREW (SDK) ser gratuito. No que diz

respeitos aos fabricantes de telefones celulares, a Qualcomm (2002) afirma que é

extremamente simples incorporar o BREW nos aparelhos devido ao pouco consumo de

recursos que o BREW faz dos aparelhos, e por isso podendo ser suportado inclusive pelos

aparelhos de baixo recurso, que equivalem de 80 a 90 por cento dos aparelhos presentes no

mercado. Já as operadoras podem ter a garantia de aplicativos seguros através do TRUE

BREW, um serviço opcional oferecido pela Qualcomm, que assegura a confiabilidade dos

aplicativos. Diante dessas características a Qualcomm (2002), garante que o BREW

proporcionará uma grande oportunidade de receitas para todos os participantes da indústria de

comunicação móvel.

A plataforma BREW possui suporte a J2ME (Java 2 Micro Edition), o que significa que além

dos aplicativos desenvolvidos em C/C++, o dispositivo terá condições de executar também

aplicativos desenvolvidos em J2ME. O BREW proporciona ainda aos desenvolvedores de

aplicativos J2ME, valor agregado através de sua abordagem de sistema ponta a ponta.

(QUALCOMM, 2002). A seguir são listadas outras características e vantagens do BREW:

• Processamento em tempo real verdadeiro: possibilita o processamento no lado cliente,

proporcionado uma nova gama de aplicativos, por exemplo, jogos de ação. Isso se deve à

capacidade da plataforma BREW de realizar download e executar aplicativos no telefone.

(QUALCOMM, 2002).

• Interatividade rápida com a informação: permite ao usuário realizar o download de

informações para seu telefone e depois fazer uso dela localmente. Por exemplo, realizar

download do banco de dados de uma determinada viagem, e a partir daí poder realizar

uma pesquisa no banco de dados ou até mesmo interagir com mapas rapidamente e

quantas vezes forem necessárias. (QUALCOMM, 2002).

Page 54: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

54

• Telefonia móvel mais personalizada: “Usuários finais podem literalmente personalizar

seus telefones com aplicativos e informações adequados a suas vidas - e trocar os

aplicativos sempre que quiserem.” (QUALCOMM, 2002). Um usuário pode realizar o

download de aplicativos de produtividade comercial, entretenimento e toques de

companhia personalizados. (QUALCOMM, 2002). Permite que as operadoras distribuam,

atualizem e recolham aplicativos, até mesmo os de uso específico de telefonia, sem que

haja a necessidade de levar o telefone à uma loja ou assistência técnica. (QUALCOMM,

2002). Esse gerenciamento de distribuição de aplicativos é feito por meio da ferramenta

BDS (BREW Distribuition System) que “[...] permite que uma operadora implante

rapidamente um negócio de aplicativos de comunicação móvel, sobre o serviço de

telefonia móvel que ela já oferece.” (QUALCOMM, 2005a).

• Requisitos de hardware mínimos: “A plataforma BREW é magra - exige cerca de 150

KB, eficiente e poderosa, sem exigir uma máquina virtual (VM,Virtual Machine) diferente

para cada modelo de telefone.” (QUALCOMM, 2002).

• Desde o seu lançamento em janeiro de 2001, a Qualcomm (jun. 2005) afirma que o

BREW está presente em 24 países e implantado serviços BREW por 45 operadoras. No

Brasil, a operadora VIVO implantou o serviço VIVODOWNLOADS que permite aos

clientes VIVO realizarem downloads de aplicativos diretamente para o seu celular.

(VIVO, 2005).

“[...] o BREW é independente da tecnologia de comunicação móvel usada por um aparelho

telefônico ou rede em particular, podendo facilmente suportar outras tecnologias de

comunicação móvel.” (QUALCOMM, 2005b). Ou seja, a plataforma BREW é independente

da interface aérea, podendo ser utilizada por aparelhos telefônicos baseados em outras

tecnologias de comunicação móvel, tais como GSM e D-AMPS, e não apenas em aparelhos e

redes CDMA. (QUALCOMM, 2005b).

2.4.3 SUPERWABA

Derivado de um outro projeto de software livre, o Waba da WabaSoft, e criado em 2000 por

Guilherme Campos Hazan, o SuperWaba é uma plataforma de desenvolvimento de software

voltada para aplicações para PDAs e Smartphones que possuam os sistemas operacionais

Windows Móbile ou Simbian 7. (SUPERWABA, 2005a). O kit de desenvolvimento do

SuperWaba define uma linguagem, uma máquina virtual e formato de arquivo para

armazenamento das classes e um conjunto de classes padrão. (SUPERWABA, 2005a).

Page 55: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

55

As aplicações SuperWaba podem ser desenvolvidas utilizando-se as ferramentas de

desenvolvimento para Java em virtude do modo como o SuperWaba foi projetado. Entretanto,

o SuperWaba não implementa nenhuma parte das especificações Java e também não possui

nenhum vínculo com a Sun Microsystems. (SUPERWABA, 2005a).

A seguir, são listadas algumas características da plataforma SuperWaba:

• Máquina virtual:

o Suporte a diversas plataformas.

o Possibilidade de criação de bibliotecas nativas em C.

o Suporte a PDAs monocromáticos, coloridos e também de alta resolução.

o Suporte a exceções (exceptions), números de ponto flutuante de alta precisão

(double) e número inteiros de grande capacidade (long).

o Utilização de toda memória disponível no PDA para as suas aplicações.

• Biblioteca de extensão:

o Container de HTML robusto.

o Tokenizador de XML.

o Classes com suporte a exibição de informações de GPS, baseados no protocolo

Garmin.

o Suporte para scanners da Symbol para Pocket PC e Palm OS.

o Suporte a leitura de arquivos PalmDoc e aos formatos de arquivo PalmZip.

o Suporte a algoritmos de criptografia: Blowfish, MD5, SHA1, TEA.

o Personal Information Abstract Layer : permite acessar dados pessoais nas

plataformas Pocket PC e Palm OS.

o API de Jogos, suportando sprites, botões animados, etc.

• Entrada e saída:

o Suporte a TCP/IP, porta serial, USB, Infravermelho, Bluetooth.

o Manipulação de arquivos em cartões Secure Digital e Memory Stick.

o Utiliza arquivos PDBs também no Pocket PC, tornando o banco de dados

específico da Palm multi-plataforma.

o Especificação de Conectividade para Banco de Dados (WDBC): com drivers para

IBM Db2 e o PDB SQL Driver.

o Capacidade de impressão.

• Interface com o usuário:

Page 56: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

56

o Dois estilos diferentes para todos os controles: Palm OS e Windows CE.

o Em ambos os estilos, todos os controles têm um estado desabilitado visível.

o Janelas popup arrastáveis.

o Posicionamento relativo faz com que o programa se adapte a qualquer resolução.

• Requisitos mínimos de hardware: Necessários apenas 340 KB.

Segundo SuperWaba (2005b), o processo de desenvolvimento de aplicativos em SuperWaba:

• Criação da aplicação usando qualquer IDE (Integrated Development Environment) Java e

o kit desenvolvimento SuperWaba.

• Compilação da aplicação utilizando o compilador Java.

• Executar as ferramentas de deployment para empacotar as classes em arquivos PDB (Palm

Database file) e gerar o instalador.

• Executar o instalador ou simplesmente sincronizar os dispositivos.

A figura 12 ilustra o processo de desenvolvimento em SuperWaba.

Figura 12 - Processo de desenvolvimento SuperWaba

Fonte: SuperWaba (2005b)

2.4.4 Visual Studio

É um ambiente de desenvolvimento que permite a elaboração de diversos tipos de aplicações

voltados para a plataforma .NET da Microsoft, como o ASP.NET, web services ou mesmo

aplicações Windows. Segundo Haddad (2005), o Visual Studio .NET 2003 incorpora

ferramentas para o desenvolvimento de aplicações para Pocket PC e PDAs. Para aplicações

Page 57: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

57

de telefones celulares, é necessário a instalação de emuladores que podem ser encontrado nos

sites dos fabricantes como a Nokia, Openwave, etc.

Haddad (2005) afirma que um ponto forte da plataforma .NET é o suporte a Visual Basic, e

Visual C#, podendo o desenvolvedor utilizar o conhecimento em uma dessas linguagens para

o desenvolvimento de suas aplicações para dispositivos móveis, com as limitações das classes

disponíveis para esse tipo de aplicação. Outra vantagem do Visual Studio é a de não se

preocupar com o tipo de telefone celular a aplicação irá rodar, tornando a produtividade e a

facilidade de desenvolvimento ainda maior. “O processo é semelhante ao processamento de

uma página ASP.NET, quando o Web Server recebe a solicitação do celular (via operadora, é

claro), o Framework identifica qual é o Device que fez tal solicitação e monta o WML

(Wireless Markup Language) que ele suporta.” (HADDAD, 2005). O .NET suporta mais de

200 dispositivos de fabricantes diferentes.

2.4.5 J2ME

O J2ME foi desenvolvido especialmente para dispositivos com baixo poder de

processamento, por exemplo, pagers e celulares. “Com a introdução do J2ME, os dispositivos

micros não precisam mais ter natureza estática.” (MUCHOW, 2004, p 3). O J2ME permite a

um dispositivo móvel a opção de navegar na Internet, realizar downloads e instalar aplicativos

Java e conteúdo. (MUCHOW, 2004). O J2ME possibilita acesso aos recursos inerentes da

linguagem e da plataforma Java, ou seja, uma linguagem de fácil aprendizado, um ambiente

em tempo de execução que oferece uma plataforma portável e segura, e acesso a conteúdos

dinâmicos.

Por ser destinada a dispositivos com poucos recursos de processamento e memória, a API

(Application Program Interface) do J2ME não oferece todos os recursos disponíveis na

versão J2SE do Java. Em função da diversidade de dispositivos móveis existentes e das

diferentes características que cada tipo de dispositivo apresenta, os recursos dentro do J2ME

podem variar bastante. (MUCHOW, 2004). Segundo Muchow (2004), uma única plataforma

Java não seria capaz de suportar a grande variedade de dispositivos existentes, e para poder

suportar esses dispositivos o J2ME introduz dois novos conceitos: configurações e perfis.

Page 58: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

58

2.4.5.1 Configuração

É responsável por definir uma plataforma Java para uma ampla variedade de dispositivos,

estando intimamente vinculada a uma máquina virtual Java (JVM), e também define os

recursos da linguagem Java e as bibliotecas básicas suportadas pela JVM para um tipo de

configuração em particular. (MUCHOW, 2004). Atualmente existem duas configurações no

J2ME, a CDC (Connected Device Configuration) e a CLDC (Connected Limited Device

Configuration), e o que define o uso de uma ou de outra são os recursos disponíveis nos

dispositivos, por exemplo, memória, vídeo, conectividade de rede e poder de processamento.

A máquina virtual para o CLDC foi desenvolvida pela Sun como sendo uma implementação

de referência de uma máquina virtual e foi batizada de KVM (K Virtual Machine), e foi

projetada para manipular considerações especiais dos dispositivos de recurso restrito. Já a

máquina virtual definida para o CDC tem a mesma especificação da JVM da versão J2SE.

(MUCHOW, 2004).

A seguir são listadas as características típicas dos dispositivos suportados por cada uma das

configurações:

• Configuração de dispositivo conectado (CDC):

o Mínimo de 512 KB de memória para execução do Java.

o Mínimo de 256 KB de memória para alocação de memória em tempo de execução.

o Conectividade de rede, largura de banda possivelmente persistente e alta.

• Configuração de dispositivo conectado limitado (CLDC):

o Mínimo de 128 KB de memória para executar o Java.

o Mínimo de 32 KB de memória para alocação de memória em tempo de execução.

o Interface restrita com o usuário.

o Baixo poder, normalmente alimentado por bateria.

o Conectividade de rede, normalmente dispositivos sem fio com largura de banda

baixa e acesso intermitente.

2.4.5.2 Perfil

De acordo com Muchow (2004), um perfil pode ser considerado uma extensão de uma

configuração, fornecendo as bibliotecas necessárias para o desenvolvimento de aplicativos

Page 59: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

59

para um tipo em particular de dispositivo. O MIDP (Mobile Information Device Profile) é um

exemplo de perfil que define APIs que suportam componentes de entrada, tratamento de

eventos de interface com o usuário, armazenamento persistente, interligação em rede e

cronômetros, de acordo com as limitações de memória e vídeo dos dispositivos móveis.

(MUCHOW, 2004).

2.5 CONSIDERAÇÕES FINAIS

Vistos os conceitos básicos sobre as redes celulares, sua topologia básica, as gerações, as

tecnologias para desenvolvimento de aplicações para dispositivos móveis e a quantidade de

usuários dessas redes, pode-se visualizar uma grande oportunidade de negócios tanto para os

desenvolvedores de software, fabricantes e operadoras. A evolução tecnológica tende a

fornecer ainda mais recursos a esses dispositivos que hoje já possuem algum poder de

processamento. As redes 3G e suas sucessoras devem estar ainda mais voltadas para o

fornecimento de serviços de alta velocidade de dados, possibilitando o desenvolvimento de

novos serviços móveis.

A evolução das tecnologias existentes para o desenvolvimento de aplicações móveis, assim

como o surgimento de novas tecnologias, serão conseqüências da evolução das redes e dos

dispositivos móveis. O aprendizado de tecnologias que facilitem o desenvolvimento de

soluções móveis pode ser um diferencial para os desenvolvedores. Tecnologias como J2ME,

que possuam independência de plataforma, que ofereçam robustez, segurança, facilidade de

adaptação aos diferentes tipos de dispositivos, e ainda todas as vantagens oferecidas pelo

paradigma da orientação a objetos, são consideradas boas opções de ferramentas de

desenvolvimento.

Por essas razões, este trabalho se propõe a desenvolver uma solução de correio eletrônico para

celulares, utilizando a tecnologia J2ME, que possibilite não apenas e-mails com texto, mas

agregando a funcionalidade de através do acesso a um servidor de arquivos, anexar

documentos ao e-mail e enviá-lo a partir de um servidor de correio eletrônico.

Page 60: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

60

3 CORREIO ELETRÔNICO

Segundo Tanenbaum (2003), o serviço de correio eletrônico existe a mais de duas décadas e

antes de 1990 era utilizado principalmente nos meio acadêmicos. Porém, depois do

lançamento da Internet de uso comercial durante a década de 90, esse serviço ganhou

popularidade e o número de usuários cresceu exponencialmente. Atualmente o serviço de

correio eletrônico em algumas organizações é uma ferramenta de trabalho, mas é largamente

utilizado de maneira informal. O correio eletrônico permite aos seus usuários o envio de

arquivos em anexos e Gasparini e Barrella (1993, p 257) afirmam que “[...] é mais comum

encontrar usuários que transmitem arquivos via Correio Eletrônico do que os que utilizam

softwares de Transferência de Arquivos.”

Tanenbaum (2003, p 626) diz, “Os primeiros sistemas de correio eletrônico consistiam

simplesmente em protocolos de transferência de arquivos, com a convenção de que a primeira

linha da mensagem (isto é, o arquivo) deveria conter o endereço do destinatário.”. Essa

estratégia apresentava algumas limitações citadas por Tanenbaum (2003):

• Impossibilidade de envio a um grupo de pessoas.

• Falta de estrutura interna nas mensagens dificultava o seu processamento pelo

computador.

• O remetente nunca sabia se a mensagem havia chegado ou não.

• Falta de integração entre a interface do usuário e o sistema de transmissão, onde usuário

confeccionava a mensagem num editor, saía, executava o programa de transferência de

arquivos e enviava a mensagem.

• Impossibilidade de criar mensagens contendo texto, imagem e voz.

Tanenbaum (2003) diz que, com a experiência adquirida pelos usuários do serviço de correio

eletrônico, foram sendo propostos sistemas de correio eletrônico cada vez mais elaborados.

Essas propostas foram publicadas como RFC (Request For Comments) e em 1982 foram

Page 61: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

61

publicadas as RFCs 821 e 822, relativas ao serviço de correio eletrônico da ARPANET. Essas

RFCs sofreram revisões e tiveram suas publicações nas RFCs 2821 e 2822.

Em 1984 o CCITT (Comité Consultatif International Télégraphique et Téléphonique)

elaborou a sua recomendação para serviço de correio eletrônico, chamada de X.400. E depois

de duas décadas de concorrência, os sistemas de correio eletrônico baseados na RFC 822

tornaram-se o padrão mais utilizado, enquanto o os baseados no X.400 desapareceram.

(TANENBAUM, 2003). “O sucesso da RFC 822 não se deve apenas à sua qualidade, mas

também ao projeto ruim da X.400, cuja complexidade impedia sua implementação adequada.”

(TANENBAUM, 2003, p 627).

3.1 ARQUITETURA E SERVIÇOS

Conforme Tanenbaum (2003), os sistemas de correio eletrônico consistem em dois

subsistemas: os agentes do usuário, que permitem que as pessoas leiam e enviem mensagens,

e os agentes de transferência de mensagens, que transportam as mensagens da origem até o

destino. “Os agentes do usuário são programas locais que oferecem um método baseado em

comandos, em menus ou gráfico para interagir com o sistema de correio eletrônico.”

(TANENBAUM, 2003, p 628). “Normalmente, os agentes de transferência de mensagens são

daemons do sistema, ou seja, processos executados no segundo plano. Sua tarefa é mover as

mensagens de correio eletrônico pelo sistema.” (TANENBAUM, 2003, p 628). Geralmente os

sistemas de correio eletrônico suportam cinco funções básicas (TANENBAUM, 2003):

• Composição: “[...] se refere ao processo de criar mensagens e respostas.”

(TANENBAUM, 2003, p 628).

• Transferência: “[...] se refere ao deslocamento de uma mensagem entre o remetente e o

destinatário.” (TANENBAUM, 2003, p 628).

• Geração de relatórios: “[...] está relacionada ao fato de informar o remetente sobre o que

aconteceu com a mensagem. Ela foi entregue? Foi rejeitada? Perdeu-se?”

(TANENBAUM, 2003, p 628).

• Exibição: visualização das mensagens recebidas. Em algumas situações, torna-se

necessária a realização de conversões ou a utilização de um visualizador especial.

(TANENBAUM, 2003).

Page 62: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

62

• Disposição: “[...] é a ultima etapa e se refere ao que o destinatário faz com a mensagem

depois de recebê-la. Dentre as possibilidades estão jogá-la fora, gravá-la, etc.”

(TANENBAUM, 2003, p 628).

Tanenbaum (2003) diz que na sua maioria, os serviços de correio eletrônico permitem a

criação de caixas de correio para armazenar as correspondências recebidas, e que são

necessários comandos para criar e destruir caixas de correio, verificar seus conteúdos, inserir

e excluir mensagens de correio. A figura 13 ilustra os componentes de um sistema de correio

eletrônico.

Figura 13 - Componentes de um sistema de correio eletrônico Fonte: Feit (1993, p 287) – Adaptada por Rodrigo L. Duarte.

A necessidade de enviar uma mesma mensagem a mais de um destinatário originou as listas

de distribuição (mailing list). Outros recursos avançados como o envio de mensagem com

cópia carbono (cc), a cópia carbono oculta (bcc), mensagens de alta prioridade, mensagens

criptografadas, destinatários alternativos caso o destinatário principal não esteja disponível, e

a possibilidade de secretárias lerem e responderem as correspondências de seus chefes, são

recursos suportados por muitos serviços de correio. (TANENBAUM, 2003).

SMTP SMTP

Computador do destinatário

Fila de mensagens

Computador do remetente

Fila de mensagens

Servidor de

retransmissão Agente

de

usuário

Área de

caixa de

correio

Agente de

transferência

de

mensagens

Agente de

transferência

de

mensagens

Área de

caixa de

correio

Agente

de

usuário

Agente de

transferência

de

mensagens

Page 63: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

63

3.2 ENVIO DE MENSAGENS DE CORREIO ELETRÔNICO

O envio de mensagens por meio do serviço de correio eletrônico requer que o usuário

remetente inclua na mensagem o endereço de destino e muitas vezes alguns outros

parâmetros. A edição das mensagens pode ser feita em qualquer editor de texto, mas já

existem ferramentas especializadas que tem integrado o editor das mensagens e o agente de

usuário. (TANENBAUM, 2003). O endereço de destino na sua maioria obedecem ao formato

local-part@domain-name, onde local-part identifica a caixa de correio do destinatário e

domain-name identifica o domínio ao qual a máquina destino pertence. (GASPARINI;

BARRELA, 1993). Entretanto, Tanenbaum (2003) ressalta que existem outras formas de

endereçamento e em particular os endereços X.400 têm aspecto radicalmente diferente dos

endereços DNS (Domain Name System).

3.2.1 SMTP

O SMTP (Simple Mail Transfer Protocol) teve sua proposta publicada por meio da RFC 821 e

teve como autor Jonathan B. Postel em 1982. O objetivo do protocolo de transferência de

correio simples (SMTP) é transferir correio confiavelmente e eficientemente. (POSTEL,

1982).

Segundo Tanenbaum (2003), o SMTP é um protocolo ASCII simples, onde a máquina

transmissora estabelece uma conexão TCP na porta 25 com a máquina receptora. A máquina

receptora então inicia a comunicação informando sua identificação e se está apta a receber

mensagens. Caso a máquina receptora não esteja apta para receber mensagens, a máquina

transmissora encerra a conexão e tenta mais tarde. Se a máquina receptora estiver apta a

receber as mensagens, a máquina transmissora anuncia de quem veio a mensagem e para

quem está indo. Se o destinatário existir na máquina receptora, ela informa à máquina

transmissora o sinal para o envio da mensagem. A máquina transmissora então envia a

mensagem e ao término do envio, a máquina receptora confirma o recebimento. Havendo

mais de uma mensagem a ser enviada, a máquina transmissora envia todas, e quando toas as

mensagens em ambos os sentidos tiverem sido trocadas, a conexão é desfeita.

A seguir são listadas algumas RFCs relacionadas ao envio mensagens de correio eletrônico:

Page 64: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

64

• RFC 821: Criada por Jonathan B. Postel em 1982, é a especificação original do SMTP.

Nela estão definidos os comandos suportados pelo SMTP, bem como a seqüência de

execução dos mesmos. Os comandos definidos na RFC 821 são:

o HELO: É usado para identificar a máquina transmissora para o servidor. O

argumento deste comando é o nome da máquina transmissora. (POSTEL, 1982).

o MAIL: Este comando é usado para iniciar a transação de correio eletrônico, na

qual cada dado de correio é entregue a uma ou mais caixas de correio. O campo de

argumento contém o caminho reverso. (POSTEL, 1982).

o RCPT: Este comando é usado para identificar um destinatário de correio.

Múltiplos destinatários são definidos através do uso desse comando múltiplas

vezes. (POSTEL, 1982).

o DATA: Indica o inicio do envio da mensagem de correio e requer que o servidor

armazene as informações que serão transmitidas após esse comando. Os dados são

finalizados por uma linha que contém a seguinte seqüência de caracteres: <CR +

LF + . +CR + LF>. (POSTEL, 1982).

o SEND: Este comando é usado para iniciar uma transação de correio na qual os

dados de correio são entregues a um ou mais terminais. O campo argumento

contém o caminho reverso. (POSTEL, 1982).

o SOML: Este comando é usado para iniciar uma transação de correio na qual os

dados de correio são entregues a um ou mais terminais, ou caixas de correio. O

campo argumento contém o caminho reverso. (POSTEL, 1982).

o SAML: Este comando é usado para iniciar uma transação de correio na qual os

dados de correio são entregues a um ou mais terminais, e caixas de correio. O

campo argumento contém o caminho reverso. (POSTEL, 1982).

o RSET: Este comando especifica que a transação de correio atual será abortada.

Todos os dados armazenados serão descartados e os buffers e tabelas de estados

serão limpas. (POSTEL, 1982).

o VRFY: Este comando interroga o receptor para confirmar que um argumento

identifica um usuário. Se o argumento for o nome de um usuário e seu nome

completo for conhecido e estiver definido na caixa de correio, o nome completo é

retornado. (POSTEL, 1982).

o EXPN: Este comando interroga o receptor para confirmar se o argumento é uma

lista de distribuição. Se for, retorna os membros da lista de distribuição. (POSTEL,

1982).

Page 65: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

65

o HELP: Este comando solicita ao receptor que envie informações completas de

ajuda para o transmissor do comando HELP. O comando pode ter argumentos, por

exemplo, o nome de um comando e trará informações mais específicas. (POSTEL,

1982).

o NOOP: Este comando não especifica nenhuma ação, a não ser o envio de OK

como resposta do receptor. (POSTEL, 1982).

o QUIT: Este comando especifica que o receptor deve enviar um OK como resposta

e fechar o canal de transmissão. (POSTEL, 1982).

• RFC 974: Elaborada por Craig Partridge em 1986, ela descreve como os sistemas de

correio na Internet esperam rotear as mensagens, baseados nas informações de sistema de

domínio descritos nas RFCs 821, 883 e 973. (PARTRIDGE, 1986).

• RFC 1869: Elaborada por um grupo liderado por J. Klensin em 1995, ela define um

framework para estender os serviços SMTP definindo um meio de o servidor SMTP

informar à um cliente, como os serviços de extensão são suportados . (KLENSIN et al,

1995).

• RFC 2821: Elaborada por J. Klensin em 2001, ela contém a especificação básica do

SMTP (RFC 821), consolidando atualizações e esclarecendo que não foram adicionadas

novas funcionalidades e também não foram alteradas as funcionalidades existentes.

3.2.2 Formato de mensagens

“A RFC 822 é um padrão antigo e não distingue claramente os campos do envelope dos

campos do cabeçalho. Embora ela tenha sido revista na RFC 2822, não foi possível refazê-la

completamente, devido a sua utilização difundida.” (TANENBAUM, 2003, p 633). O formato

de mensagem previsto na RFC 822 é baseado em textos simples. As mensagens possuem um

envelope primitivo, definido na RFC 821, alguns campos de cabeçalho, uma linha em branco

e o corpo da mensagem. (TANENBAUM, 2003).

Normalmente o agente de usuário cria uma mensagem e a repassa para o agente de

transferência de mensagens, que por sua vez utiliza alguns campos do cabeçalho para criar um

envelope. Este envelope na verdade é uma mistura obsoleta de mensagem e envelope.

(TANENBAUM, 2003). Segundo Tanenbaum (2003), os principais campos de cabeçalho

relacionados ao envio das mensagens e seus significados são listados abaixo:

• To: O(s) endereço(s) de correio eletrônico do(s) destinatário(s) principal (is).

Page 66: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

66

• Cc: O(s) endereço(s) de correio eletrônico do(s) destinatário(s) secundário(s).

• Bcc: O(s) endereço(s) de correio eletrônico para cópias carbono ocultas.

• From: A(s) pessoa(s) que criou (aram) a mensagem.

• Sender: O endereço de correio eletrônico do remetente.

• Received: A linha incluída por cada agente de transferência de mensagem ao longo da

rota.

• Return-Path: Poder ser usado para identificar um caminho de volta ao remetente.

Tanenbaum (2003) afirma que as mensagens da RFC 822 podem conter uma variedade de

campos de cabeçalho que são utilizados pelos agentes de usuário ou pelos destinatários.

Sendo que os mais comuns são listados a seguir:

• Date: A data e hora que a mensagem foi enviada.

• Reply-To: O endereço de correio eletrônico para onde as respostas devem ser enviadas.

• Message-Id: O número exclusivo que será usado para fazer referência a essa mensagem

posteriormente.

• In-Reply-To: Message-Id da mensagem original correspondente a essa resposta.

• References: Outras Message-Ids relevantes.

• Keywords: Palavras-chaves do usuário.

• Subject: Pequeno resumo da mensagem apresentado apenas em uma linha.

A RFC 822 deixa claro que os usuários têm permissão de criar novos cabeçalhos para uso

próprio. A única restrição é que esses cabeçalhos comecem com o sufixo “X-“.

(TANENBAUM, 2003).

Depois dos cabeçalhos localiza-se o corpo da mensagem. Neste campo é permitido incluir o

que os usuários desejarem, desde textos desenhos elaborados a partir de caracteres ASCII

simples. A seguir são listadas algumas RFCs relacionadas ao formato das mensagens:

• RFC 822: Elaborada por David H. Crocker em 1982, ela especifica a sintax para as

mensagens de texto que são enviadas entre usuários de computadores, utilizando o

framework de correio eletrônico. (CROCKER, 1982).

• RFC 1341: Elaborada por N. Borenstein e N. Freed em 1992, ela foi elaborada para prover

facilidade para incluir múltiplos objetos em uma única mensagem e também representar

textos que possuem caracteres além do conjunto ASCII americano. A solução proposta

Page 67: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

67

por essa RFC ficou conhecida como MIME (Multipurpose Internet Mail Extensions).

(BORENSTEIN; FREED, 1992).

• RFC 1521: Elaborada por N. Borenstein e N. Freed em 1993, ela é uma revisão da RFC

1341 e foram sugeridas 13 alterações na 1521 em relação a 1341. Entre elas está a

obrigatoriedade do campo Content-ID para mensagens ou partes externas do corpo da

mensagem. (BORENSTEIN; FREED, 1993).

• RFC 1522: Elaborada por K. Moore em 1993, ela descreve uma extensão para o formato

de mensagem definido na RFC 1521, para representar conjuntos de caracteres que além do

US-ASCII. (MOORE, 1993).

• RFC 1590: Elaborada por J. Postel em 1994, ela se refere a um procedimento de registro

de novos tipos de mídia, além dos previstos pelo MIME. (POSTEL, 1994).

• RFC 2045: Elaborada por N. Borenstein e N. Freed em 1996, ela especifica vários

cabeçalhos usados para descreve a estrutura de mensagens MIME. (BORENSTEIN;

FREED, 1996).

• RFC 2822: Elaborada por P. Resnick em 2001, ela especifica a sintax para as mensagens

de texto que são enviadas entre usuários de computadores, utilizando o framework de

correio eletrônico. Esta RFC substitui a RFC 822, atualizando-a para as práticas atuais e

incorporando as alterações especificadas em outras RFCs. (RESNICK, 2001).

3.2.2.1 MIME

Em 1992, N. Borenstein e N. Freed elaboram a RFC 1341 visando prover facilidade para

incluir múltiplos objetos em uma única mensagem e também representar textos que possuem

caracteres além do conjunto ASCII americano. A solução proposta por essa RFC ficou

conhecida como MIME (Multipurpose Internet Mail Extensions). (BORENSTEIN; FREED,

1992). A RFC 1341 foi atualizada nas RFCs 2045 e 2049 e sua idéia básica é continuar

utilizando o formato RFC 822, mas incluir uma estrutura para o corpo da mensagem que não

utilizam o código ASCII. (TANENBAUM, 2003). O padrão MIME pode ser enviado por

qualquer protocolo e programa de correio eletrônico existente, pois é compatível com o

padrão 822. (TANENBAUM, 2003).

Segundo Tanenbaum (2003), no MIME são definidos cinco novos cabeçalhos de mensagens.

São eles:

Page 68: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

68

• MIME-Version: Informa ao agente do usuário receptor, não apenas que ele está lidando

com uma mensagem MIME, mas também a versão do padrão MIME que está sendo

utilizada.

• Content-Description: É um string ASCII que informa o conteúdo da mensagem.

• Content-Id: Identifica o conteúdo. Ele utiliza o mesmo formato do cabeçalho Message-Id

padrão.

• Content-Transfer-Encoding: Informa como o corpo da mensagem está codificado para a

transmissão de uma rede que possa fazer alguma objeção a caracteres que não sejam

letras, número e outros sinais de pontuação. Este é o cabeçalho mais interessante, pois ele

especifica a natureza do corpo da mensagem. Na RFC 2045 são definidos 7 tipos e cada

um deles possui um ou mais subtipos. Os tipos e seus respectivos subtipos são ilustrados

na tabela 8.

Tabela 8 - Tipos e subtipos MIME definidos na RFC 2045

Tipo Subtipo Descrição

Plain Texto sem formatação Text

Enriched Texto incluindo comandos simples de formatação

Gif Fotografia no formato GIF Image

Jpeg Fotografia no formato JPEG

Audio Basic Som audível

Vídeo Mpeg Filme no formato MPEG

Octet-stream Uma seqüência de bytes não-interpretada Application

PostScript Um documento que pode ser impresso em PostScript

Rfc822 Uma mensagem no formato MIME RFC822

Partial A mensagem foi dividida para transmissão Message

External-body A mensagem deve ser obtida através da rede

Mixed Partes independentes na ordem especificada

Alternative A mesma mensagem em diferentes formatos

Parallel As partes devem ser vistas simultaneamente Multipart

Digest Cada parte é uma mensagem RFC822 completa

Fonte: Tanenbaum (2003, p 638).

3.3 RECEBIMENTO DE MENSAGENS DE CORREIO ELETRÔNICO

“Normalmente, quando é acionado, um agente do usuário verifica a caixa de correio do

usuário em busca de mensagens recebidas antes de exibir algo na tela. Em seguida, ele pode

Page 69: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

69

anunciar o número de mensagens contidas na caixa de correio ou exibir um resumo de uma

linha de cada uma delas e aguardar um comando.” (TANENBAUM, 2003, p 631).

Este modelo funcionou bem durante décadas, quando todos os hosts da antiga ARPANET

(atualmente Internet) estavam on-line todo o tempo podendo aceitar conexões.

(TANENBAUM, 2003). Com o crescimento do número de pessoas que acessam a Internet por

meio de um provedor, este modelo não é válido. Para solucionar o problema de entrega de

mensagens de correio eletrônico aos usuários off-line, os provedores de Internet devem

possuir máquinas capazes de aceitar mensagens de correio eletrônico para seus clientes, e

armazená-las em suas respectivas caixas de correio na própria máquina do provedor. Desta

forma as mensagens de correio eletrônico podem ser enviadas 24 horas por dia.

(TANENBAUM, 2003).

Esta solução provocou um novo problema: como o usuário conseguirá acessar sua caixa de

correio no servidor do provedor? A solução para este problema foi a criação de dois

protocolos que permitem aos usuários acesso às suas caixas de correio. O primeiro é o POP3 e

o segundo é o IMAP.

3.3.1 POP3

Segundo Tanenbaum (2003), o protocolo POP3 (Post Office Protocol Version 3) é descrito na

RFC 1939. Ele é inicializado quando o usuário inicia o leitor de correio. O leitor de correio

por sua vez, verifica se já há uma conexão TCP estabelecida com o servidor POP3 do

servidor. Caso não haja, ele estabelece esta conexão através da porta 110. Depois da conexão

estabelecida o protocolo executa três passos em seqüência:

1. Autorização: efetua o login do usuário.

2. Transações: coleta as mensagens de correio eletrônico do usuário e marca as mensagens

para exclusão da caixa de correio do servidor.

3. Atualização: exclui as mensagens do servidor.

O protocolo POP3 admite deixar as mensagens na caixa de correio do servidor, porém a

maioria dos programas de correio eletrônico acabam removendo todas as mensagens,

deixando apenas uma cópia no disco rígido do usuário. Isto provoca um problema de

segurança, pois se o disco rígido do usuário der pane todas as suas mensagens serão perdidas.

Outro inconveniente do POP3 é o fato do usuário poder acessar sua conta de correio de vários

Page 70: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

70

micros diferentes, o que provocará o espalhamento de suas mensagens pelos diversos micros

utilizados. (TANENBAUM, 2003).

3.3.2 IMAP

O IMAP (Internet Message Access Protocol) definido na RFC 2060, pressupõe que todas as

mensagens de correio eletrônico permanecerão no servidor indefinidamente em várias caixas

de correio. Diferente do POP3 que supõe que o usuário limpará a caixa de correio há cada

contato, e trabalhará off-line depois disso. (TANENBAU, 2003). Tanenbaum (2003) também

diz que, o IMAP oferece vários recursos entre eles estão:

• Mecanismos extensos para leitura de mensagens ou parte de mensagens: útil quando está

se utilizando um modem lento para ler uma parte de uma mensagem de várias partes com

grandes anexos de áudio e vídeo.

• Mecanismos de criação, destruição e manipulação de caixas de correio no servidor: um

usuário pode manter uma caixa de correio para cada correspondente, e mover as

mensagens da caixa de entrada para estas caixas depois que as mensagens forem lidas.

• Mecanismos de endereçamento de correspondência por qualquer atributo da mensagem.

Exceto pela existência de dezenas de comandos e de se estabelecer TCP na porta 143, o

IMAP de modo geral é semelhante ao POP3. Todavia, nem todos os provedores e

programas de correio eletrônico aceitam os dois protocolos. Deste modo o usuário deverá

escolher o programa de correio eletrônico que tenha suporte ao protocolo usado pelo seu

provedor. (TANENBAU, 2003).

Page 71: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

71

4 PROTÓTIPO DO SISTEMA

A partir da revisão bibliográfica realizada neste trabalho, percebe-se um grande mercado com

usuários em potencial de aplicações destinadas aos dispositivos móveis e as diversas

tecnologias existentes para o desenvolvimento dessas soluções. O protótipo desenvolvido

neste trabalho é um exemplo de solução que permite explorar a mobilidade oferecida pelos

telefones celulares e ao mesmo tempo permitir um uso mais profissional e sofisticado desses

dispositivos.

Este protótipo é um sistema composto por dois módulos, um módulo cliente desenvolvido

usando a tecnologia J2ME e construído para ser executado em um telefone celular utilizando

a configuração CLDC (Connected Limited Device Configuration) e o perfil MIDP (Mobile

Information Device Profile), e um módulo servidor desenvolvido utilizando Servlets. O

módulo cliente realiza requisições utilizando protocolo HTTP e estas são recebidas pelo

módulo servidor por meio de uma Servlet principal que direciona as requisições para as

Servlets de ação específica, as quais atendem as requisições. Os tipos de requisições feitas

pela aplicação cliente estão: efetuar login, listar e navegar em diretórios e enviar mensagem

de correio eletrônico.

No desenvolvimento do sistema foi utilizada a ferramenta NetBeans 4.1, uma IDE Java

freeware, e seu pacote adicional NetBeans Mobility Pack 4.1 que permite o desenvolvimento

de aplicações J2ME de forma integrada e fácil construção de interfaces gráficas. Pelo fato do

sistema estar divido em dois módulos, adotou-se como estratégia para o desenvolvimento do

sistema a modelagem, implementação e testes isolados do módulo servidor e após o seu

término foi realizada a modelagem, implementação e testes integrados do módulo cliente.

A seguir é apresentada a arquitetura, modelagem, modelo de ciclo de vida utilizado no

desenvolvimento e utilização do sistema.

Page 72: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

72

4.1 ARQUITETURA DO SISTEMA

A arquitetura do sistema é composta pelo dispositivo móvel, a estação rádio base (BTS), a

rede de dados móvel (GPRS), um servidor de aplicação e arquivos, um servidor SMTP e a

rede Internet, como mostrado na figura 14.

Figura 14 - Arquitetura do sistema

No dispositivo móvel é executado o módulo cliente do sistema, onde o usuário efetua seu

login e pode realizar o envio de e-mails e anexar aos e-mails os arquivos disponíveis no

servidor de arquivos. A BTS recebe os dados do dispositivo móvel e encaminha para a rede

GPRS. O primeiro gateway GPRS, converte os dados enviados pelo dispositivo móvel na

forma de comutação de circuito para comutação por pacotes e encaminha os dados para a rede

GPRS. O segundo gateway GPRS, realiza a conversão dos pacotes GPRS para pacotes IP e os

envia para a Internet. Se o servidor de aplicação estiver acessível pela Internet, o módulo

servidor poderá atender diretamente as requisições feitas pelo módulo cliente. Caso o servidor

de aplicação esteja acessível apenas na Intranet, o acesso pela Internet poderá ser feito por

meio de uma VPN, e assim acessar a Intranet. O servidor de aplicação então executa o

módulo servidor que por sua vez atende as requisições do módulo cliente e serve de

repositório de arquivos. O servidor SMTP é responsável por realizar o envio das mensagens

de correio eletrônico solicitado pelo módulo cliente. O protocolo de comunicação utilizado

entre os módulos do sistema foi o HTTP.

Page 73: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

73

O sistema foi projetado e desenvolvido utilizando o padrão MVC (Model-View-Controller), e

é composto pelos módulos cliente executado no dispositivo móvel e pelo módulo servidor

sendo executado em um servidor. Toda camada de visão (view) e uma parte da camada de

controle (controller) e modelo (model) estão no módulo cliente. O restante da camada de

controle e de modelo estão no módulo servidor. No módulo cliente a persistência foi

implementada utilizando o RMS (Record Management System), sistema de gerenciamento de

registros que permite implementar persistência dentro do perfil MIDP. Foi criado um

JavaBean especializado em manipular os registros RMS, visando abstrair essa complexidade.

Com o intuito simplificar o protótipo, o módulo servidor teve sua persistência implementada

por meio de arquivos de perfil, onde para cada usuário é criado um arquivo de perfil contendo

as informações pertinentes a cada um deles, dispensando assim a instalação e configuração de

um sistema de gerência de banco de dados para o armazenamento dessas informações no

servidor. Entretanto, prevendo uma possível alteração na forma de armazenamento desses

dados, foi criado um JavaBean que manipula os arquivos de perfil, e que com simples

alterações em sua implementação ele poderá manipular essas informações seja qual for a

forma de armazenamento e sem implicar em alterações na aplicação. A arquitetura do sistema

também está ilustrada na figura 15 sob a forma de um diagrama UML de implantação.

Figura 15 - Diagrama de implantação

Page 74: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

74

No diagrama de implantação fica clara a dependência que o módulo cliente tem da máquina

virtual Java (KVM), ou seja, esse módulo só poderá ser executado em dispositivos com

suporte a aplicações Java. Já o módulo servidor é dependente de um container Servlet,

exemplificado nesse caso com TOMCAT9 Servlet Container. A interface entre os módulos

cliente e servidor é feita por meio do protocolo HTTP e entre o módulo servidor e o servidor

SMTP é utilizado o protocolo SMTP.

4.1.1 Formato das requisições e respostas HTTP

O protótipo foi modelado e implementado utilizando como protocolo de comunicação o

HTTP, pois segundo Muchow (2004) o HTTP é o único protocolo que é exigido no perfil

MIDP 2.0, garantindo assim a portabilidade da aplicação para todos os dispositivos que

suportam esse perfil. Para protocolos como UDP e TCP não há garantia de que estejam

disponíveis em todos os dispositivos pertencentes ao perfil MIDP.

As requisições podem ser realizadas utilizando o método POST10 ou método GET11. As

resposta enviadas pela aplicação servidora são textuais compostas por vários campos tem

como caracter delimitador de campo, o caracter pipe ‘ | ‘. Todas as requisições são feitas à

aplicação servidora por meio de um controlador de requisições HTTP, que implementa a

interface Runnable12 e que possui um método execute que recebe como parâmetro um atributo

acao que é do tipo Acao. A classe Acao por sua vez é abstrata, devendo ser especializada de

acordo com a ação que se deseja executar na aplicação servidora. Maiores detalhes dessas

classes serão encontrados na seção 4.3. As tabelas 9, 10 e 11 ilustram o formato de requisição

e resposta das ações efetuar login, listar diretórios e arquivos e enviar mensagem de correio

eletrônico respectivamente.

9 Integrante do projeto Jakarta da fundação Apache.

10 O método POST é o inverso do GET, que ao invés de ler grava a página, anexando os novos dados aos dados

existentes. (TANENBAUM, 2003).

11 O método GET solicita ao servidor que envie a página, e esta é codificada em MIME de forma adequada.

(TANENBAUM, 2003).

12 Interface JAVA utilizada para implementação de threads, por meio da implementação do método run.

(DEITEL, DEITEL, 2005).

Page 75: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

75

Tabela 9 - Formato da requisição e resposta para a ação efetuar login

Nome da requisição

Efetuar login

Métodos

GET / POST

Parâmetro Valor

acao login

usuario <id do usuário>

senha <senha do usuário>

Resposta

Campo Valor

status OK / ERRO

caracter delimitador de campo pipe “ | ”

mensagem <mensagem de sucesso ou erro>

Tabela 10 - Formato da requisição e resposta para a ação navegar e listar diretórios / arquivos

Nome da requisição

Navegar e listar diretórios / arquivos

Métodos

GET / POST

Parâmetro Valor

acao listFolder

diretorio (opcional) <diretório a ser acessado e listado>

Resposta

Campo Valor

status OK / ERRO

caracter delimitador de campo pipe “ | ”

mensagem <mensagem de erro / lista de arquivos e diretórios >

Page 76: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

76

O parâmetro diretório é opcional e caso ele não seja enviado, a aplicação servidora acessará o

diretório que está configurado no arquivo de perfil como diretório raiz do usuário em questão.

Já o campo mensagem nesse caso poderá conter uma mensagem de erro ou a listagem dos

arquivos e diretórios. Quando for a listagem de diretório, o campo status irá conter a string

“OK” e o campo mensagem terá diversos campos separados pelo caracter pipe, que por sua

vez terão subcampos separados pelo caracter sustenido ‘ # ‘. Estes subcampos referem-se a

alguns atributos dos arquivos, como por exemplo, se é um arquivo ou diretório, data da última

modificação e tamanho em bytes.

Tabela 11 - Formato da requisição e resposta para a ação enviar mensagem de correio eletrônico

Nome da requisição

Enviar mensagem de correio eletrônico

Métodos

GET / POST

Parâmetro Valor

acao sendMsg

remetente <endereço de correio eletrônico do remetente>

assunto <assunto da mensagem de correio eletrônico>

destinatarios <endereço de correio eletrônico dos destinatários>

destinatariosCC <endereço de correio eletrônico dos destinatários cópia carbono>

destinatariosBCC <endereço de correio eletrônico dos destinatários cópia oculta>

corpoMensagem <Conteúdo da mensagem de correio>

anexo <nome do arquivo a ser anexado>

Resposta

Campo Valor

status OK / ERRO

caracter delimitador de campo pipe “ | ”

mensagem <mensagem de sucesso ou de erro>

Page 77: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

77

O parâmetro remetente é enviado como sendo a identificação do usuário utilizada para

estabelecer o login, acrescida do domínio mobilemail.com.br. Se o parâmetro assunto não for

preenchido na interface de envio de mensagem, o sistema colocará a string “No subject” como

valor deste parâmetro. Os parâmetros destinatarios, destinatariosCC e destinatariosBCC

podem ser um único endereço de e-mail ou uma lista de vários endereços separados por

vírgula ou ponto e vírgula. A mensagem deve ser destinada a pelo menos um destinatário,

caso contrário a aplicação servidora não realizará o envio da mensagem e será gerada uma

exceção. O parâmetro corpoMensagem é opcional assim como o parâmetro anexo. Entretanto,

caso seja selecionado mais de um arquivo para ser anexado à mensagem de correio, existirão

vários parâmetros anexo, cada um contendo o nome de um dos arquivos a ser anexado.

4.2 FUNCIONAMENTO DO SISTEMA

Nessa sessão serão apresentados os passos para a utilização do sistema. Primeiramente, o

módulo servidor deverá estar instalado em um servidor de arquivos ou até mesmo na estação

de trabalho do usuário, facilitando assim o acesso aos seus documentos pessoais. O módulo

servidor deverá estar acessível pela Internet ou até mesmo numa Intranet que possa ser

acessada via Internet por meio de uma VPN (Virtual Private Network). Estando instalado o

módulo servidor, o usuário deve possuir um telefone celular com suporte a aplicativos Java e

realizar a instalação do módulo cliente. Para realizar a instalação deste módulo, o usuário

deverá consultar o manual do seu dispositivo móvel e executar os procedimentos de instalação

de novos aplicativos.

Depois de instalado, o módulo cliente deverá estar acessível no menu aplicativos do

dispositivo móvel. Localizado o módulo cliente, ele deve ser selecionado para que seja

executado. A figura 16 ilustra a tela de entrada do módulo cliente.

Os usuários deverão estar devidamente configurados para que possam utilizar o serviço, pois

eles necessitam se autenticar no serviço para que possam utilizá-lo. O próximo passo é efetuar

seu login acessando a opção efetuar login disponível na tela principal, como mostra a figura

17.

Page 78: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

78

Figura 16 - Tela de abertura do módulo cliente

Figura 17 - Tela principal do módulo cliente

Page 79: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

79

Figura 18 - Tela de login do módulo cliente

Tendo efetuado o login com sucesso, o sistema exibirá uma mensagem de login efetuado com

sucesso e retornará para a tela principal. O usuário então deverá acessar a opção enviar

mensagem para que ele possa informar os endereços de destino, assunto, editar a mensagem e

caso seja de seu desejo, selecionar os arquivos a serem anexados à mensagem. A figura 19

mostra a tela de envio de mensagens e as opções de menu disponíveis para enviar, editar e

anexar arquivo à mensagem.

Se selecionada a opção anexar arquivos, o servidor então listará primeiramente o diretório

configurado como diretório raiz do usuário, e a partir daí ele poderá navegar por todos os seus

subdiretórios. A figura 20 mostra o indicador de progresso do processo de listagem de

diretórios.

Ao finalizar a consulta ao conteúdo do diretório do usuário, seu conteúdo é exibido como

mostra a figura 21, onde os diretórios são representados por seus nomes e a figura de uma

pasta. Já os arquivos são representados por seus nomes, data da última modificação e o

tamanho em bytes. Após a seleção dos arquivos o usuário deve selecionar o comando voltar

para retornar a tela de envio de mensagens e por fim realizar o envio da mensagem, acessando

o comando menu, opção enviar mensagem.

Page 80: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

80

Figura 19 - Tela de envio de mensagens

Figura 20 - Tela de progresso de ações no servidor

Page 81: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

81

Figura 21 - Listagem do conteúdo de um diretório

4.3 MODELAGEM DO SISTEMA

O sistema foi modelado usando UML com o apoio da ferramenta Visual Paradigm for UML

5.0 e foram gerados os diagramas de caso de uso, diagramas de classe e diagramas de

seqüência.

4.3.1 Requisitos funcionais e não funcionais

A tabela 12 apresenta os requisitos funcionais do sistema.

Tabela 12 - Requisitos funcionais

Identificador Função Descrição Casos de uso

RF 001 Autenticação de usuários

Realizar login do usuário no sistema

permitindo assim acesso apenas às suas

configurações, oferecendo segurança e

privacidade aos usuários.

USC 001

RF 002 Listar e acessar diretórios Listar o diretório raiz do usuário e

permitir acessar e listar seus subdiretórios USC 002

Page 82: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

82

RF 003 Envio de e-mail

Compor e enviar mensagens de correio

eletrônico, permitindo a multiseleção de

arquivos para serem anexados às

mensagens.

USC 002

USC 003

A tabela 13 apresenta os requisitos não funcionais do sistema.

Tabela 13 - Requisitos não funcionais

Identificação Descrição

RNF 001 Módulo cliente deverá ser executado em um telefone celular

RNF 002 Módulo cliente deverá ser implementado utilizando tecnologia J2ME

4.3.2 Diagramas UML módulo servidor

4.3.2.1 Diagramas de casos de uso

A seguir são apresentados os diagramas de caso de uso do módulo servidor e seus respectivos

detalhamentos.

Figura 22 – Diagrama de caso de uso (USC 001 – Valida login)

Tabela 14 - Detalhamento do caso de uso USC 001

Nome do caso de

uso Valida login

Caso de uso geral

Ator principal Aplicação cliente

Atores secundários

Resumo Autentica o usuário por meio do recebimento do ID do usuário e sua respectiva senha.

Page 83: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

83

(RF 001).

Pré-condições

Pós-condições Usuário logado

Ações do ator Ações do sistema

1. Envia usuário e senha

2. Valida usuário e senha

3. Registra usuário na sessão Fluxo base

4. Envia para a aplicação cliente a

mensagem de login efetuado com sucesso

Fluxo de exceção 1. Se ocorrer uma exceção, enviar

mensagem de erro.

Figura 23 – Diagrama de caso de uso (USC 002 – Lista diretório do usuário)

Tabela 15 - Detalhamento do caso de uso USC 0002

Nome do caso de

uso Lista diretório do usuário

Caso de uso geral

Ator principal Aplicação cliente

Atores secundários

Resumo

Lista os diretórios pertencentes ao usuário logado, para que o mesmo possa selecionar

os arquivos que deseja enviar anexados à mensagem de correio eletrônico. (RF 002,

RF 003).

Pré-condições Usuário logado

Pós-condições Anexos selecionados para envio

Ações do ator Ações do sistema

1. Solicita a listagem do diretório

desejado

2. Verifica se o usuário está logado

Fluxo base

3. lista o diretório desejado

Fluxo de exceção 1. Se ocorrer uma exceção, enviar

Page 84: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

84

mensagem de erro.

Figura 24 - Diagrama de caso de uso (USC 003 - Envia mensagem de correio eletrônico)

Tabela 16 - Detalhamento do caso de uso USC 003

Nome do caso de

uso Envia mensagem de correio eletrônico

Caso de uso geral

Ator principal Aplicação cliente

Atores secundários

Resumo Envia mensagem de correio eletrônico contendo ou não anexos.

Pré-condições Usuário logado

Pós-condições Mensagem de correio eletrônico enviada

Ações do ator Ações do sistema

1. Solicita o envio da mensagem de

correio eletrônico passando os

endereços dos destinatários, assunto,

corpo da mensagem e anexos caso

tenha.

2. Se for solicitado o envio com anexo,

anexa os arquivos selecionados

3. Envia mensagem de correio eletrônico

Fluxo base

4. Envia para a aplicação cliente a

mensagem de e-mail enviado com sucesso

Fluxo de exceção 1. Se ocorrer uma exceção, enviar

mensagem de erro.

Page 85: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

85

4.3.2.2 Diagramas de classes

Os diagramas de classe foram divididos por pacote de acordo com as funcionalidades das

classes e são mostrados a seguir.

Figura 25 - Diagrama de classes do pacote controle

Figura 26 - Diagrama de classe do pacote bean

Page 86: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

86

Figura 27 - Diagrama de classes do pacote entidade

4.3.2.3 Diagramas de seqüência

Figura 28 - Diagrama de seqüência da validação de login

Page 87: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

87

Figura 29 - Diagrama de seqüência da listagem de diretórios do usuário

Figura 30 - Diagrama de seqüência do envio de mensagem

Page 88: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

88

4.3.3 Diagramas UML módulo cliente

4.3.3.1 Diagrama de casos de uso

Figura 31 - Diagrama de casos de uso módulo cliente

Tabela 17- Detalhamento do caso de uso efetua login

Nome do caso de

uso Efetua login

Caso de uso geral

Ator principal Usuário

Atores secundários Aplicação servidora

Resumo Efetua o login do usuário no sistema.

Pré-condições

Pós-condições Usuário logado

Ações do ator Ações do sistema

1. Usuário informa ID e a senha e

solicita a realização de login

2. Se conecta na aplicação servidora e envia

o pedido de login, usuário e senha.

3. Aplicação servidora valida o login

4. Aplicação servidora envia para a

aplicação cliente a mensagem de login

bem sucedido.

Fluxo base

5. Exibe mensagem de login bem sucedido

Fluxo de exceção 1. Envia para a aplicação cliente a

mensagem do erro ocorrido

Page 89: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

89

2. Se ocorrer interrupção da conexão com a

rede, exibe mensagem de erro.

Tabela 18 - Detalhamento do caso de uso navega no diretório e seleciona arquivos

Nome do caso de

uso Navega no diretório e seleciona arquivos

Caso de uso geral

Ator principal Usuário

Atores secundários Aplicação servidora

Resumo Lista o conteúdo do diretório remoto do usuário e permite a seleção dos arquivos a

serem anexados às mensagens de correio eletrônico

Pré-condições Usuário logado

Pós-condições Anexos selecionados

Ações do ator Ações do sistema

1. Envia para a aplicação servidora o

comando para listar o diretório raiz do

usuário.

2. Aplicação servidora lista o diretório

desejado.

3. Exibe o conteúdo do diretório escolhido

4. Usuário escolhe o arquivo ou

diretório desejado

5. Se for selecionado um diretório repete-se

o passo de 1 só que para o diretório

selecionado e depois os passos 2 a 4. Se for

um arquivo, seu nome é armazenado na

hashtable de anexos.

Fluxo base

6. Usuário seleciona o comando voltar

1. Envia para a aplicação cliente a

mensagem do erro ocorrido

Fluxo de exceção

2. Se ocorrer interrupção da conexão com a

rede, exibe mensagem de erro.

Tabela 19 - Detalhamento do caso de uso envia mensagem

Nome do caso de

uso Envia mensagem

Page 90: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

90

Caso de uso geral

Ator principal Usuário

Atores secundários Aplicação servidora

Resumo Envia mensagem de correio eletrônico com ou sem anexos.

Pré-condições Usuário logado

Pós-condições Mensagem enviada

Ações do ator Ações do sistema

1. Usuário solicita o envio da

mensagem

2. Envia para a aplicação servidora o

comando e os parâmetros para o envio da

mensagem de correio eletrônico

Fluxo base

3. Envia a mensagem de correio

eletrônico.

1. Envia para a aplicação cliente a

mensagem do erro ocorrido

Fluxo exceção

2. Se ocorrer interrupção da conexão com a

rede, exibe mensagem de erro.

4.3.3.2 Diagramas de classes

Da mesma forma que no módulo servidor, os diagramas de classes foram organizados em

pacotes de acordo com a funcionalidade das classes. A implementação dos listeners de

comando foi modelada utilizando o conceito de classe interna, uma vez que suas

implementações são de uso específico para a captura e execução de um evento. A classe

principal e o controlador de conexão HTTP implementam a interface Runnable.

Page 91: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

91

Figura 32- Diagrama de classes do pacote controle do módulo cliente

Figura 33 - Diagrama de classes do pacote visao do módulo cliente

Page 92: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

92

Figura 34 - Diagrama de classes do pacote entidade do módulo cliente

Figura 35 - Diagrama de classes do pacote bean do módulo cliente

Foi desenvolvida para uso nesse protótipo uma biblioteca de classes especializadas em

conexões HTTP e manipulação de registro RMS, as quais poderão ser reutilizadas em quais

desenvolvimentos em J2ME que necessitem de tais funcionalidades. O diagrama de classes

dessa biblioteca é apresentado a seguir.

Figura 36 - Diagrama de classes da biblioteca mobileLib

Page 93: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

93

4.3.3.3 Diagramas de seqüência

Figura 37 - Diagrama de seqüência para efetuar login do módulo cliente

Figura 38 - Diagrama de seqüência da listagem e seleção de arquivos do módulo cliente

Page 94: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

94

Figura 39 - Diagrama de seqüência envio da mensagem de correio eletrônico do módulo cliente

4.4 MODELO DE CICLO DE VIDA

Foi utilizado o modelo de ciclo de vida incremental em função das vantagens oferecidas por

esse modelo, como por exemplo:

• Identificação de risco é adiantada (MASSONI, 1999);

• Integração contínua facilitando os testes e aprendizado (MASSONI, 1999);

• Preparação do sistema para os requisitos que mudam; (MASSONI, 1999).

4.5 CONSIDERAÇÕES FINAIS

Neste capítulo foi possível apresentar o protótipo de um serviço de e-mail para telefones

celulares, que permite além do envio de mensagens de texto, anexar às mensagens quaisquer

tipos de arquivos que estejam em um servidor de arquivos ou numa estação de trabalho em

uma rede fixa. Este tipo de serviço pode proporcionar aos usuários da telefonia móvel um

serviço diferenciado de correio eletrônico, que até o momento ainda não é oferecido pelas

operadoras de telefonia móvel. No Brasil, a operadora VIVO possui um serviço também

chamado de mobile mail, porém apenas é permitido acessar contas de e-mail pelo celular.

Page 95: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

95

Isso comprova que muitos outros tipos de serviços ainda podem ser oferecidos a esse grande

mercado, gerando assim negócios lucrativos para os usuários, desenvolvedores e operadoras

de telefonia móvel. É preciso apenas um pouco de criatividade para lidar com as limitações

dos dispositivos e oferecer soluções que tornem os telefones celulares ferramentas para

soluções de voz e dados.

Page 96: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

96

5 CONCLUSÃO E TRABALHOS FUTUROS

5.1 CONCLUSÃO

Este trabalho apresentou como objetivo geral a utilização da tecnologia J2ME para acesso ao

serviço de correio eletrônico. Este objetivo foi atingido com a construção de um sistema

composto por dois módulos, um módulo cliente usando realmente J2ME, mas necessitou da

criação de um módulo servidor implementado usando a tecnologia J2EE para poder prover

acesso aos arquivos remotos dos usuários e enviar as mensagens de correio eletrônico

anexando esses arquivos.

Com esse sistema, os usuários podem fazer uso de um serviço de e-mail que lhe permite

enviar mensagens de texto, acrescentar quaisquer tipos de anexos suportados pelo padrão

MIME e desfrutar da mobilidade oferecida pela rede celular. Com isso consegui-se alcançar o

primeiro objetivo específico, que era explorar a mobilidade oferecida pelos celulares, fazendo

uso dos recursos disponíveis nesses dispositivos e na tecnologia J2ME.

Para a construção do módulo cliente, foi necessário um aprendizado da API do J2ME. Isto foi

feito por meio de uma revisão bibliográfica, cuja parte dela foi apresentada no capítulo 2

desse trabalho. Além do que foi apresentado no capítulo 2, fez-se necessário o estudo de

alguns exemplos de implementações em J2ME, para entender como são construídas as

aplicações Midlets e as interfaces gráficas.

O desenvolvimento de uma aplicação J2ME que permitisse acessar um servidor e solicitar a

listagem do conteúdo de um diretório, selecionar um ou mais arquivos para serem anexados à

mensagem de correio eletrônico e de uma aplicação Java ou Servlet/ JSP para atender as

requisições da aplicação J2ME foram alcançados conforme o que foi exposto no capítulo 4.

Portanto, conclui-se que este trabalho teve seus objetivos alcançados.

Page 97: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

97

O protótipo desenvolvido neste trabalho mostrou-se com potencial comercial, porém é

necessário acrescentar outras funcionalidades ao sistema, como por exemplo, poder não

apenas enviar mensagens, mas acessar sua caixa de entrada de correio, utilizar o protocolo

HTTPS para torná-lo mais seguro, criação de catálogos de endereço, busca de contatos no

catálogo, etc. Outro passo importante é disponibilizar o acesso ao módulo servidor na

Internet. Esse acesso pode ser oferecido pela própria operadora de telefonia móvel, destinando

um servidor na sua rede de dados para servir a aplicação e os arquivos, ou por uma empresa

que deseja ter um serviço de correio eletrônico móvel (m-mail) na sua empresa e disponibiliza

acesso ao servidor de aplicação e arquivos na Internet ou na Intranet utilizando VPN. A

solução partindo da operadora, poderá ter uma abrangência maior, pois todos os clientes que

desejarem ter acesso a esse serviço poderão tê-lo, desde que seus telefones celulares suportem

aplicações Java.

Pode-se concluir também a partir dos dados apresentados neste trabalho, que o mercado de

telefonia móvel é muito promissor por seu tamanho e também pela forte tendência da

mobilidade. Novos serviços podem ser oferecidos a esse mercado, sejam soluções

corporativas ou pessoais, podendo gerar bons negócios para os desenvolvedores, usuários e

operadoras de telefonia móvel. Os desenvolvedores precisam avaliar as tecnologias existentes

para desenvolvimento de aplicações móveis e escolher a que lhe parecer mais adequada. A

criatividade também será de grande importância para os desenvolvedores poderem oferecer

serviços atrativos aos usuários e às operadoras.

Com a evolução tecnológica das redes móveis, dos dispositivos e das plataformas de

desenvolvimento de software para dispositivos móveis, a tendência é que haja mais recursos

disponíveis em todas essas áreas de forma a proporcionar soluções ainda mais sofisticadas e

com alto valor agregado para os usuários dessas soluções.

As principais dificuldades encontradas no desenvolvimento do protótipo foram o aprendizado

do J2ME, as limitações de interface gráfica apresentada pelos dispositivos e falta de alguns

recursos que não estão presentes na API do J2ME e que tiveram que ser implementados no

protótipo, como por exemplo, a classe StringTokenizer e o método replace da classe String.

Mas essas dificuldades foram facilmente contornadas com o estudo da linguagem, utilização

de ferramentas integradas para o desenvolvimento de aplicações J2ME, criatividade para lidar

com a limitação da interface gráfica e com a construção de algoritmos para suprir a ausência

de funcionalidades na API do J2ME, que apesar de reduzida se comparada com a API da

Page 98: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

98

versão J2SE, mostra-se muito poderosa se comparada com outras tecnologias para

desenvolvimento de aplicações para dispositivos móveis.

5.2 TRABALHOS FUTUROS

A partir do que foi desenvolvido neste trabalho, pode-se sugerir como trabalhos futuros as

seguintes idéias:

• Tornar a aplicação um serviço de correio eletrônico completo, com envio e

recebimento de mensagens, catálogos de endereços, modelos de mensagens, etc;

• Outros serviços de rede para celulares, como por exemplo, gerenciadores de arquivos,

clientes FTP, telnet, mensagens instantâneas;

• Visualizadores de arquivos remotos (.doc, .xls, .pdf, .zip);

• Serviços bancários, controles de estoque, controle de pedidos, jogos multi player,

agendas sofisticadas.

Page 99: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

99

6 REFERÊNCIAS BIBLIOGRÁFICAS

AGÊNCIA NACIONAL DE TELECOMUNICAÇÕES, Anatel. Dados de acessos móveis em operação e densidade, por unidade da federação, do serviço móvel pessoal. Distrito Federal, 2005a. Disponível em: <http://www.anatel.gov.br/Tools/frame.asp?link=/comunicacao_movel/smc/smc_smp_dados_por_uf.pdf> Acesso em: 26 maio 2005.

______. Participação do mercado no serviço móvel pessoal. Distrito Federal, 2005b. Disponível em: <http://www.anatel.gov.br/Tools/frame.asp?link=/comunicacao_movel/smp/participacao_smp_mercado.pdf> Acesso em: 26 maio 2005.

AREHART, Charles et al. Professional WAP. Tradutor: João Eduardo Nóbrega Tortello. São Paulo: Makron Books, 2001. 774p. ISBN 85-346-1313-3.

BORENSTEIN, N.; FREED, N. RFC 1341: MIME - multipurpose internet mail extensions. [S.I], 1992. Disponível em: <http://www.ietf.org/rfc/rfc1341.txt> Acesso em: 10 junho 2005.

______. RFC 1521: MIME - multipurpose internet mail extensions - part one. [S.I], 1993. Disponível em: <http://www.ietf.org/rfc/rfc1521.txt> Acesso em: 10 junho 2005.

______. RFC 2045: MIME - multipurpose internet mail extensions - part one. [S.I], 1996. Disponível em: <http://www.ietf.org/rfc/rfc2045.txt> Acesso em: 10 junho 2005.

CROCKER, David H. RFC 822: standard for the format of ARPA internet text messages. [S.I], 1982. Disponível em: <http://www.ietf.org/rfc/rfc0822.txt> Acesso em: 10 junho 2005.

DEITEL, Harvey M; DEITEL, Paul J. JAVA: Como programar. 6º ed. Tradutor: Edson Furmankiewicz. São Paulo: Person Education do Brasil, 2005. 1110p. ISBN 85-7605-019-6.

DORNAN, Andy. Wireless communication: o guia essencial de comunicação sem fio. Tradutor: Fábio Freitas. Rio de Janeiro: Campus, 2001. 304p. ISBN 85-352-0749-X.

FEIT, Sidnie. TCP/IP: architecture, protocols, and implementation. Singapura: McGraw-Hill Inc., 1993. 466p. ISBN 0-07-020346-6.

GASPARINI, Anteu F. L.; BARRELA, Francisco E. TCP/IP: solução para conectividade. 3.ed. São Paulo: Érica, 1993. 309p. ISBN 85-7194-183-1.

Page 100: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

100

HADDAD, Renato. Entendendo aplicações móveis no .NET. [S.I], 2005. Disponível em: <http://www.microsoft.com/brasil/msdn/tecnologias/movel/mobilidade_entendendo.aspx> Acesso em: 05 junho 2005.

KALAKOTA, Ravi; ROBINSON, Marcia. M-business: tecnologia móvel e estratégia de negócios. Tradutor:Maria Adelaide Carpigiani. Porto Alegre: Bookman, 2002. 249p. ISBN 85-7307-975-4.

KLENSIN, J. RFC 2821: simple mail transfer protocol. [S.I], 2001. Disponível em: <http://www.ietf.org/rfc/rfc2821.txt> Acesso em: 10 junho 2005.

KLENSIN, J. et al. RFC 1869: SMTP Service Extensions. [S.I], 1995. Disponível em: <http://www.ietf.org/rfc/rfc1869.txt> Acesso em: 10 junho 2005.

MASSONI, Tiago L. Introdução ao processo unificado de desenvolvimento de software. [S.I], 1999. Disponível em <http://www.cin.ufpe.br/~phmb/RUP/MaterialDeEnsino/VisaoGeralDoCurso.ppt> Acesso em: 29/10/2005.

MOORE, K. RFC 1522: MIME - multipurpose internet mail extensions - part two. [S.I], 1993. Disponível em: <http://www.ietf.org/rfc/rfc1522.txt> Acesso em: 10 junho 2005.

MUCHOW, John W. Core J2ME: Tecnologia & MIDP. Tradutor: João Eduardo Nóbrega Tortello. São Paulo: Pearson Makron Books, 2004. 588p. ISBN 85-346-1522-5.

PARTRIDGE, Craig. RFC 974: mail routing and the domain system. [S.I], 1986. Disponível em: <http://www.ietf.org/rfc/rfc0974.txt> Acesso em: 10 junho 2005.

POSTEL, Jonathan B. RFC 821: simple mail transfer protocol. [S.I], 1982. Disponível em: <http://www.ietf.org/rfc/rfc0821.txt> Acesso em: 10 junho 2005.

______. RFC 1590: media type registration procedure. [S.I], 1994. Disponível em: <http://www.ietf.org/rfc/rfc1590.txt> Acesso em: 10 junho 2005.

QUALCOMM. A solução BREW. [S.I], 2005a. Disponível em: <http://brew.qualcomm.com/brew/pt/about/brew_solution.html> Acesso em: 05 junho 2005.

______. Ficção ou realidade?. [S.I], 2005b. Disponível em: <http://brew.qualcomm.com/brew/pt/about/fact_fiction.html> Acesso em: 05 junho 2005.

______. Maiores lucros na movimentação de dados sem fio. [S.I], 2002. Disponível em: <http://brew.qualcomm.com/brew/pt/img/about/pdf/brew_white_paper.pdf> Acesso em: 04 junho 2005.

______. O BREW hoje. [S.I], jun. 2005. Disponível em: <http://brew.qualcomm.com/brew/pt/about/brew_today.html> Acesso em: 05 junho 2005.

RESNICK, P. RFC 2822: internet message format. [S.I], 2001. Disponível em: <http://www.ietf.org/rfc/rfc2822.txt> Acesso em: 10 junho 2005.

Page 101: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

101

SHARMA, Chetan. Aplicações comerciais da Internet sem fio. Tradutor: Mário Moro Fecchio. São Paulo: Makron Books, 2001. 285p. ISBN 85-346-1342-7

SUPERWABA. O que é o SuperWaba?. [S.I], 2005a. Disponível em: <http://www.superwaba.com.br/pt/overview.asp> Acesso em: 05 junho 2005.

SUPERWABA. Prospecto do SuperWaba. [S.I], 2005b. Disponível em: <http://www.superwaba.com.br/etc/SuperWabaFolderEnV2.pdf> Acesso em: 05 junho 2005.

TANENBAUM, Andrew S. Rede de computadores. 4.ed. Tradutor: Vandenberg D. de Souza. Rio de Janeiro: Campus, 2003. 945p. ISBN 85-352-1185-3.

VIVO. O que é o VIVODOWNLOADS?. [S.I], 2005. Disponível em: <http://www.vivo.com.br/vivodownloads/oque.html> Acesso em: 05 junho 2005.

Page 102: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

102

ANEXOS

Anexo A – Código fonte módulo servidor

Anexo A.1 – Pacote bean

package bean; import java.io.File; /** * Java Bean para acessar diretórios e arquivos do usuário. */ public class BeanAcessoArquivo extends java.lang.Object { /** * Diretorio home do usuário */ private String homeDir = null; /** * Diretório atual. */ private String dirAtual = null; public BeanAcessoArquivo(String homeDir) { this.setDirAtual(homeDir); this.setHomeDir(homeDir); } public String getDirAtual() { return this.dirAtual; } public void setDirAtual(final String dirAtual) { this.dirAtual = dirAtual; } public String getHomeDir() { return this.homeDir; } public void setHomeDir(final String homeDir) { this.homeDir = homeDir; } public File[] listaDiretorio() throws Exception { File[] res = null; File f = new File(this.getDirAtual()); res = f.listFiles();

Page 103: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

103

return res; } public boolean acessaDiretorio(String diretorio) throws Exception { boolean res = false; File f = new File(diretorio); res = f.exists(); if(res) this.setDirAtual(diretorio); return res; } } package bean; import entidade.MensagemCorreio; import java.io.IOException; import netutility.mail.Email; /** * Java Bean responsável pelo envio da mensagem de correio eletrônico. */ public class BeanEmail extends java.lang.Object { /** * Atributo é um objeto da classe especializada pelo envio da mensagem de correio. */ private Email email = new Email(); private String servidorSMTP = null; private String usuarioSMTP = null; private String senhaSMTP = null; public BeanEmail(String servidorSMTP) { } public BeanEmail() { } /** * Envia mensagem de correio eletrônico. */ public String enviaEmail(MensagemCorreio mensagem) throws Exception { String res = null; this.email.setSenha(this.getSenhaSMTP()); this.email.setUsuario(this.getUsuarioSMTP()); this.email.setServidorSMTP(this.getServidorSMTP()); if(email.sendMail(mensagem.getRemetente(), mensagem.getDestinatarios(), mensagem.getDestinatariosCC(), mensagem.getDestinatariosBCC(), mensagem.getAssunto(), mensagem.getCorpoMensagem(), mensagem.getAnexos())) res = new String("Envio realizado com sucesso!"); else throw new IOException(); return res; } public String getServidorSMTP() { return this.servidorSMTP; } public void setServidorSMTP(final String servidorSMTP) { this.servidorSMTP = servidorSMTP;

Page 104: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

104

} public String getSenhaSMTP() { return this.senhaSMTP; } public void setSenhaSMTP(final String senhaSMTP) { this.senhaSMTP = senhaSMTP; } public String getUsuarioSMTP() { return this.usuarioSMTP; } public void setUsuarioSMTP(final String usuarioSMTP) { this.usuarioSMTP = usuarioSMTP; } } package bean; import entidade.Usuario; import java.io.File; import java.io.FileInputStream; import java.util.Properties; /** * Java Bean responsável pela validação de login. */ public class BeanLogin extends java.lang.Object { private String arquivoProfile = null; public BeanLogin(String arquivo){ this.arquivoProfile = arquivo; } public Usuario validaLogin(String usuario, String senha) throws Exception{ Usuario res = null; File f = new File(arquivoProfile); FileInputStream in = new FileInputStream(f); Properties profile = new Properties(); profile.load(in); if(profile.getProperty("senha").equals(senha)) { res = new Usuario(); res.setDiretorioRaiz(profile.getProperty("home_dir", System.getProperty("user.dir"))); res.setId(usuario); res.setSenha(senha); res.setEnderecoEmail(profile.getProperty("endereco_email", "[email protected]")); } return res; } }

Anexo A.2 – Pacote controle

/* * Controlador.java * * Created on 24 de Setembro de 2005, 02:09 */

Page 105: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

105

package controle; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; /** * * @author Rodrigo * @version */ public abstract class Controlador extends HttpServlet implements ControladorMobileEmail { // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** Handles the HTTP <code>GET</code> method. * @param request servlet request * @param response servlet response */ protected abstract void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException; /** Handles the HTTP <code>POST</code> method. * @param request servlet request * @param response servlet response */ protected abstract void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException; // </editor-fold> public abstract void processaRequisicao(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException; protected void enviaResposta(HttpServletRequest req, HttpServletResponse resp,String resposta) throws ServletException, IOException { resp.setContentType("text/plain"); PrintWriter out = resp.getWriter(); try { out.print(resposta); } finally { out.close(); } } } package controle; import bean.BeanAcessoArquivo; import controle.ControladorMobileEmail; import entidade.Usuario; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import javax.servlet.*; import javax.servlet.http.*; public class ControladorArquivo extends Controlador { /** Processa requisições do método POST*/ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException { this.processaRequisicao(req, resp); } /** Processa requisições do método GET */ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException {

Page 106: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

106

this.processaRequisicao(req, resp); } /** Processa requisições */ public void processaRequisicao(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException { String diretorio = req.getParameter("diretorio"); Usuario usuario = (Usuario)req.getSession().getAttribute("usuario"); String res = null; if(usuario == null) res = new String("ERRO|Usuario não está logado!"); else { if(diretorio == null) diretorio = usuario.getDiretorioRaiz(); try { res = new String("OK|" +System.getProperty("file.separator", "\\") + "|" + diretorio + "|" +this.navegaDiretorio(req,resp,diretorio)); } catch(Exception e) { this.log("Erro ao processar requisição no controlador de arquivo: " + e.getMessage(),e); res = new String("ERRO|Erro ao navegar no diretório do usuário: " + e.getMessage()); } } this.enviaResposta(req, resp, res); } private String navegaDiretorio(HttpServletRequest req, HttpServletResponse resp,String diretorio) throws Exception { BeanAcessoArquivo bean = new BeanAcessoArquivo(diretorio); Usuario usuario = (Usuario)req.getSession().getAttribute("usuario"); if(usuario != null) bean.setHomeDir(usuario.getDiretorioRaiz()); String res = null; if(bean.acessaDiretorio(diretorio)) { File[] listaDeArquivos = bean.listaDiretorio(); if(listaDeArquivos == null) throw new IOException(); else if(usuario.getDiretorioRaiz().equals(bean.getDirAtual())) res = new String(""); else res = new String(".#..#|"); res += this.formataVisualizacaoArquivos(listaDeArquivos); } else throw new IOException(); return res; } private void selecionaArquivos(java.lang.String[] arquivos) throws Exception { } private String formataVisualizacaoArquivos(java.io.File[] arquivos) { StringBuffer res = new StringBuffer(); for(int i=0; i < arquivos.length; i++) { if(arquivos[i].isDirectory()) res.append(".#"); else res.append("a#"); res.append(arquivos[i].getName() + "#"); if(arquivos[i].isFile()) { res.append(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date(arquivos[i].lastModified())) + "#"); res.append(arquivos[i].length() + " bytes#"); } if(i < arquivos.length - 1) res.append("|"); } return res.toString();

Page 107: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

107

} } package controle; import bean.BeanLogin; import controle.ControladorMobileEmail; import entidade.Usuario; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.http.HttpServlet; /** * Controlador responsável pela validação do login e registro do usuário na sessão. */ public class ControladorLogin extends Controlador { /** Processa requisições do método POST*/ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException { this.processaRequisicao(req, resp); } /** Processa requisições do método GET */ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException { this.processaRequisicao(req, resp); } /** Processa requisições */ public void processaRequisicao(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException { String usuario = req.getParameter("usuario"); String senha = req.getParameter("senha"); String resposta = null; if(usuario == null || senha == null) resposta = new String("ERRO|Usuário e/ou senha nulos!"); else { Usuario u = this.validaLogin(usuario, senha); if(u == null) resposta = new String("ERRO|Usuário e/ou senha inválidos!"); else { if(req.getSession().isNew()) { String idSession = req.getSession().getId(); resp.setHeader("ID-Session", idSession); } req.getSession().setAttribute("usuario", u); resposta = new String("OK|Login efetuado com sucesso!"); } } this.enviaResposta(req, resp, resposta); } private synchronized Usuario validaLogin(String usuario, String senha) { Usuario res = null; String url = null; try { String arquivo = new String(this.getServletConfig().getInitParameter("profile_dir") + usuario + ".properties"); BeanLogin beanLogin = new BeanLogin(arquivo); res = beanLogin.validaLogin(usuario, senha); } catch(Exception e) { this.log("Erro ao validar login do usuário: " + e.getMessage(),e); res = null; } return res; } }

Page 108: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

108

package controle; import bean.BeanEmail; import entidade.MensagemCorreio; import entidade.Usuario; import javax.servlet.*; import javax.servlet.http.*; public class ControladorMensagem extends Controlador { private String servidorSMTP = null; /** Processa requisições do método POST*/ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException { this.processaRequisicao(req, resp); } /** Processa requisições do método GET */ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException { this.processaRequisicao(req, resp); } /** Processa requisições */ public void processaRequisicao(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException { Usuario usuario = (Usuario)req.getSession().getAttribute("usuario"); String res = null; this.servidorSMTP = this.getInitParameter("servidor_SMTP"); if(usuario == null) res = new String("ERRO|Usuario não está logado!"); else { try { res = "OK|" + this.enviaMensagem(usuario, this.montaMensagem(req,resp)); } catch(Exception e) { res = new String("ERRO|Erro ao enviar a mensagem de correio: " + e.getMessage()); } } this.enviaResposta(req, resp, res); } /** Recupera os parametros enviados pela aplicação cliente e monta a mensagem a ser enviada. * Se for solicitada pela aplicação cliente o envio de mensagem com anexo, acrescenta a mensagem * o caminho dos arquivos a serem anexados no momento do envio. */ private MensagemCorreio montaMensagem(HttpServletRequest req, HttpServletResponse resp) { MensagemCorreio res = new MensagemCorreio(); try { String remetente = req.getParameter("remetente"); String destinatarios = req.getParameter("destinatarios"); String assunto = req.getParameter("assunto"); String corpoMensagem = req.getParameter("corpoMensagem"); String destinatariosCC = req.getParameter("destinatariosCC"); String destinatariosBCC = req.getParameter("destinatariosBCC"); String[] anexos = req.getParameterValues("anexo"); res.setAnexos(anexos); res.setAssunto(assunto); res.setCorpoMensagem(corpoMensagem); res.setDestinatarios(destinatarios); res.setDestinatariosBCC(destinatariosBCC); res.setDestinatariosCC(destinatariosCC); res.setRemetente(remetente); } catch(Exception e) { this.log("Erro ao montar mensagem: " + e.getMessage(), e); res = null;

Page 109: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

109

} return res; } /** Solicita o envio da mensagem ao JavaBean especilizado em envio de emails. */ private String enviaMensagem(Usuario usuario, MensagemCorreio mensagem) throws Exception{ String res = null; BeanEmail bean = new BeanEmail(); bean.setSenhaSMTP(usuario.getSenha()); bean.setUsuarioSMTP(usuario.getId()); bean.setServidorSMTP(this.servidorSMTP); res = bean.enviaEmail(mensagem); return res; } } package controle; import javax.servlet.*; import javax.servlet.http.*; public interface ControladorMobileEmail { /** * Interface para processamento das requisições feitas ao serviço de correio eletrônico móvel. */ public void processaRequisicao(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException; } package controle; import controle.ControladorMobileEmail; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.http.HttpServlet; /** * Atende a todas requisições e despacha para os controladores responsáveis pela execução da ação. */ public class ControladorPrincipal extends Controlador { /** Processa requisições do método POST*/ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException { this.processaRequisicao(req, resp); } /** Processa requisições do método GET */ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException { this.processaRequisicao(req, resp); } /** Processa requisições */ public void processaRequisicao(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException { String acao = req.getParameter("acao"); String url = null; if(acao == null) { url = new String("ERRO|Ação não definida!"); this.enviaResposta(req, resp, url); } else { if(acao.equals("login")) url = resp.encodeURL("/controladorLogin"); else if(acao.equals("listFolder"))

Page 110: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

110

url = resp.encodeURL("/controladorArquivo"); else if(acao.equals("sendMsg")) url = resp.encodeURL("/controladorMensagem"); RequestDispatcher rd = this.getServletContext().getRequestDispatcher(url); rd.forward(req, resp); } } }

Anexo A.3 – Pacote entidade

package entidade; /** * Classe que representa uma mensagem de correio eletrônico. */ public class MensagemCorreio extends java.lang.Object { /** * Assunto da mensagem. */ private String assunto = null; /** * Lista de destinatários. */ private String destinatarios = null; /** * Lista de destinatários cópia carbono. */ private String destinatariosCC = null; /** * Lista de destinatários cópia carbono oculta. */ private String destinatariosBCC = null; /** * Corpo da mensagem. */ private String corpoMensagem = null; /** * Lista de arquivos a serem anexados a mensagem. */ private String[] anexos = null; private String remetente = null; public String[] getAnexos() { return this.anexos; } public void setAnexos(final String[] anexos) { this.anexos = anexos; } public String getAssunto() { return this.assunto; } public void setAssunto(final String assunto) {

Page 111: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

111

this.assunto = assunto; } public String getCorpoMensagem() { return this.corpoMensagem; } public void setCorpoMensagem(final String corpoMensagem) { this.corpoMensagem = corpoMensagem; } public String getDestinatarios() { return this.destinatarios; } public void setDestinatarios(final String destinatarios) { this.destinatarios = destinatarios; } public String getDestinatariosBCC() { return this.destinatariosBCC; } public void setDestinatariosBCC(final String destinatariosBCC) { this.destinatariosBCC = destinatariosBCC; } public String getDestinatariosCC() { return this.destinatariosCC; } public void setDestinatariosCC(final String destinatariosCC) { this.destinatariosCC = destinatariosCC; } public String getRemetente() { return this.remetente; } public void setRemetente(final String remetente) { this.remetente = remetente; } } package entidade; /** * Classe que representa a entidade usuário. */ public class Usuario extends java.lang.Object { /** * Atributo que representa o ID do usuário */ private String id = null; /** * Senha do usuário. */ private String senha = null; /** * Diretorio raiz do usuário. */ private String diretorioRaiz = null; private String enderecoEmail = null;

Page 112: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

112

public String getDiretorioRaiz() { return this.diretorioRaiz; } public void setDiretorioRaiz(final String diretorioRaiz) { this.diretorioRaiz = diretorioRaiz; } public String getId() { return this.id; } public void setId(final String id) { this.id = id; } public String getSenha() { return this.senha; } public void setSenha(final String senha) { this.senha = senha; } public String getEnderecoEmail() { return enderecoEmail; } public void setEnderecoEmail(String enderecoEmail) { this.enderecoEmail = enderecoEmail; } }

Anexo B – Código fonte módulo cliente

Anexo B.1 – Pacote bean

/* * BeanConfiguracao.java * * Created on 23 de Setembro de 2005, 00:59 * * To change this template, choose Tools | Options and locate the template under * the Source Creation and Management node. Right-click the template and choose * Open. You can then make changes to the template in the Source Editor. */ package bean; import io.ReaderWriter; /** * * @author Rodrigo */ public abstract class BeanConfiguracao { /** Creates a new instance of BeanConfiguracao */ public BeanConfiguracao() {

Page 113: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

113

} public abstract void salvaConfiguracao(Object value) throws Exception; public abstract Object carregaConfiguracao() throws Exception; public void limpaConfiguracao(ReaderWriter rw) { try { rw.deleteRecordStore(); } catch(Exception e) { } } } /* * BeanConfiguracaoLogin.java * * Created on 23 de Setembro de 2005, 01:04 * * To change this template, choose Tools | Options and locate the template under * the Source Creation and Management node. Right-click the template and choose * Open. You can then make changes to the template in the Source Editor. */ package bean; import entidade.ConfiguracaoLogin; import io.ReaderWriter; /** * * @author Rodrigo */ public class BeanConfiguracaoLogin extends BeanConfiguracao { /** Creates a new instance of BeanConfiguracaoLogin */ public BeanConfiguracaoLogin() { } public void salvaConfiguracao(Object value) throws Exception { ReaderWriter rw = new ReaderWriter("configLogin"); this.limpaConfiguracao(rw); rw.openRecordStore(); try { rw.addRecord(((ConfiguracaoLogin)value).getServidor()); rw.addRecord(((ConfiguracaoLogin)value).getUsuario()); if(((ConfiguracaoLogin)value).isLembrarSenha()) { rw.addRecord("1"); rw.addRecord(((ConfiguracaoLogin)value).getSenha()); } } finally { rw.closeRecordStore(); } } public Object carregaConfiguracao() throws Exception { ConfiguracaoLogin res = new ConfiguracaoLogin(); ReaderWriter rw = new ReaderWriter("configLogin"); rw.openRecordStore(); try { String[] config = rw.readRecords(); if(config != null) { for(int i=0; i < config.length; i++) { switch(i) { case 0: res.setServidor(config[i]);break;

Page 114: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

114

case 1: res.setUsuario(config[i]);break; case 2: res.setLembrarSenha(true); break; case 3: res.setSenha(config[i]);break; } } } } finally { rw.closeRecordStore(); } return res; } }

Anexo B.2 – Pacote controle

/* * ControladorConfiguracao.java * * Created on 17 de Setembro de 2005, 16:23 * * To change this template, choose Tools | Options and locate the template under * the Source Creation and Management node. Right-click the template and choose * Open. You can then make changes to the template in the Source Editor. */ package controle; import bean.BeanConfiguracaoLogin; import entidade.ConfiguracaoLogin; /** * * @author Rodrigo */ public class ControladorConfiguracao { /** Creates a new instance of ControladorConfiguracao */ public ControladorConfiguracao() { } public static ConfiguracaoLogin carregaConfigLogin() throws Exception { BeanConfiguracaoLogin bean = new BeanConfiguracaoLogin(); return (ConfiguracaoLogin)bean.carregaConfiguracao(); } public static void salvaConfigLogin(ConfiguracaoLogin config) throws Exception{ BeanConfiguracaoLogin bean = new BeanConfiguracaoLogin(); bean.salvaConfiguracao(config); } } /* * ControladorServico.java * * Created on 24 de Setembro de 2005, 01:24 * * To change this template, choose Tools | Options and locate the template under * the Source Creation and Management node. Right-click the template and choose * Open. You can then make changes to the template in the Source Editor. */

Page 115: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

115

package controle; import controle.acao.Acao; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.Displayable; import visao.MobileMail; /** * * @author Rodrigo */ public class ControladorHTTP implements Runnable { private Acao acao = null; private Displayable display; private Displayable displayErro; /** Creates a new instance of ControladorServico */ public ControladorHTTP(Displayable display, Displayable displayErro) { this.display = display; this.displayErro = displayErro; } public void execute(Acao acao) throws Exception{ this.acao = acao; new Thread(this).start(); } public void run() { try { this.acao.execute(display, displayErro); }catch(Exception e) { MobileMail.getInstance().exibeMsg(AlertType.ERROR, displayErro,"MobileMail 1.0 - Erro", "Erro ao " + this.acao.getAcao() + ": " + e.getMessage()); } } }

Anexo B.3 – Pacote controle.acao

/* * Acao.java * * Created on 26 de Setembro de 2005, 23:26 * * To change this template, choose Tools | Options and locate the template under * the Source Creation and Management node. Right-click the template and choose * Open. You can then make changes to the template in the Source Editor. */ package controle.acao; import javax.microedition.lcdui.Displayable; /** * * @author Rodrigo */

Page 116: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

116

public abstract class Acao { private String acao = null; private String url = null; private String metodo = null; /** Creates a new instance of Acao */ public Acao() { } public abstract void execute(Displayable display, Displayable displayErro) throws Exception; public String getAcao() { return this.acao; } public void setAcao(final String acao) { this.acao = acao; } public String getMetodo() { return this.metodo; } public void setMetodo(final String metodo) { this.metodo = metodo; } public String getUrl() { return this.url; } public void setUrl(final String url) { this.url = url; } } /* * AcaoEnvioMensagem.java * * Created on 21 de Outubro de 2005, 22:14 * * To change this template, choose Tools | Options and locate the template under * the Source Creation and Management node. Right-click the template and choose * Open. You can then make changes to the template in the Source Editor. */ package controle.acao; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Gauge; import net.HttpConn; import visao.MobileMail; /** * * @author Rodrigo */ public class AcaoEnvioMensagem extends Acao{ private Displayable display = null; private Displayable displayErro = null;

Page 117: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

117

private Gauge gauge = null; /** Creates a new instance of AcaoEnvioMensagem */ public AcaoEnvioMensagem(String url, String metodo) { this.setMetodo(metodo); this.setUrl(url); this.setAcao("enviar mensagem"); } public void execute(javax.microedition.lcdui.Displayable display, javax.microedition.lcdui.Displayable displayErro) throws Exception { this.display = display; this.displayErro = displayErro; HttpConn http = new HttpConn(); String res = null; http.connect(this.getUrl()); try { MobileMail.getInstance().setFormAtual(MobileMail.getInstance().getFrmGauge()); MobileMail.getInstance().getFrmGauge().deleteAll(); gauge = new Gauge("Enviando mensagem ...", false, 100, 0); gauge.setLayout(Gauge.LAYOUT_CENTER | Gauge.LAYOUT_NEWLINE_AFTER); MobileMail.getInstance().getFrmGauge().append(gauge); gauge.setValue(20); Thread.sleep(100); gauge.setValue(40); Thread.sleep(100); gauge.setValue(60); Thread.sleep(100); res = http.send(this.getUrl(), this.getMetodo()); gauge.setValue(80); Thread.sleep(100); gauge.setValue(100); Thread.sleep(100); boolean sucesso = res.substring(0,res.indexOf("|")).equals("OK"); if(sucesso) MobileMail.getInstance().exibeMsg(AlertType.CONFIRMATION, display,"MobileMail 1.0 - Envio de mensagem", res.substring(res.indexOf("|") + 1)); else MobileMail.getInstance().exibeMsg(AlertType.ERROR, displayErro,"MobileMail 1.0 - Erro", "Erro ao " + this.getAcao() + ": " + res.substring(res.indexOf("|") + 1)); } finally { http.disconnect(); } } } /* * AcaoLogin.java * * Created on 26 de Setembro de 2005, 23:29 * * To change this template, choose Tools | Options and locate the template under * the Source Creation and Management node. Right-click the template and choose * Open. You can then make changes to the template in the Source Editor. */ package controle.acao; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Gauge; import net.HttpConn; import visao.MobileMail; /** *

Page 118: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

118

* @author Rodrigo */ public class AcaoLogin extends Acao{ /** Creates a new instance of AcaoLogin */ public AcaoLogin(String url, String metodo) { this.setMetodo(metodo); this.setUrl(url); this.setAcao("efetuar login"); } public void execute(Displayable display, Displayable displayErro) throws Exception { Gauge gauge = new Gauge("Efetuando login ...", false, 100, 0); gauge.setLayout(Gauge.LAYOUT_CENTER | Gauge.LAYOUT_NEWLINE_AFTER); MobileMail.getInstance().getFrmLogin().append(gauge); gauge.setValue(20); Thread.sleep(100); HttpConn http = new HttpConn(); gauge.setValue(50); Thread.sleep(100); String res = null; http.connect(this.getUrl()); gauge.setValue(80); Thread.sleep(100); try { res = http.send(this.getUrl(), this.getMetodo()); gauge.setValue(100); Thread.sleep(100); boolean sucesso = res.substring(0,res.indexOf("|")).equals("OK"); if(sucesso) { String idSession = ";jsessionid=" + http.getHeaderField("ID-Session"); MobileMail.getInstance().setIdSession(idSession); MobileMail.getInstance().exibeMsg(AlertType.CONFIRMATION, display,"MobileMail 1.0 - Login", res.substring(res.indexOf("|") + 1)); } else MobileMail.getInstance().exibeMsg(AlertType.ERROR, displayErro,"MobileMail 1.0 - Erro", "Erro ao " + this.getAcao() + ": " + res.substring(res.indexOf("|") + 1)); } finally { http.disconnect(); MobileMail.getInstance().getFrmLogin().delete(5); } } } /* * AcaoNavegacao.java * * Created on 29 de Setembro de 2005, 21:42 * * To change this template, choose Tools | Options and locate the template under * the Source Creation and Management node. Right-click the template and choose * Open. You can then make changes to the template in the Source Editor. */ package controle.acao; import java.util.Hashtable; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Gauge; import javax.microedition.lcdui.Image; import javax.microedition.lcdui.ImageItem; import javax.microedition.lcdui.Item; import javax.microedition.lcdui.ItemCommandListener;

Page 119: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

119

import javax.microedition.lcdui.List; import javax.microedition.lcdui.StringItem; import javax.microedition.lcdui.Ticker; import net.HttpConn; import visao.MobileMail; /** * * @author Rodrigo */ public class AcaoNavegacao extends Acao { private Command comando = new Command("Selecionar",Command.OK, 1); private Gauge gauge = null; private Displayable display = null; private Displayable displayErro = null; private String fileSeparator = null; /** Creates a new instance of AcaoNavegacao */ public AcaoNavegacao(String url, String metodo) { this.setUrl(url); this.setMetodo(metodo); this.setAcao("navegar em diretorio"); } public void execute(Displayable display, Displayable displayErro) throws Exception { this.display = display; this.displayErro = displayErro; MobileMail.getInstance().getFrmNavegacao().deleteAll(); HttpConn http = new HttpConn(); String res = null; http.connect(this.getUrl()); try { MobileMail.getInstance().setFormAtual(MobileMail.getInstance().getFrmGauge()); MobileMail.getInstance().getFrmGauge().deleteAll(); gauge = new Gauge("Obtendo lista de arquivos e diretórios ...", false, 100, 0); gauge.setLayout(Gauge.LAYOUT_CENTER | Gauge.LAYOUT_NEWLINE_AFTER); MobileMail.getInstance().getFrmGauge().append(gauge); gauge.setValue(20); Thread.sleep(100); res = http.send(this.getUrl(), this.getMetodo()); boolean sucesso = res.substring(0,res.indexOf("|")).equals("OK"); if(sucesso) { gauge.setValue(40); Thread.sleep(100); res = res.substring(res.indexOf("|") + 1); fileSeparator = res.substring(0,res.indexOf("|")); res = res.substring(res.indexOf("|") + 1); this.getArquivosListados(res); MobileMail.getInstance().setDiretorioAtual(res.substring(0, res.indexOf("|"))); res = res.substring(res.indexOf("|") + 1); Arquivo[] arquivos = this.getArquivosListados(res); gauge.setValue(100); Thread.sleep(100); MobileMail.getInstance().getFrmNavegacao().deleteAll(); MobileMail.getInstance().setFrmNavegacao(new List("MobileMail 1.0 - Anexar arquivos",List.IMPLICIT)); MobileMail.getInstance().getFrmNavegacao().setCommandListener(new ArquivoCommandListener()); MobileMail.getInstance().getFrmNavegacao().setTicker(new Ticker("Diretório atual: " + MobileMail.getInstance().getDiretorioAtual())); if(arquivos != null) for(int i=0; i < arquivos.length; i++) MobileMail.getInstance().getFrmNavegacao().append(arquivos[i].getNome(), arquivos[i].getIcone());

Page 120: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

120

MobileMail.getInstance().getFrmNavegacao().addCommand(MobileMail.getInstance().getComandoVoltarAnexar()); MobileMail.getInstance().getFrmNavegacao().addCommand(MobileMail.getInstance().getComandoListarAnexos()); MobileMail.getInstance().setFormAtual(MobileMail.getInstance().getFrmNavegacao()); } else MobileMail.getInstance().exibeMsg(AlertType.ERROR, displayErro,"MobileMail 1.0 - Erro", "Erro ao " + this.getAcao() + ": " + res.substring(res.indexOf("|") + 1)); } finally { http.disconnect(); } } private Arquivo[] getArquivosListados(String listagem) throws Exception { Arquivo[] res = null; Image img = Image.createImage("/imagens/folder.png"); Hashtable aux = new Hashtable(); long itemID = 0; while(listagem.indexOf("|") > -1) { String strItem = listagem.substring(0, listagem.indexOf("|")); boolean isDiretorio = false; Arquivo item = new Arquivo(); byte idAtributo = 1; while(strItem.indexOf("#") > -1) { String atributo = strItem.substring(0, strItem.indexOf("#")); strItem = strItem.substring(strItem.indexOf("#") + 1); switch(idAtributo) { case 1: { isDiretorio = atributo.equals("."); if(isDiretorio) item.setIcone(img); }break; case 2: item.setNome(atributo);break; default: item.setNome(item.getNome() + " - " + atributo);break; } idAtributo++; } listagem = listagem.substring(listagem.indexOf("|") + 1); aux.put(String.valueOf(itemID), item); itemID++; } res = new Arquivo[aux.size()]; gauge.setValue(60); Thread.sleep(100); for(int i=0; i < aux.size(); i++) res[i] = (Arquivo)aux.get(String.valueOf(i)); return res; } /** Classe interna que irá representar um arquivo ou diretório */ private class Arquivo { private String nome = null; private Image icone = null; public Arquivo() { } public Arquivo(String nome, Image icone) { this.icone = icone; this.nome = nome; } public Image getIcone() { return this.icone; }

Page 121: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

121

public void setIcone(final Image icone) { this.icone = icone; } public String getNome() { return this.nome; } public void setNome(final String nome) { this.nome = nome; } } /** Implementação do listener de evento utilizando inner class */ private class ArquivoCommandListener implements CommandListener { public ArquivoCommandListener() { } public void commandAction(Command command, Displayable displayable) { if(command == MobileMail.getInstance().getComandoVoltarAnexar()) MobileMail.getInstance().setFormAtual(MobileMail.getInstance().getFrmEnviaMsg()); else if(command == MobileMail.getInstance().getComandoListarAnexos()){ MobileMail.getInstance().setFormAtual(MobileMail.getInstance().getFrmAnexos()); MobileMail.getInstance().listaAnexos(MobileMail.getInstance().getFrmNavegacao()); } else { int id = MobileMail.getInstance().getFrmNavegacao().getSelectedIndex(); if(MobileMail.getInstance().getFrmNavegacao().getImage(id) == null || MobileMail.getInstance().getFrmNavegacao().getImage(id) == MobileMail.getInstance().getSmallConfirmIcon()) { String arquivo = MobileMail.getInstance().getDiretorioAtual() + MobileMail.getInstance().getFrmNavegacao().getString(id); int pos = arquivo.lastIndexOf('.'); pos = arquivo.indexOf("-", pos); arquivo = arquivo.substring(0, pos).trim(); if(MobileMail.getInstance().getFrmNavegacao().getImage(id) == null) { MobileMail.getInstance().addAnexo(arquivo); MobileMail.getInstance().getFrmNavegacao().set(id, MobileMail.getInstance().getFrmNavegacao().getString(id), MobileMail.getInstance().getSmallConfirmIcon()); } else { MobileMail.getInstance().removeAnexo(arquivo); MobileMail.getInstance().getFrmNavegacao().set(id, MobileMail.getInstance().getFrmNavegacao().getString(id), null); } } else { String diretorio = MobileMail.getInstance().getDiretorioAtual(); if(MobileMail.getInstance().getFrmNavegacao().getString(id).equals("..")) { int pos =0, posAnterior = 0; while(diretorio.indexOf(fileSeparator,pos) > -1 && pos < diretorio.lastIndexOf(fileSeparator.charAt(0))) { pos = diretorio.indexOf(fileSeparator, pos + 1); if(pos < diretorio.lastIndexOf(fileSeparator.charAt(0))) posAnterior = pos; } pos = posAnterior; diretorio = diretorio.substring(0, pos + 1); } else diretorio += MobileMail.getInstance().getFrmNavegacao().getString(id); if(diretorio.charAt(diretorio.length()-1) != fileSeparator.charAt(0)) diretorio += fileSeparator; MobileMail.getInstance().setDiretorioAtual(diretorio); MobileMail.getInstance().navegaDiretorio(); } } } }

Page 122: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

122

}

Anexo B.4 – Pacote entidade

/* * ConfiguracaoLogin.java * * Created on 23 de Setembro de 2005, 00:43 * * To change this template, choose Tools | Options and locate the template under * the Source Creation and Management node. Right-click the template and choose * Open. You can then make changes to the template in the Source Editor. */ package entidade; /** * * @author Rodrigo */ public class ConfiguracaoLogin { /** Servidor ao qual a aplicação cliente se conectará * para utilizar o serviço mobilemail */ private String servidor = null; /** ID do usuário */ private String usuario = null; /** Senha de autenticação no servidor */ private String senha = null; /** Flag para gravar ou não a senha do usuário */ private boolean lembrarSenha = false; /** Creates a new instance of ConfiguracaoLogin */ public ConfiguracaoLogin() { } public String getSenha() { return this.senha; } public void setSenha(final String senha) { this.senha = senha; } public String getServidor() { return this.servidor; } public void setServidor(final String servidor) { this.servidor = servidor; } public String getUsuario() { return this.usuario; } public void setUsuario(final String usuario) { this.usuario = usuario; }

Page 123: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

123

public boolean isLembrarSenha() { return this.lembrarSenha; } public void setLembrarSenha(final boolean lembrarSenha) { this.lembrarSenha = lembrarSenha; } }

Anexo B.5 – Pacote visão

/* * MobileMail.java * * Created on 15 de Setembro de 2005, 23:50 */ package visao; import controle.ControladorConfiguracao; import controle.ControladorHTTP; import controle.acao.AcaoEnvioMensagem; import controle.acao.AcaoLogin; import controle.acao.AcaoNavegacao; import entidade.ConfiguracaoLogin; import java.util.Enumeration; import java.util.Hashtable; import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Image; import javax.microedition.lcdui.ItemCommandListener; import javax.microedition.lcdui.List; import javax.microedition.lcdui.StringItem; import javax.microedition.midlet.*; /** * * @author Rodrigo */ public class MobileMail extends MIDlet implements javax.microedition.lcdui.CommandListener, java.lang.Runnable { private static MobileMail instancia = null; private String idSession = null; private Hashtable anexos = new Hashtable(); private String diretorioAtual = null; /** Creates a new instance of MobileMail */ public MobileMail() { instancia = this; } // --- This section is auto-generated by NetBeans IDE. Do not modify or you may lose your changes.//<editor-fold id="MVDMethods" defaultstate="collapsed" desc="This section is auto-generated by NetBeans IDE.">//GEN-BEGIN:MVDMethods /**

Page 124: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

124

* This method initializes UI of the application. */ private void initialize() { new java.lang.Thread(this).start(); // For adding user code into this block, select "Design" item in the inspector and invoke property editor on Action property in Properties window. javax.microedition.lcdui.Display.getDisplay(this).setCurrent(get_msgSplash(), get_menuPrincipal()); } private static final int _ASYNC_NOTHING = 0; private static final int _ASYNC_CA = 1; private int _asyncMethod = _ASYNC_NOTHING; private Object[] _asyncParameters = new Object[2]; /** * This method is run in another thread and communicates with event handlers and provides ability for event processing in different thread. **/ public void run() { int asyncMethod; Object firstParameter; Object secondParameter; for (;;) { // wait and get request for event processing synchronized (_asyncParameters) { _asyncMethod = _ASYNC_NOTHING; _asyncParameters[0] = null; _asyncParameters[1] = null; try { _asyncParameters.wait(); } catch (Exception e) { e.printStackTrace(); } asyncMethod = _asyncMethod; firstParameter = _asyncParameters[0]; secondParameter = _asyncParameters[1]; } // forward request to appropriate event handler if (_asyncMethod == _ASYNC_CA) _commandAction((javax.microedition.lcdui.Command) firstParameter, (javax.microedition.lcdui.Displayable) secondParameter); } } /** * Called by the system to indicate that a command has been invoked on a particular displayable. * @param command the Command that ws invoked * @param displayable the Displayable on which the command was invoked **/ public void commandAction(javax.microedition.lcdui.Command command, javax.microedition.lcdui.Displayable displayable) { synchronized (_asyncParameters) { _asyncMethod = _ASYNC_CA; _asyncParameters[0] = command; _asyncParameters[1] = displayable; _asyncParameters.notifyAll(); } } /** * Called by run method for processing the event from the system that a command has been invoked on a particular displayable. * @param command the Command that ws invoked * @param displayable the Displayable on which the command was invoked

Page 125: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

125

**/ public void _commandAction(javax.microedition.lcdui.Command command, javax.microedition.lcdui.Displayable displayable) { if (displayable == frmAnexos) { if (command == comandoVoltarAnexo) { // For adding user code into this block, select "Design | Screens | frmAnexos [Form] | Assigned Commands | comandoVoltarAnexo" item in the inspector and invoke property editor on Action property in Properties window. javax.microedition.lcdui.Display.getDisplay(this).setCurrent(get_frmEnviaMsg()); } } else if (displayable == frmEditor) { if (command == comandoCancelMsg) { // For adding user code into this block, select "Design | Screens | frmEditor [TextBox] | Assigned Commands | comandoCancelMsg" item in the inspector and invoke property editor on Action property in Properties window. javax.microedition.lcdui.Display.getDisplay(this).setCurrent(get_frmEnviaMsg()); } else if (command == comandoOkMsg) { // For adding user code into this block, select "Design | Screens | frmEditor [TextBox] | Assigned Commands | comandoOkMsg" item in the inspector and invoke property editor on Action property in Properties window. javax.microedition.lcdui.Display.getDisplay(this).setCurrent(get_frmEnviaMsg()); } } else if (displayable == frmEnviaMsg) { if (command == comandoAnexar) { // For adding user code into this block, select "Design | Screens | frmEnviaMsg [Form] | Assigned Commands | comandoAnexar" item in the inspector and invoke property editor on Action property in Properties window. javax.microedition.lcdui.Display.getDisplay(this).setCurrent(get_frmNavegacaoSelecao()); } else if (command == comandoCancelaMsg) { // For adding user code into this block, select "Design | Screens | frmEnviaMsg [Form] | Assigned Commands | comandoCancelaMsg" item in the inspector and invoke property editor on Action property in Properties window. javax.microedition.lcdui.Display.getDisplay(this).setCurrent(get_menuPrincipal()); } else if (command == comandoEditarMag) { // For adding user code into this block, select "Design | Screens | frmEnviaMsg [Form] | Assigned Commands | comandoEditarMag" item in the inspector and invoke property editor on Action property in Properties window. javax.microedition.lcdui.Display.getDisplay(this).setCurrent(get_frmEditor()); } else if (command == comandoEnviarMsg) { // For adding user code into this block, select "Design | Screens | frmEnviaMsg [Form] | Assigned Commands | comandoEnviarMsg" item in the inspector and invoke property editor on Action property in Properties window. this.enviaMensagem(); } else if (command == comandoListaAnexos) { // For adding user code into this block, select "Design | Screens | frmEnviaMsg [Form] | Assigned Commands | comandoListaAnexos" item in the inspector and invoke property editor on Action property in Properties window. javax.microedition.lcdui.Display.getDisplay(this).setCurrent(get_frmAnexos()); this.listaAnexos(this.getFrmEnviaMsg()); } } else if (displayable == frmLogin) { if (command == comandoCancelar) { // For adding user code into this block, select "Design | Screens | frmLogin [Form] | Assigned Commands | comandoCancelar" item in the inspector and invoke property editor on Action property in Properties window. javax.microedition.lcdui.Display.getDisplay(this).setCurrent(get_menuPrincipal()); } else if (command == comandoLogin) { // For adding user code into this block, select "Design | Screens | frmLogin [Form] | Assigned Commands | comandoLogin" item in the inspector and invoke property editor on Action property in Properties window. this.salvaConfigLogin(); this.efetuaLogin(); } } else if (displayable == frmNavegacaoSelecao) { if (command == comandoListaAnexos) { // For adding user code into this block, select "Design | Screens | frmNavegacaoSelecao [List] | Assigned Commands | comandoListaAnexos" item in the inspector and invoke property editor on Action property in Properties window. javax.microedition.lcdui.Display.getDisplay(this).setCurrent(get_frmAnexos()); this.listaAnexos(this.getFrmNavegacao()); } else if (command == comandoVoltarAnexar) { // For adding user code into this block, select "Design | Screens | frmNavegacaoSelecao [List] | Assigned Commands | comandoVoltarAnexar" item in the inspector and invoke property editor on Action property in Properties window. javax.microedition.lcdui.Display.getDisplay(this).setCurrent(get_frmEnviaMsg()); } } else if (displayable == menuConfig) { if (command == comandoVoltar) {

Page 126: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

126

// For adding user code into this block, select "Design | Screens | menuConfig [List] | Assigned Commands | comandoVoltar" item in the inspector and invoke property editor on Action property in Properties window. javax.microedition.lcdui.Display.getDisplay(this).setCurrent(get_menuPrincipal()); } else if (command == menuConfig.SELECT_COMMAND) { } } else if (displayable == menuPrincipal) { if (command == comandoSair) { // For adding user code into this block, select "Design | Screens | menuPrincipal [List] | Assigned Commands | comandoSair" item in the inspector and invoke property editor on Action property in Properties window. javax.microedition.lcdui.Display.getDisplay(this).setCurrent(null); destroyApp(true); notifyDestroyed(); } else if (command == menuPrincipal.SELECT_COMMAND) { switch (get_menuPrincipal().getSelectedIndex()) { case 0: // For adding user code into this block, select "Design | Screens | menuPrincipal [List] | Elements | Efetuar login" item in the inspector and invoke property editor on Action property in Properties window. javax.microedition.lcdui.Display.getDisplay(this).setCurrent(get_frmLogin()); break; case 1: // For adding user code into this block, select "Design | Screens | menuPrincipal [List] | Elements | Configuração" item in the inspector and invoke property editor on Action property in Properties window. javax.microedition.lcdui.Display.getDisplay(this).setCurrent(get_menuConfig()); break; case 2: // For adding user code into this block, select "Design | Screens | menuPrincipal [List] | Elements | Enviar mensagem" item in the inspector and invoke property editor on Action property in Properties window. javax.microedition.lcdui.Display.getDisplay(this).setCurrent(get_frmEnviaMsg()); break; } } } } /** * This method returns instance for menuPrincipal component and should be called instead of accessing menuPrincipal field directly. * @return Instance for menuPrincipal component **/ private javax.microedition.lcdui.List get_menuPrincipal() { if (menuPrincipal == null) { menuPrincipal = new javax.microedition.lcdui.List(" MobileMail - Menu", javax.microedition.lcdui.Choice.IMPLICIT, new java.lang.String[] { "Efetuar login", "Configura\u00E7\u00E3o", "Enviar mensagem" }, new javax.microedition.lcdui.Image[] { get_imgLogin(), get_imgConfig(), get_imgEnviaMsg() }); menuPrincipal.addCommand(get_comandoSair()); menuPrincipal.setCommandListener(this); menuPrincipal.setSelectedFlags(new boolean[] { false, false, false }); } return menuPrincipal; } /** * This method returns instance for menuConfig component and should be called instead of accessing menuConfig field directly. * @return Instance for menuConfig component **/

Page 127: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

127

private javax.microedition.lcdui.List get_menuConfig() { if (menuConfig == null) { menuConfig = new javax.microedition.lcdui.List("Mobile - Configura\u00E7\u00E3o", javax.microedition.lcdui.Choice.IMPLICIT, new java.lang.String[] { "Configurar Cliente", "Configurar conta no servidor" }, new javax.microedition.lcdui.Image[] { get_imgConfigCliente(), get_imgConfigServer() }); menuConfig.addCommand(get_comandoVoltar()); menuConfig.setCommandListener(this); menuConfig.setSelectedFlags(new boolean[] { false, false }); } return menuConfig; } /** * This method returns instance for frmLogin component and should be called instead of accessing frmLogin field directly. * @return Instance for frmLogin component **/ private javax.microedition.lcdui.Form get_frmLogin() { if (frmLogin == null) { frmLogin = new javax.microedition.lcdui.Form("MobileMail - Login", new javax.microedition.lcdui.Item[] { get_tfServidor(), get_tfUsuario(), get_tfSenha(), get_cgSalvaSenha(), get_spacer1() }); frmLogin.addCommand(get_comandoCancelar()); frmLogin.addCommand(get_comandoLogin()); frmLogin.setCommandListener(this); this.carregaConfigLogin(); } return frmLogin; } /** * This method returns instance for tfServidor component and should be called instead of accessing tfServidor field directly. * @return Instance for tfServidor component **/ private javax.microedition.lcdui.TextField get_tfServidor() { if (tfServidor == null) { tfServidor = new javax.microedition.lcdui.TextField("Servidor:", null, 120, 0x4); } return tfServidor; } /** * This method returns instance for tfUsuario component and should be called instead of accessing tfUsuario field directly. * @return Instance for tfUsuario component **/ private javax.microedition.lcdui.TextField get_tfUsuario() { if (tfUsuario == null) { tfUsuario = new javax.microedition.lcdui.TextField("Usu\u00E1rio:", "", 120, 0x0); } return tfUsuario; } /** * This method returns instance for tfSenha component and should be called instead of accessing tfSenha field directly. * @return Instance for tfSenha component

Page 128: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

128

**/ private javax.microedition.lcdui.TextField get_tfSenha() { if (tfSenha == null) { tfSenha = new javax.microedition.lcdui.TextField("Senha:", "", 120, 0x10000); } return tfSenha; } /** * This method returns instance for cgSalvaSenha component and should be called instead of accessing cgSalvaSenha field directly. * @return Instance for cgSalvaSenha component **/ private javax.microedition.lcdui.ChoiceGroup get_cgSalvaSenha() { if (cgSalvaSenha == null) { cgSalvaSenha = new javax.microedition.lcdui.ChoiceGroup("", javax.microedition.lcdui.Choice.MULTIPLE, new java.lang.String[] {"Salvar senha"}, new javax.microedition.lcdui.Image[] {null}); cgSalvaSenha.setSelectedFlags(new boolean[] {false}); } return cgSalvaSenha; } /** * This method returns instance for comandoSair component and should be called instead of accessing comandoSair field directly. * @return Instance for comandoSair component **/ private javax.microedition.lcdui.Command get_comandoSair() { if (comandoSair == null) { comandoSair = new javax.microedition.lcdui.Command("Sair", "Sair", javax.microedition.lcdui.Command.EXIT, 1); } return comandoSair; } /** * This method returns instance for comandoVoltar component and should be called instead of accessing comandoVoltar field directly. * @return Instance for comandoVoltar component **/ private javax.microedition.lcdui.Command get_comandoVoltar() { if (comandoVoltar == null) { comandoVoltar = new javax.microedition.lcdui.Command("Voltar", "Voltar", javax.microedition.lcdui.Command.BACK, 1); } return comandoVoltar; } /** * This method returns instance for comandoCancelar component and should be called instead of accessing comandoCancelar field directly. * @return Instance for comandoCancelar component **/ private javax.microedition.lcdui.Command get_comandoCancelar() { if (comandoCancelar == null) { comandoCancelar = new javax.microedition.lcdui.Command("Cancelar", "Cancelar", javax.microedition.lcdui.Command.CANCEL, 1); } return comandoCancelar; } /** * This method returns instance for comandoLogin component and should be called instead of accessing comandoLogin field directly. * @return Instance for comandoLogin component **/ private javax.microedition.lcdui.Command get_comandoLogin() { if (comandoLogin == null) {

Page 129: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

129

comandoLogin = new javax.microedition.lcdui.Command("Login", "Login", javax.microedition.lcdui.Command.OK, 1); } return comandoLogin; } /** * This method returns instance for imgConfigCliente component and should be called instead of accessing imgConfigCliente field directly. * @return Instance for imgConfigCliente component **/ private javax.microedition.lcdui.Image get_imgConfigCliente() { if (imgConfigCliente == null) { try { imgConfigCliente = javax.microedition.lcdui.Image.createImage("/imagens/cliente.png"); } catch (java.io.IOException exception) { } } return imgConfigCliente; } /** * This method returns instance for imgConfigServer component and should be called instead of accessing imgConfigServer field directly. * @return Instance for imgConfigServer component **/ private javax.microedition.lcdui.Image get_imgConfigServer() { if (imgConfigServer == null) { try { imgConfigServer = javax.microedition.lcdui.Image.createImage("/imagens/servidor2.png"); } catch (java.io.IOException exception) { } } return imgConfigServer; } /** * This method returns instance for imgOk component and should be called instead of accessing imgOk field directly. * @return Instance for imgOk component **/ private javax.microedition.lcdui.Image get_imgOk() { if (imgOk == null) { try { imgOk = javax.microedition.lcdui.Image.createImage("/imagens/confirmIcon.png"); } catch (java.io.IOException exception) { } } return imgOk; } /** * This method returns instance for imgDisk component and should be called instead of accessing imgDisk field directly. * @return Instance for imgDisk component **/ private javax.microedition.lcdui.Image get_imgDisk() { if (imgDisk == null) { try { imgDisk = javax.microedition.lcdui.Image.createImage("/imagens/Disk2.png"); } catch (java.io.IOException exception) { } } return imgDisk; } /** * This method returns instance for msgForm component and should be called instead of accessing msgForm field directly. * @return Instance for msgForm component

Page 130: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

130

**/ private javax.microedition.lcdui.Alert get_msgForm() { if (msgForm == null) { msgForm = new javax.microedition.lcdui.Alert("", "<Enter Text>", null, javax.microedition.lcdui.AlertType.ERROR); msgForm.setTimeout(5000); } return msgForm; } /** * This method returns instance for msgSplash component and should be called instead of accessing msgSplash field directly. * @return Instance for msgSplash component **/ private javax.microedition.lcdui.Alert get_msgSplash() { if (msgSplash == null) { msgSplash = new javax.microedition.lcdui.Alert("MobileMail - 1.0", " Bem-vindo ao MobileMail 1.0", get_imgSplash(), javax.microedition.lcdui.AlertType.INFO); msgSplash.setTimeout(5000); } return msgSplash; } /** * This method returns instance for imgSplash component and should be called instead of accessing imgSplash field directly. * @return Instance for imgSplash component **/ private javax.microedition.lcdui.Image get_imgSplash() { if (imgSplash == null) { try { imgSplash = javax.microedition.lcdui.Image.createImage("/imagens/envelope_Splash.png"); } catch (java.io.IOException exception) { } } return imgSplash; } /** * This method returns instance for imgLogin component and should be called instead of accessing imgLogin field directly. * @return Instance for imgLogin component **/ private javax.microedition.lcdui.Image get_imgLogin() { if (imgLogin == null) { try { imgLogin = javax.microedition.lcdui.Image.createImage("/imagens/login.png"); } catch (java.io.IOException exception) { } } return imgLogin; } /** * This method returns instance for spacer1 component and should be called instead of accessing spacer1 field directly. * @return Instance for spacer1 component **/ private javax.microedition.lcdui.Spacer get_spacer1() { if (spacer1 == null) { spacer1 = new javax.microedition.lcdui.Spacer(1000, 1); } return spacer1; } /**

Page 131: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

131

* This method returns instance for frmEnviaMsg component and should be called instead of accessing frmEnviaMsg field directly. * @return Instance for frmEnviaMsg component **/ private javax.microedition.lcdui.Form get_frmEnviaMsg() { if (frmEnviaMsg == null) { frmEnviaMsg = new javax.microedition.lcdui.Form("MobileMIal 1.0 - Editor de mensagem", new javax.microedition.lcdui.Item[] { get_spacer2(), get_tfPara(), get_tfCC(), get_tfBCC(), get_tfAssunto() }); frmEnviaMsg.addCommand(get_comandoEditarMag()); frmEnviaMsg.addCommand(get_comandoCancelaMsg()); frmEnviaMsg.addCommand(get_comandoAnexar()); frmEnviaMsg.addCommand(get_comandoEnviarMsg()); frmEnviaMsg.addCommand(get_comandoListaAnexos()); frmEnviaMsg.setCommandListener(this); } return frmEnviaMsg; } /** * This method returns instance for tfBCC component and should be called instead of accessing tfBCC field directly. * @return Instance for tfBCC component **/ private javax.microedition.lcdui.TextField get_tfBCC() { if (tfBCC == null) { tfBCC = new javax.microedition.lcdui.TextField("Bcc:", "", 120, 0x1); } return tfBCC; } /** * This method returns instance for tfAssunto component and should be called instead of accessing tfAssunto field directly. * @return Instance for tfAssunto component **/ private javax.microedition.lcdui.TextField get_tfAssunto() { if (tfAssunto == null) { tfAssunto = new javax.microedition.lcdui.TextField("Assunto:", "", 120, 0x0); } return tfAssunto; } /** * This method returns instance for comandoEditarMag component and should be called instead of accessing comandoEditarMag field directly. * @return Instance for comandoEditarMag component **/ private javax.microedition.lcdui.Command get_comandoEditarMag() { if (comandoEditarMag == null) { comandoEditarMag = new javax.microedition.lcdui.Command("Editar mensagem", "Editar mensagem", javax.microedition.lcdui.Command.SCREEN, 1); } return comandoEditarMag; } /** * This method returns instance for comandoCancelaMsg component and should be called instead of accessing comandoCancelaMsg field directly. * @return Instance for comandoCancelaMsg component **/ private javax.microedition.lcdui.Command get_comandoCancelaMsg() { if (comandoCancelaMsg == null) {

Page 132: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

132

comandoCancelaMsg = new javax.microedition.lcdui.Command("Cancelar", "Cancelar", javax.microedition.lcdui.Command.CANCEL, 1); } return comandoCancelaMsg; } /** * This method returns instance for comandoAnexar component and should be called instead of accessing comandoAnexar field directly. * @return Instance for comandoAnexar component **/ private javax.microedition.lcdui.Command get_comandoAnexar() { if (comandoAnexar == null) { comandoAnexar = new javax.microedition.lcdui.Command("Anexar arquivos", "Anexar arquivos", javax.microedition.lcdui.Command.SCREEN, 1); } return comandoAnexar; } /** * This method returns instance for imgEnviaMsg component and should be called instead of accessing imgEnviaMsg field directly. * @return Instance for imgEnviaMsg component **/ private javax.microedition.lcdui.Image get_imgEnviaMsg() { if (imgEnviaMsg == null) { try { imgEnviaMsg = javax.microedition.lcdui.Image.createImage("/imagens/icone.png"); } catch (java.io.IOException exception) { } } return imgEnviaMsg; } /** * This method returns instance for imgConfig component and should be called instead of accessing imgConfig field directly. * @return Instance for imgConfig component **/ private javax.microedition.lcdui.Image get_imgConfig() { if (imgConfig == null) { try { imgConfig = javax.microedition.lcdui.Image.createImage("/imagens/config.png"); } catch (java.io.IOException exception) { } } return imgConfig; } /** * This method returns instance for frmEditor component and should be called instead of accessing frmEditor field directly. * @return Instance for frmEditor component **/ private javax.microedition.lcdui.TextBox get_frmEditor() { if (frmEditor == null) { frmEditor = new javax.microedition.lcdui.TextBox("MobileMail - Editor de mensagem", "", 500, 0x0); frmEditor.addCommand(get_comandoOkMsg()); frmEditor.addCommand(get_comandoCancelMsg()); frmEditor.setCommandListener(this); } return frmEditor; } /** * This method returns instance for comandoOkMsg component and should be called instead of accessing comandoOkMsg field directly.

Page 133: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

133

* @return Instance for comandoOkMsg component **/ private javax.microedition.lcdui.Command get_comandoOkMsg() { if (comandoOkMsg == null) { comandoOkMsg = new javax.microedition.lcdui.Command("Ok", "Ok", javax.microedition.lcdui.Command.OK, 1); } return comandoOkMsg; } /** * This method returns instance for comandoCancelMsg component and should be called instead of accessing comandoCancelMsg field directly. * @return Instance for comandoCancelMsg component **/ private javax.microedition.lcdui.Command get_comandoCancelMsg() { if (comandoCancelMsg == null) { comandoCancelMsg = new javax.microedition.lcdui.Command("Cancelar", "Cancelar", javax.microedition.lcdui.Command.CANCEL, 1); } return comandoCancelMsg; } /** * This method returns instance for comandoEnviarMsg component and should be called instead of accessing comandoEnviarMsg field directly. * @return Instance for comandoEnviarMsg component **/ private javax.microedition.lcdui.Command get_comandoEnviarMsg() { if (comandoEnviarMsg == null) { comandoEnviarMsg = new javax.microedition.lcdui.Command("Enviar", javax.microedition.lcdui.Command.SCREEN, 1); } return comandoEnviarMsg; } /** * This method returns instance for tfPara component and should be called instead of accessing tfPara field directly. * @return Instance for tfPara component **/ private javax.microedition.lcdui.TextField get_tfPara() { if (tfPara == null) { tfPara = new javax.microedition.lcdui.TextField("Para:", null, 120, 0x0); } return tfPara; } /** * This method returns instance for tfCC component and should be called instead of accessing tfCC field directly. * @return Instance for tfCC component **/ private javax.microedition.lcdui.TextField get_tfCC() { if (tfCC == null) { tfCC = new javax.microedition.lcdui.TextField("Cc:", null, 120, 0x0); } return tfCC; } /** * This method returns instance for spacer2 component and should be called instead of accessing spacer2 field directly. * @return Instance for spacer2 component **/ private javax.microedition.lcdui.Spacer get_spacer2() { if (spacer2 == null) { spacer2 = new javax.microedition.lcdui.Spacer(1000, 1); } return spacer2; }

Page 134: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

134

/** * This method returns instance for imgOkPequeno component and should be called instead of accessing imgOkPequeno field directly. * @return Instance for imgOkPequeno component **/ private javax.microedition.lcdui.Image get_imgOkPequeno() { if (imgOkPequeno == null) { try { imgOkPequeno = javax.microedition.lcdui.Image.createImage("/imagens/ok_pequeno.png"); } catch (java.io.IOException exception) { } } return imgOkPequeno; } /** * This method returns instance for comandoOkNavegacao component and should be called instead of accessing comandoOkNavegacao field directly. * @return Instance for comandoOkNavegacao component **/ private javax.microedition.lcdui.Command get_comandoOkNavegacao() { if (comandoOkNavegacao == null) { comandoOkNavegacao = new javax.microedition.lcdui.Command("", "Ok", javax.microedition.lcdui.Command.OK, 1); } return comandoOkNavegacao; } /** * This method returns instance for comandoCancelNavegacao component and should be called instead of accessing comandoCancelNavegacao field directly. * @return Instance for comandoCancelNavegacao component **/ private javax.microedition.lcdui.Command get_comandoCancelNavegacao() { if (comandoCancelNavegacao == null) { comandoCancelNavegacao = new javax.microedition.lcdui.Command("Voltar", "Voltar", javax.microedition.lcdui.Command.CANCEL, 1); } return comandoCancelNavegacao; } /** * This method returns instance for frmAnexos component and should be called instead of accessing frmAnexos field directly. * @return Instance for frmAnexos component **/ private javax.microedition.lcdui.Form get_frmAnexos() { if (frmAnexos == null) { frmAnexos = new javax.microedition.lcdui.Form("MobileMail - Anexos", new javax.microedition.lcdui.Item[0]); frmAnexos.addCommand(get_comandoVoltarAnexo()); frmAnexos.setCommandListener(this); this.listaAnexos(this.getFrmAnexos()); } return frmAnexos; } /** * This method returns instance for comandoVoltarAnexo component and should be called instead of accessing comandoVoltarAnexo field directly. * @return Instance for comandoVoltarAnexo component **/ private javax.microedition.lcdui.Command get_comandoVoltarAnexo() { if (comandoVoltarAnexo == null) { comandoVoltarAnexo = new javax.microedition.lcdui.Command("Voltar", "Voltar", javax.microedition.lcdui.Command.BACK, 1); }

Page 135: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

135

return comandoVoltarAnexo; } /** * This method returns instance for comandoListaAnexos component and should be called instead of accessing comandoListaAnexos field directly. * @return Instance for comandoListaAnexos component **/ private javax.microedition.lcdui.Command get_comandoListaAnexos() { if (comandoListaAnexos == null) { comandoListaAnexos = new javax.microedition.lcdui.Command("Listar anexos", "Listar anexos", javax.microedition.lcdui.Command.SCREEN, 1); } return comandoListaAnexos; } /** * This method returns instance for comandoListaAnexoNavegacao component and should be called instead of accessing comandoListaAnexoNavegacao field directly. * @return Instance for comandoListaAnexoNavegacao component **/ private javax.microedition.lcdui.Command get_comandoListaAnexoNavegacao() { if (comandoListaAnexoNavegacao == null) { comandoListaAnexoNavegacao = new javax.microedition.lcdui.Command("Listar anexos", "Listar anexos", javax.microedition.lcdui.Command.SCREEN, 1); } return comandoListaAnexoNavegacao; } /** * This method returns instance for imgErro component and should be called instead of accessing imgErro field directly. * @return Instance for imgErro component **/ private javax.microedition.lcdui.Image get_imgErro() { if (imgErro == null) { try { imgErro = javax.microedition.lcdui.Image.createImage("/imagens/errorIcon.png"); } catch (java.io.IOException exception) { } } return imgErro; } /** * This method returns instance for imgInfo component and should be called instead of accessing imgInfo field directly. * @return Instance for imgInfo component **/ private javax.microedition.lcdui.Image get_imgInfo() { if (imgInfo == null) { try { imgInfo = javax.microedition.lcdui.Image.createImage("/imagens/infoIcon.png"); } catch (java.io.IOException exception) { } } return imgInfo; } /** * This method returns instance for imgWarning component and should be called instead of accessing imgWarning field directly. * @return Instance for imgWarning component **/ private javax.microedition.lcdui.Image get_imgWarning() { if (imgWarning == null) { try { imgWarning = javax.microedition.lcdui.Image.createImage("/imagens/warningIcon.png"); } catch (java.io.IOException exception) {

Page 136: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

136

} } return imgWarning; } /** * This method returns instance for frmNavegacaoSelecao component and should be called instead of accessing frmNavegacaoSelecao field directly. * @return Instance for frmNavegacaoSelecao component **/ private javax.microedition.lcdui.List get_frmNavegacaoSelecao() { if (frmNavegacaoSelecao == null) { frmNavegacaoSelecao = new javax.microedition.lcdui.List("MobileMail - Anexar arquivos", javax.microedition.lcdui.Choice.IMPLICIT, new java.lang.String[0], new javax.microedition.lcdui.Image[0]); frmNavegacaoSelecao.addCommand(get_comandoVoltarAnexar()); frmNavegacaoSelecao.addCommand(get_comandoListaAnexos()); frmNavegacaoSelecao.setCommandListener(this); frmNavegacaoSelecao.setSelectedFlags(new boolean[0]); frmNavegacaoSelecao.setFitPolicy(javax.microedition.lcdui.Choice.TEXT_WRAP_ON); this.navegaDiretorio(); } return frmNavegacaoSelecao; } /** * This method returns instance for comandoVoltarAnexar component and should be called instead of accessing comandoVoltarAnexar field directly. * @return Instance for comandoVoltarAnexar component **/ private javax.microedition.lcdui.Command get_comandoVoltarAnexar() { if (comandoVoltarAnexar == null) { comandoVoltarAnexar = new javax.microedition.lcdui.Command("Voltar", "Voltar", javax.microedition.lcdui.Command.CANCEL, 1); } return comandoVoltarAnexar; } /** * This method returns instance for frmGauge component and should be called instead of accessing frmGauge field directly. * @return Instance for frmGauge component **/ private javax.microedition.lcdui.Form get_frmGauge() { if (frmGauge == null) { frmGauge = new javax.microedition.lcdui.Form("MobileMail v1.0", new javax.microedition.lcdui.Item[0]); } return frmGauge; } /** * This method returns instance for comandoListarAnexos component and should be called instead of accessing comandoListarAnexos field directly. * @return Instance for comandoListarAnexos component **/ private javax.microedition.lcdui.Command get_comandoListarAnexos() { if (comandoListarAnexos == null) { comandoListarAnexos = new javax.microedition.lcdui.Command("Listar anexos", "Listar anexos", javax.microedition.lcdui.Command.SCREEN, 1); } return comandoListarAnexos; } javax.microedition.lcdui.List menuPrincipal; javax.microedition.lcdui.List menuConfig; javax.microedition.lcdui.Form frmLogin; javax.microedition.lcdui.TextField tfServidor; javax.microedition.lcdui.TextField tfUsuario;

Page 137: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

137

javax.microedition.lcdui.TextField tfSenha; javax.microedition.lcdui.ChoiceGroup cgSalvaSenha; javax.microedition.lcdui.Command comandoSair; javax.microedition.lcdui.Command comandoVoltar; javax.microedition.lcdui.Command comandoCancelar; javax.microedition.lcdui.Command comandoLogin; javax.microedition.lcdui.Image imgConfigCliente; javax.microedition.lcdui.Image imgConfigServer; javax.microedition.lcdui.Image imgOk; javax.microedition.lcdui.Image imgDisk; javax.microedition.lcdui.Alert msgForm; javax.microedition.lcdui.Alert msgSplash; javax.microedition.lcdui.Image imgSplash; javax.microedition.lcdui.Image imgLogin; javax.microedition.lcdui.Spacer spacer1; javax.microedition.lcdui.Form frmEnviaMsg; javax.microedition.lcdui.TextField tfBCC; javax.microedition.lcdui.TextField tfAssunto; javax.microedition.lcdui.Command comandoEditarMag; javax.microedition.lcdui.Command comandoCancelaMsg; javax.microedition.lcdui.Command comandoAnexar; javax.microedition.lcdui.Image imgEnviaMsg; javax.microedition.lcdui.Image imgConfig; javax.microedition.lcdui.TextBox frmEditor; javax.microedition.lcdui.Command comandoOkMsg; javax.microedition.lcdui.Command comandoCancelMsg; javax.microedition.lcdui.Command comandoEnviarMsg; javax.microedition.lcdui.TextField tfPara; javax.microedition.lcdui.TextField tfCC; javax.microedition.lcdui.Spacer spacer2; javax.microedition.lcdui.Image imgOkPequeno; javax.microedition.lcdui.Command comandoOkNavegacao; javax.microedition.lcdui.Command comandoCancelNavegacao; javax.microedition.lcdui.Form frmAnexos; javax.microedition.lcdui.Command comandoVoltarAnexo; javax.microedition.lcdui.Command comandoListaAnexos; javax.microedition.lcdui.Command comandoListaAnexoNavegacao; javax.microedition.lcdui.Image imgErro; javax.microedition.lcdui.Image imgInfo; javax.microedition.lcdui.Image imgWarning; javax.microedition.lcdui.List frmNavegacaoSelecao; javax.microedition.lcdui.Command comandoVoltarAnexar; javax.microedition.lcdui.Form frmGauge; javax.microedition.lcdui.Command comandoListarAnexos; // --- This is the end of auto-generated section.//</editor-fold>//GEN-END:MVDMethods public void startApp() { initialize(); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } private void salvaConfigLogin() { try { ConfiguracaoLogin config = new ConfiguracaoLogin(); config.setServidor(tfServidor.getString()); config.setUsuario(tfUsuario.getString()); boolean[] itens = new boolean[cgSalvaSenha.size()]; if(cgSalvaSenha.getSelectedFlags(itens) > 0) { config.setLembrarSenha(true); config.setSenha(tfSenha.getString()); } ControladorConfiguracao.salvaConfigLogin(config);

Page 138: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

138

} catch(Exception e) { this.exibeMsg(AlertType.ERROR,this.get_frmLogin(), "MobileMail 1.0 - Erro", "Erro ao salvar configurações de login : " + e.getMessage()); } } private void carregaConfigLogin() { try { ConfiguracaoLogin config = ControladorConfiguracao.carregaConfigLogin(); tfServidor.setString(config.getServidor()); tfUsuario.setString(config.getUsuario()); if(config.isLembrarSenha()) { cgSalvaSenha.setSelectedIndex(0, true); tfSenha.setString(config.getSenha()); } else cgSalvaSenha.setSelectedIndex(0, false); } catch (Exception e) { this.exibeMsg(AlertType.ERROR, this.get_frmLogin(), "MobileMail 1.0 - Erro","Erro ao carregar configurações de login : " + e.getMessage()); } } /** Exibe mensagens (Erro, informação, confirmação, etc...) */ public void exibeMsg(AlertType tipo, Displayable proximoDisplay, String titulo, String msg) { this.exibeMsg(tipo, proximoDisplay, titulo, msg, 5000); } /** Exibe mensagens (Erro, informação, confirmação, etc...) */ public void exibeMsg(AlertType tipo, Displayable proximoDisplay, String titulo, String msg, int timeout) { Alert msgFrm = this.get_msgForm(); msgFrm.setType(tipo); msgFrm.setTitle(titulo); msgFrm.setString(msg); msgFrm.setTimeout(timeout); for(int i=0; i < (msgFrm.getWidth()/msg.length()) * 2; i++) msgFrm.setString(" " + msgFrm.getString()); if(tipo.equals(AlertType.CONFIRMATION)) msgFrm.setImage(this.get_imgOk()); else if(tipo.equals(AlertType.ERROR)) msgFrm.setImage(this.get_imgErro()); else if(tipo.equals(AlertType.INFO)) msgFrm.setImage(this.get_imgInfo()); else if(tipo.equals(AlertType.WARNING)) msgFrm.setImage(this.get_imgWarning()); else msgFrm.setImage(null); javax.microedition.lcdui.Display.getDisplay(this).setCurrent(msgFrm, proximoDisplay); } /** Efetua o login do usuário */ private void efetuaLogin() { try { String url = this.get_tfServidor().getString() + "?acao=login&usuario=" + this.get_tfUsuario().getString() + "&senha=" + this.get_tfSenha().getString(); ControladorHTTP ctrlHTTP = new ControladorHTTP(this.get_menuPrincipal(), this.get_frmLogin()); ctrlHTTP.execute(new AcaoLogin(url, "POST")); } catch(Exception e) { this.exibeMsg(AlertType.ERROR,this.get_frmLogin(), "MobileMail 1.0 - Erro", "Erro ao efetuar de login : " + e.getMessage()); } } /** Navega pelos diretórios e seleciona os arquivos a serem anexados */ public void navegaDiretorio() { try {

Page 139: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

139

String url = this.get_tfServidor().getString(); url += this.getIdSession(); url += "?acao=listFolder"; if(this.diretorioAtual != null && this.diretorioAtual.length() > 0) { String diretorio = this.diretorioAtual; diretorio = this.stringReplace(diretorio, " ", "%20"); url += "&diretorio=" + diretorio; } ControladorHTTP ctrlHTTP = new ControladorHTTP(this.get_frmNavegacaoSelecao(), this.get_frmNavegacaoSelecao()); ctrlHTTP.execute(new AcaoNavegacao(url, "POST")); } catch(Exception e) { this.exibeMsg(AlertType.ERROR,this.get_frmLogin(), "MobileMail 1.0 - Erro", "Erro ao listar diretório : " + e.getMessage()); } } public static MobileMail getInstance() { return instancia; } public Form getFrmLogin() { return this.get_frmLogin(); } public void setFormAtual(Displayable display) { javax.microedition.lcdui.Display.getDisplay(this).setCurrent(display); } public List getFrmNavegacao() { return this.get_frmNavegacaoSelecao(); } public void setFrmNavegacao(List lista) { this.frmNavegacaoSelecao = lista; } public String getIdSession() { return this.idSession; } public void setIdSession(final String idSession) { this.idSession = idSession; } public void clearAnexos() { this.anexos.clear(); } public void addAnexo(String anexo) { this.anexos.put(anexo,anexo); } public String[] getAnexos() { String[] res = new String[this.anexos.size()]; int i=0; for(Enumeration e = this.anexos.elements(); e.hasMoreElements();) { res[i]=(String)e.nextElement(); i++; } return res; } public void removeAnexo(String anexo) { this.anexos.remove(anexo); }

Page 140: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

140

public void listaAnexos(Displayable display) { Command comando = new Command("Excluir",Command.OK, 1); this.get_frmAnexos().deleteAll(); if(this.anexos.size() == 0) this.exibeMsg(AlertType.INFO, display, "MobileMail - Aviso", "Não há anexos!"); else { String[] anexos = this.getAnexos(); for(int i=0; i < anexos.length; i++) { StringItem item = new StringItem(anexos[i], null, StringItem.PLAIN); item.setDefaultCommand(comando); item.setItemCommandListener(new AnexoCommandListener(display)); this.get_frmAnexos().append(item); } } } /** Listener para tratamento do evento para exclusão de anexos */ private class AnexoCommandListener implements ItemCommandListener { private Displayable display = null; public AnexoCommandListener(Displayable display) { this.display = display; } public void commandAction(javax.microedition.lcdui.Command command, javax.microedition.lcdui.Item item) { StringItem strItem = (StringItem)item; removeAnexo(strItem.getLabel()); listaAnexos(this.display); int i =0; boolean flag = false; while(i < MobileMail.getInstance().getFrmNavegacao().size() && !flag) { String arquivo = MobileMail.getInstance().getDiretorioAtual(); arquivo += MobileMail.getInstance().getFrmNavegacao().getString(i); if(MobileMail.getInstance().getFrmNavegacao().getImage(i) != null && MobileMail.getInstance().getFrmNavegacao().getImage(i) == MobileMail.getInstance().getSmallConfirmIcon()) { int pos = arquivo.lastIndexOf('.'); pos = arquivo.indexOf("-", pos); arquivo = arquivo.substring(0, pos).trim(); flag = arquivo.equals(strItem.getLabel()); if(flag) MobileMail.getInstance().getFrmNavegacao().set(i, MobileMail.getInstance().getFrmNavegacao().getString(i), null); } i++; } } } public Image getSmallConfirmIcon() { return this.get_imgOkPequeno(); } /** Susbtitui uma substring em uma string * @param value - String original * @param oldValue - Substring a ser substituída * @param newValor - Valor pelo qual a substring oldValue será substituída */ private String stringReplace(String value, String oldValue, String newValue) { String res = new String(""); int pos = 0; if(value.indexOf(oldValue) > -1) { while(pos < value.length()) { if(value.substring(pos, pos + oldValue.length()).equals(oldValue)) { res += newValue; pos += oldValue.length();

Page 141: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

141

} else { res += value.charAt(pos); pos++; } } } else res = value; return res; } public String getDiretorioAtual() { return this.diretorioAtual; } public void setDiretorioAtual(final String diretorioAtual) { this.diretorioAtual = diretorioAtual; } public Form getFrmGauge() { return this.get_frmGauge(); } public Command getComandoVoltarAnexar() { return this.get_comandoVoltarAnexar(); } public Form getFrmEnviaMsg() { return this.get_frmEnviaMsg(); } public Command getComandoListarAnexos() { return this.get_comandoListaAnexos(); } public Form getFrmAnexos() { return this.get_frmAnexos(); } public void enviaMensagem() { try { String url = this.get_tfServidor().getString(); url += this.getIdSession(); url += "?acao=sendMsg"; url += this.getDadosMensagem(); System.out.println(url); ControladorHTTP ctrlHTTP = new ControladorHTTP(this.get_frmEnviaMsg(), this.get_frmEnviaMsg()); ctrlHTTP.execute(new AcaoEnvioMensagem(url, "POST")); } catch(Exception e) { this.exibeMsg(AlertType.ERROR,this.get_frmLogin(), "MobileMail 1.0 - Erro", "Erro ao enviar mensagem de correio : " + e.getMessage()); } } private String getDadosMensagem() { String res = new String(""); res +="&remetente=" + this.get_tfUsuario().getString() + "@mobilemail.com.br"; if(this.get_tfAssunto() == null || this.get_tfAssunto().getString() == null || this.get_tfAssunto().getString().length() == 0) res +="&assunto=No subject"; else res += "&assunto=" + this.stringReplace(this.get_tfAssunto().getString(), " ", "%20"); if(this.get_tfPara() != null && this.get_tfPara().getString() != null && this.get_tfPara().getString().length() > 0) res += "&destinatarios=" + this.stringReplace(this.get_tfPara().getString(), " ", "%20"); if(this.get_tfCC() != null && this.get_tfCC().getString() != null && this.get_tfCC().getString().length() > 0)

Page 142: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

142

res += "&destinatariosCC=" + this.stringReplace(this.get_tfCC().getString(), " ", "%20"); if(this.get_tfBCC() != null && this.get_tfBCC().getString() != null && this.get_tfBCC().getString().length() > 0) res += "&destinatariosBCC=" + this.stringReplace(this.get_tfBCC().getString(), " ", "%20"); if(this.get_frmEditor() != null && this.get_frmEditor().getString() != null && this.get_frmEditor().getString().length() > 0) res += "&corpoMensagem=" + this.stringReplace(this.get_frmEditor().getString(), " ", "%20"); else res += "&corpoMensagem=%20"; String[] anexo = this.getAnexos(); for(int i=0; i < anexo.length; i++) res += "&anexo=" + this.stringReplace(anexo[i], " ", "%20"); return res; } }

Anexo C – biblioteca mobileLib

Anexo C.1 – Pacote io

/* * ReaderWriter.java * * Created on 17 de Setembro de 2005, 16:35 * * To change this template, choose Tools | Options and locate the template under * the Source Creation and Management node. Right-click the template and choose * Open. You can then make changes to the template in the Source Editor. */ package io; import javax.microedition.rms.RecordStore; /** * * @author Rodrigo */ public class ReaderWriter { private RecordStore rs = null; private String recordStoreName; /** Creates a new instance of ReaderWriter */ public ReaderWriter() { } public ReaderWriter(String recordStoreName) { this.setRecordStoreName(recordStoreName); } /** Cria se necessário e abre um RecordStore com nome passado no parâmetro * recordStoreName. */ public void openRecordStore(String recordStoreName) throws Exception { rs = RecordStore.openRecordStore(recordStoreName,true); } /** Cria se necessário e abre um RecordStore com o nome contido no atributo

Page 143: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

143

* recordStoreName */ public void openRecordStore() throws Exception { if(this.getRecordStoreName() != null) this.openRecordStore(this.getRecordStoreName()); } /** Exclui o RecordStore de nome igual ao parametro recordStoreName */ public void deleteRecordStore(String recordStoreName) throws Exception { if(RecordStore.listRecordStores() != null) { RecordStore.deleteRecordStore(recordStoreName); } } /** Exclui o RecordStore de nome igual ao atributo recordStoreName */ public void deleteRecordStore() throws Exception { if(this.getRecordStoreName() != null) this.deleteRecordStore(this.getRecordStoreName()); } /** Grava os dados contidos no parâmetro value num novo registro do RecordStore. */ public void addRecord(String value) throws Exception { byte[] rec = value.getBytes(); rs.addRecord(rec, 0, rec.length); } public void updateRecord(String value, int recordPos) throws Exception { byte[] rec = value.getBytes(); rs.setRecord(recordPos, rec, 0, rec.length); } /** Lê o conteudo do registro localizado na posicao passada no parâmetro recordPos. */ public String readRecord(int recordPos) throws Exception { byte[] rec = rs.getRecord(recordPos); String res = new String(rec,0,rec.length); return res; } /** Lê todos os registros contidos no RecordStore. */ public String[] readRecords() throws Exception { String[] res = new String[this.rs.getNumRecords()]; for(int i=1; i <= this.rs.getNumRecords(); i++) res[i-1] = this.readRecord(i); return res; } /** Exclui o registro da posição passada no parâmetro recordPos. */ public void deleteRecord(int recordPos) throws Exception { this.rs.deleteRecord(recordPos); } /** Exclui todos os registros contidos no RecordStore. */ public void deleteRecords() throws Exception { for(int i=1; i <= this.rs.getNumRecords(); i++) this.deleteRecord(i); } /** Fecha o RecordStore. */ public void closeRecordStore() throws Exception { this.rs.closeRecordStore(); } public String getRecordStoreName() { return this.recordStoreName; } public void setRecordStoreName(final String recordStoreName) { this.recordStoreName = recordStoreName; } }

Page 144: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

144

Anexo C.2 - Pacote net

/* * HttpConection.java * * Created on 23 de Setembro de 2005, 02:06 * * To change this template, choose Tools | Options and locate the template under * the Source Creation and Management node. Right-click the template and choose * Open. You can then make changes to the template in the Source Editor. */ package net; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.io.OutputStream; import javax.microedition.io.Connector; import javax.microedition.io.HttpConnection; /** * * @author Rodrigo */ public class HttpConn { private javax.microedition.io.HttpConnection http = null; public static final byte POST = 0; public static final byte GET = 1; public static final byte HEAD = 2; /** Creates a new instance of HttpConection */ public HttpConn() { } /** Estabelece conexão HTTP com a URL especificada no parâmetro. */ public void connect(String url) throws Exception { http = (HttpConnection)Connector.open(url); } /** Desfaz a conexão. */ public void disconnect() throws Exception { if(http != null) http.close(); } /** Envia os dados utilizando o método GET. */ private String sendWithGET(String url) throws Exception { InputStream in = null; String res = null; try { http.setRequestMethod(HttpConnection.GET); in = http.openInputStream(); res = this.processServerResponse(http, in); } finally { if(in != null) in.close(); }

Page 145: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

145

return res; } /** Processa as resposta do servidor. */ private String processServerResponse(HttpConnection http, InputStream in) throws Exception { String res = null; if(http.getResponseCode() == http.HTTP_OK) { int len = (int)http.getLength(); if(len == -1) { // Tamanho não disponível ByteArrayOutputStream buffer = new ByteArrayOutputStream(); try { int ch; while((ch = in.read()) != -1) buffer.write(ch); res = new String(buffer.toByteArray()); } finally { buffer.close(); } } else { // Tamenho disponível byte[] buffer = new byte[len]; in.read(buffer); res = new String(buffer); } } return res; } private String sendWithPOST(String url) throws Exception { InputStream in = null; OutputStream out = null; String res = null; try { out = http.openOutputStream(); http.setRequestMethod(HttpConnection.POST); http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); if(url.indexOf("?") > -1) { String aux = url.substring(url.indexOf("?") + 1); while(aux.indexOf("=") > -1) { String param = aux.substring(0, aux.indexOf("=")); String valor; if(aux.indexOf("&") > -1) { valor = aux.substring(aux.indexOf("=") + 1, aux.indexOf("&")); aux = aux.substring(aux.indexOf("&") + 1); } else { if(aux.indexOf(";") > -1) { valor = aux.substring(aux.indexOf("=") + 1, aux.indexOf(";")); aux = aux.substring(aux.indexOf("=") + 1, aux.indexOf(";")); } else { valor = aux.substring(aux.indexOf("=") + 1); aux = aux.substring(aux.indexOf("=") + 1); } } byte[] dados = (param + "=" + valor).getBytes(); out.write(dados); } out.flush(); } in = http.openInputStream(); res = this.processServerResponse(http, in); } finally { if(in != null) in.close(); if(out != null) out.close(); } return res; }

Page 146: UTILIZAÇÃO DA TECNOLOGIA J2ME PARA ACESSO AO SERVIÇO DE ...siaibib01.univali.br/pdf/Rodrigo Luiz Duarte.pdf · ... representaÇÃo circular e hexagonal de uma cÉlula ... tela

146

public String send(String url, String metodo) throws Exception { if(metodo.equals(HttpConnection.GET)) return this.sendWithGET(url); else return this.sendWithPOST(url); } public String getHeaderField(String headerFieldName) throws Exception { return http.getHeaderField(headerFieldName); } }