Você está na página 1de 72

UNIVERSIDADE FEDERAL DO PAR CENTRO DE CINCIAS EXATAS E NATURAIS DEPARTAMENTO DE INFORMTICA CURSO DE BACHARELADO EM CINCIA DA COMPUTAO

Klessis Lopes Dias Wescley Pimentel Fontes Orientadora: Regiane Silva Kawasaki Francs

Desenvolvimento de Aplicaes para Dispositivos Mveis utilizando a Plataforma J2ME

Belm 2003
1

UNIVERSIDADE FEDERAL DO PAR CENTRO DE CINCIAS EXATAS E NATURAIS DEPARTAMENTO DE INFORMTICA CURSO DE BACHARELADO EM CINCIA DA COMPUTAO

Klessis Lopes Dias Wescley Pimentel Fontes Orientadora: Regiane Silva Kawasaki Francs

Desenvolvimento de Aplicaes para Dispositivos Mveis utilizando a Plataforma J2ME


Trabalho de Concluso de Curso apresentado para obteno do grau de Bacharel em Cincia da Computao. Orientador (a): Prof. ........................................... ...........................................

Belm 2003

Klessis Lopes Dias Wescley Pimentel Fontes

Desenvolvimento de Aplicaes para Dispositivos Mveis utilizando a Plataforma J2ME

Trabalho de Concluso de Curso apresentado para obteno do grau de Bacharel em Cincia da Computao pela Universidade Federal do Par. Submetido banca examinadora do Colegiado constituda pelos PROFESSORES:

................................................. ................................................. ................................................. Julgado em: ___/___/___ Conceito: _____________


3

BDC%EFHGH&$IP0QRS EFT0QPTEF0QP3451UV@W4X Y`ba%cHd3%ReGc fgHGI`ihf35HGppGH51PEq0#T3HrtsHQEFuEvRTxwyHrsHuGHR51 5EFHT%RHR)3RIR2TEq0sHR`a%cH3cH3$t3%P 5EF0 3PS%&EFPGH $IP`yP0i4Ev4Ev$fcHEd3GHe3%P &EqeP345EfbAgIcG&EdQHRh3%RIyRh$I&eCPhGi$fcHEjyf`ka%cH yP0i4Ev3%Rh4Ev Eq$le&3EF0 cH0 Im$IPeP350#HeP3451 G)$I&3nhfohfpP3$lq`Q53451GHP345Evac3451 &EFG&iIqGH cHqPrh3RIIs&EqeP345HGH&EFh Ev IEdhtuC%q3I`v Pe yn&e Eq&$IPHeGf` &3GH  yc 4H$epP3$q & GH c3G&0QP345 T0i E75w3%$lq EF  $I&3$xc&fsH GH 5EFHT%RyPz3RIIPp30Q&EFHG&P`{ac|P0i Ev}51ohfPEF0 4H$epP3$q~P0 3RUH$l&TPEGH &Eq0$EqT3Rf3%P 0Q&0QP3451RGkGH e$fceGHGH  ! "#%$&')( 10243657 98  3@5A
4

SUMRIO
1- INTRODUO .................................................................................10 1.1- Objetivos........................................................................................12 1.2- Organizao do Trabalho..................................................................12 2- COMUNICAES MVEIS ..............................................................13 2.1-Histrico das Comunicaes Mveis...................................................13 2.2-Elementos de Uma Rede Mvel Celular...............................................17 3- APLICAES MVEIS ....................................................................19 3.1-Comunicaes...................................................................................20 3.2-Servios de Valor Agregado...............................................................21 3.3-Aplicaes Verticais..........................................................................22 3.4-Servios Baseados em Localizao......................................................22 3.5- Publicidade......................................................................................23 4- A TECNOLOGIA JAVA .....................................................................24 4.1-Uma breve Histria de Java................................................................24 4.2-A Arquitetura de Java........................................................................25 4.2.1-A Linguagem de Programao Java..................................................25 4.2.2-O Arquivo Class.......................... ..................................................28 4.2.3-A API Java....................................................................................28 4.2.4-A Mquina Virtual Java..................................................................29 4.2.4.1-A Carga e execuo de uma JVM..................................................30 4.2.4.2 - Class Loader (Carregador de Classes).........................................30 4.2.4.3 - O Engenho de Execuo.............................................................31 4.3- Evoluo da Linguagem Java: do Lanamento at Java 2.....................32 4.3.1- Java Development Kit 1.0 (JDK).....................................................32 4.3.2- Java Development Kit 1.1...............................................................33 4.3.3- Java 2...........................................................................................33 4.4- O Processo da Comunidade Java (JCP)...............................................35 4.4.1- A Requisio de Especificao Java (JSR).......................................36 5- A PLATAFORMA JAVA 2 MICRO EDITION ....................................37 5.1- O que J2ME?.................................................................................37 5.2- O que J2ME oferece?........................................................................37 5

5.3- Os Conceitos de Configuraes e Perfis.............................................39 5.3.1- Configuraes...............................................................................39 5.3.2- Perfil............................................................................................40 5.4- As Mquinas Virtuais J2ME..............................................................41 5.4.1- A mquina virtual K (KVM)...........................................................41 5.4.2- A mquina virtual C (CVM)...........................................................43 5.5- A Configurao para Dispositivos com Limite de Conexo (CLDC)......44 5.5.1- Caractersticas eliminadas da J2SE (Java 2 Standard Edition )...........45 5.5.2- Processo de Verificao.................................................................45 5.5.3- APIs suportadas............................................................................46 5.6- O Modelo MIDP..............................................................................47 5.6.1- Requisitos mnimos de Hardware para um dispositivo MIDP.............47 5.6.2- Requisitos mnimos de Software para um dispositivo MIDP..............48 5.6.3- As APIs do MIDP..........................................................................48 6- TCNICAS E DIRETRIZES PARA O DESENVOLVIMENTO DE APLICAES SEM FIO ........................................................................53 6.1- Restries em Aplicaes Sem Fio.....................................................53 6.2- Desafios para o desenvolvimento sem fio...........................................55 6.2.1- Transmisso de Erros.....................................................................55 6.2.2- Latncia........................................................................................55 6.2.3- Segurana.....................................................................................56 6.3- Diretrizes para o Desenvolvimento de Aplicaes Mveis....................57 6.4- Tcnicas para otimizar a performance em aplicaes J2ME..................58 7- ESTUDO DE CASO ............................................................................59 7.1- Aplicao Agenda Telefnica............................................................59 7.2- Estrutura da Aplicao......................................................................60 7.3- O Processo de desenvolvimento.........................................................60 7.4- Resultados Obtidos...........................................................................62 8- CONSIDERAES FINAIS E TRABALHOS FUTUROS .....................64

RESUMO

Computao mvel um novo paradigma computacional que tem como

objetivo prover ao usurio, acesso a uma rede fixa ou mvel, independente de sua localizao. A principal vantagem deste paradigma a de fornecer a capacidade de acessar informaes, aplicaes e servios a qualquer lugar e a qualquer momento atravs de um dispositivo mvel. O objetivo desta monografia apresentar a arquitetura da plataforma denominada Java 2 Micro Edition (J2ME), voltada para o desenvolvimento de aplicaes para dispositivos mveis. Dispositivos mveis so os elementos fundamentais dentro do paradigma da computao mvel, eles renem caractersticas como mobilidade e recursos computacionais limitados. Desta forma sero abordados conceitos e benefcios da arquitetura J2ME para o desenvolvimento de aplicaes para o ambiente da computao mvel.

ABSTRACT
Mobile computation is a new computational paradigm that has as goal to provide for user access to a permanent or mobile net, independent of your physical position. The main advantage of this paradigm is provide the capacity of accessing information, applications and services to anywhere and at anytime, through a mobile device. The goal of this monograph is introduce the platform framework called Java 2 Micro Edition (J2ME). This Java technology has been developed to provide solutions for mobile devices. Mobile devices are the fundamental elements for this computational paradigm, having characteristics as mobility and limited computational resources. Thus will be presented concepts and benefits of the J2ME architecture environment. for the applications development for mobile computation

Lista de Figuras

1. Instrumentos de Informao conectados a Internet............................11 2. Arquitetura de uma Rede Celular.....................................................18 3. Portabilidade de Java.....................................................................26 4. Cdigo Java transformado para o bytecode aps a compilao...........28 5. Subsistemas de uma JVM...............................................................30 6. Diagrama do class loader ...............................................................30 7. Passos de Execuo de uma JVM....................................................32 8. A Plataforma Java 2.......................................................................35 9. Download de aplicaes J2ME........................................................38 10. Arquitetura J2ME.... ........................................... ........................43 11. Passos para a execuo de programas em dispositivos mveis........ ..47 12. Teclas de um telefone celular.........................................................54 13. KtoolBar......................................................................................60 14. Ambiente de Desenvolvimento Sun One Mobile Edition 4.................61 16. Telas da aplicao.........................................................................62 17. Telas da aplicao.........................................................................63

1. Introduo
Conectividade, personalizao e inteligncia nos instrumentos de

informao, como apresentado nos dispositivos mveis, esto trazendo importantes benefcios em nossos negcios e vida privada. Estes dispositivos tais como, telefones celulares, pagers , screen phones 1 , PDAs 2 ( Personal Digital Assistant ) e sistemas de navegao de carros possuem muitas caractersticas em comum, porm diferem em diversas formas e funes. Estes dispositivos [9]. A proliferao desses instrumentos de informao tem crescido tendem a ser construdos para um propsito especfico diferentemente das mquinas de computao convencionais de propsito geral

rapidamente. Segundo [9], o nmero de assinantes wireless (sem fio) no mundo estimado em cerca de um bilho para o final de 2002 e incio de 2003, comparando com os computadores pessoais existentes, que no incio de 2002 estavam por volta de 311 milhes no mundo.

Segundo [9], prev-se que dentro de dois a cinco anos, a maioria dos instrumentos de informao estaro conectados Internet. Isto resultar em uma radical mudana na maneira de como as pessoas utilizam esses dispositivos. Os usurios dos instrumentos de informao querem acessar informaes como, contedo da web , dados corporativos e dados pessoais de maneira conveniente em qualquer lugar e a qualquer hora atravs de uma variedade de dispositivos. A figura 1 mostra o ambiente dos instrumentos de informao conectados Internet.

1 2

Espcie de telefone convencional com tela para acessar a internet. Dispositivo porttil que combina caractersticas de telefone, fax, agenda, computao e rede.

10

Figura 1. Instrumentos de Informao conectados Internet. Uma conseqncia importante da evoluo dos instrumentos de

informaes, que estes dispositivos sero muito mais personalizados e customizveis. Diferentemente do que ocorria no passado, quando os dispositivos como telefones celulares eram fabricados com um conjunto de funes prdeterminadas, por exemplo: jogos, agenda, etc, que permaneciam imutveis por toda a vida til do aparelho. Podem hoje, com avano tecnolgico desses dispositivos aliado a tecnologia J2ME, permitir aos usurios customizar seus dispositivos, carregando novos servios e aplicaes da Internet de acordo com suas necessidades [6].

11

1.1. Objetivos
O objetivo principal deste trabalho mostrar um estudo da linguagem J2ME, abordando seus conceitos, fundamentos, aplicaes e tcnicas, e alm disso, mostrar a importncia do ganho de produtividade na criao de solues para dispositivos mveis que so desenvolvidas com esse tipo de tecnologia Java.

1.2. Organizao do trabalho


Alm deste captulo introdutrio, esta monografia composta de mais sete captulos que esto dispostos da seguinte forma: O captulo 2 descreve o histrico das comunicaes mveis, assim como os elementos bsicos que compem uma rede de comunicao mvel celular; O captulo 3 apresenta algumas das possveis aplicaes que podem ser implementadas em um ambiente mvel; O captulo 4 mostra as caractersticas da Tecnologia Java; O captulo 5 apresenta a Plataforma J2ME. O captulo 6 descreve algumas tcnicas e diretrizes para o desenvolvimento de aplicaes em J2ME; O captulo 7 apresenta o estudo de caso feito utilizando J2ME; O captulo 8 mostra as consideraes finais e alguns temas para trabalhos futuro.

12

2. Comunicaes Mveis 2.1. Histrico das Comunicaes Mveis


Um sistema de comunicao mvel tem como caracterstica a

possibilidade de movimento relativo entre as partes como, por exemplo, a comunicao entre o telefone celular e a estao base na telefonia celular. Sistemas mveis usam a tecnologia sem fio para possibilitar uma comunicao transparente enquanto o usurio se desloca [4]. A seguir, apresentado um breve histrico das comunicaes mveis. O desejo da humanidade em comunicar-se livre de fios ocorre desde os primrdios da civilizao. Na Grcia antiga o uso de sinais de fumaa mencionado como forma de comunicao. No final do sculo XVIII, Claude Chape inventa a telegrafia ptica (1794), possibilitando a comunicao sem fio para longas distncias. Em 1820, Hans Christian Oersted descobre experimentalmente que a corrente eltrica produz um campo magntico. As comunicaes sem fio tiveram uma contribuio fundamental com Michel Faraday demonstrando a induo eletromagntica 1 em 1831. Em 1864, James C. Maxwell lana os fundamentos tericos sobre campos magnticos com suas famosas equaes. Em 1876, Alexander Graham Bell inventa o telefone. Finalmente, Heinrich Hertz foi o primeiro a demonstrar, atravs de um experimento em 1887, as equaes de Maxwell sobre ondas eletromagnticas [4]. As equaes de Maxwell, descrevendo a propagao de ondas

eletromagnticas, e os experimentos de Heinrich Hertz, foram as bases para a descoberta da radiotelegrafia por Marconi, o qual conseguiu a primeira patente industrial na rea de comunicaes sem fio, em 1896. Marconi demonstrou a primeira transmisso de rdio da Ilha de Wight , localizada na Inglaterra, at um rebocador situado a dezoito milhas da Ilha [22]. Em 1905, ocorreu a primeira transmisso de voz e msica em um canal sem fio por
1

Induo Eletromagntica: gerao de corrente eltrica utilizando um im.

13

Reginald Fessenden, e em 1946, o primeiro sistema de telefonia mvel comercial, operado pela empresa americana Bell, foi implantado em St. Louis, Missouri, nos Estados Unidos. Nos anos 80, as unidades mveis eram instaladas em veculos o que permitia apenas uma comunicao veicular e no pessoal. A era da telefonia celular teve seu incio efetivo no incio dos anos 90, quando o usurio podia portar o aparelho embora suas dimenses iniciais fossem grandes [4]. O espectro de freqncias, que constitui o meio de transmisso das redes mveis sem fio, precisa ser compartilhado entre os vrios usurios do sistema. sob este espectro que as tcnicas de acesso mltiplo ao meio operam, garantindo um acesso compartilhado e com equidade para todos os terminais mveis [4]. As principais tcnicas responsveis pela diviso dos recursos de freqncia em vrios canais no interferentes possibilitando o acesso mltiplo dos usurios so FDMA 1 ( Frequency Division Multiple Access ), TDMA 2 ( Time Division Multiple Access ) e CDMA 3 (Code Division Multiple Access). Vrios padres para a telefonia celular foram adotados em diferentes pases e ficaram conhecidos como sistemas de 1 Gerao (1G), entre eles podem-se citar: o AMPS ( Advanced Mobile Telephone System ) nos Estados Unidos, o TACS ( Total Access Communications Systems ) no Reino Unido, o JTACS ( Japan Total Access Communications Systems ) no Japo e o NMT ( Nordic Mobile Telephones system ) nos pases do norte europeu (Dinamarca, Finlndia, Sucia e Noruega). Os sistemas de 1G utilizam a transmisso de dados no modo analgico e a tcnica de acesso ao meio utilizada a FDMA. Os principais problemas com esses sistemas eram a baixa qualidade e capacidade dos canais de comunicao e a incompatibilidade entre os diversos sistemas existentes.

1 2

Tcnica de mltiplo acesso ao meio de transmisso por diviso da freqncia. Tcnica de mltiplo acesso ao meio de transmisso por diviso do tempo. 3 Tcnica de mltiplo acesso ao meio de transmisso por diviso de cdigo.

14

Depois da primeira gerao de sistemas mveis veio a 2 a Gerao (2G) numa tentativa de ampliar a capacidade dos sistemas existentes. O sistema AMPS( Advanced/American Mobile Phone System) evoluiu para o DAMPS( Digital Advanced Mobile Phone System) que utilizava TDMA, tambm conhecido por IS-54 ( Interim Standard 54). Como uma alternativa ao IS-54 surgiu nos Estados Unidos o IS-95 ( Interim Standard 95), ainda na primeira metade da dcada de 90 e utilizava o CDMA, aumentando a capacidade em relao aos sistemas existentes. O IS-54 foi sucedido pelo IS-136 ( Interim Standard 136). Portanto, em meados da dcada de 90 dois sistemas mveis digitais competiam nas Amricas na faixa de 800 MHz. Na Europa surgiu o GSM ( Global System for Mobile Communications ), no incio da dcada de 90, alcanando um maior nmero de assinantes, devido abranger uma maior rea de cobertura dentre os padres de segunda gerao. Utiliza acesso FDMA/TDMA. Uma grande inovao do sistema GSM o mdulo de identificao do usurio, o SIM ( Subscriber Identification Module ) que contm a identificao completa do usurio, chaves de cdigo de privacidade e outras informaes especficas sobre o usurio. O SIM se apresenta sob a forma de um carto de crdito ou de um plug-in 1 que conectado ao terminal GSM. Estes cartes podem ser removidos de um telefone GSM e usados em um outro, permitindo que o usurio utilize qualquer telefone GSM. Sem o SIM, o terminal torna-se inoperante. Esse sistema padronizou as comunicaes celulares na Europa,

permitindo ao usurio utilizar seu telefone em qualquer pas europeu. Ainda pode-se destacar como sistema 2G o PDC ( Personal Digital Cellular ) desenvolvido no Japo. Com a 2 gerao de celulares foram introduzidos novos servios de comunicao de voz, com maior qualidade e capacidade de transmisso, possibilitando atender um maior nmero de usurios e, tambm, foram criados servios de transmisso de dados como o Servio de Mensagens Curtas ( Short
1

Mdulo de software ou hardware independente, que pode ser adicionado a um sistema a fim de se obter alguma funcionalidade extra.

15

Messages Service SMS ) para transmisso de pequenos pacotes de dados. O SMS permite que o usurio envie e receba mensagens de texto de at 160 bytes [4]. Ainda no incio da dcada de 90 surgiu a idia da 3 a Gerao (3G) dos sistemas celulares, como uma proposta para a padronizao global das comunicaes mveis, com a disponibilizao de altas taxas de transmisso de dados possibilitando o suporte a aplicaes multimdia e acesso Internet. O IMT-2000 ( International Mobile Telecommunications 2000 ) a especificao para os sistemas 3G que est sendo desenvolvida pela ITU 1 ( International Telecommunication Union ). Esses sistemas, que j se encontram em uso no Japo, disponibilizam servios de voz, dados, e aplicaes multimdia sobre as redes sem fio. A idia que o IMT-2000 especifique uma famlia de padres que disponibilize pelo menos taxas de 2 Mbps (Mega bits por segundo) em ambientes indoor 2 , 384 Kbps em ambientes de baixa mobilidade, 144 kbps (Kilo bits por segundo) em ambientes veiculares ( outdoor 3 ). [4] Na dcada passada, duas tecnologias - comunicaes mveis e a Internet, cresceram de uma maneira que excederam todas as expectativas. O servio mvel celular obteve um crescimento muito grande de usurios juntamente com a reduo drstica dos planos para os servios de voz. Por outro lado, a Web proporciona uma grande possibilidade de acesso a informaes para os usurios fixos. A possibilidade de acesso informao e servios a qualquer hora e em qualquer lugar poder moldar uma nova sociedade de informao com os usurios acessando a informao na Internet atravs de diversos dispositivos mveis, tais como telefones celulares, PDAs (Assistentes Pessoais Digitais) e Laptops.

1 2

rgo internacional responsvel pela padronizao das Telecomunicaes. Ambiente interno. 3 Ambiente externo.

16

2.2. Elementos de uma Rede de Comunicao Mvel Celular


Uma rede bsica de comunicao mvel celular formada pelos seguintes elementos (vide figura 2): telefones/estaes mveis (MS Mobile Stations ), estaes base (BSs - Base Stations ), centro de comutao (MSC Mobile Switching Center ), HLR ( Home Location Register ) e o VLR ( Visitor Location Register ) [4]. Cada um desses elementos ser apresentado a seguir. Telefones mveis se comunicam com a estao base por meio de sinais de rdio. A estao base, que cobre uma determinada rea denominada de clula, converte estes sinais e os transferem para um MSC via um enlace de comunicao com fio ou sem fio. O MSC coordena e roteia as chamadas para outros telefones mveis ou para telefones fixos conectados rede pblica de telefonia (PSTN Public Switched Telephone Network ). O HLR uma base de dados de uma rea de servio que contm informaes sobre as MSs cadastradas naquela rea. Nos HLRs so armazenadas informaes como: MIN ( Mobile Identification Number ), ESN ( Eletronic Serial Number ) e perfil do usurio com dados sobre faturamento( billing ), call forward-to number , estado (ativo ou inativo) e ponteiro para o ltimo VLR onde a MS se registrou. O VLR funciona em conjunto com o HLR para suportar roaming 1 automtico. um repositrio local, temporrio, com dados da MS que est fora de sua rea de servio [4].

O conceito introduzido pelos sistemas celulares permite que pequenas reas de cobertura de rdio tornem-se parte de um grande sistema atravs da interconexo destas pequenas reas por meio do MSC. Com o crescimento da demanda e o reduzido espectro de freqncias, as clulas tm uma tendncia a reduzirem sua rea de cobertura. As clulas reduzem, tambm, a potncia de suas BSs. Um procedimento importante em sistemas celulares denominado handoff e corresponde mudana automtica de chamada de uma clula para outra medida que o usurio se desloca.

Permite aos usurios viajarem volta das reas de cobertura sem serem desconectados.

17

Na figura 2 pode-se visualizar os elementos que compem uma rede de comunicao mvel celular bsica.

Figura 2. Arquitetura de uma Rede Celular.

18

3. Aplicaes Mveis
Aplicaes mveis apresentam vrias caractersticas que agregam

funcionalidade aos seus usurios. A primeira delas a mobilidade, a capacidade de manter voz constante e comunicao de dados enquanto em movimento. Em segundo lugar est o imediatismo, que permite aos usurios obter conectividade quando necessrio, sem considerar a localizao e sem uma longa sesso de login 1 . Finalmente, localizao permite aos usurios obterem informaes relevantes para suas localizaes atuais. A combinao dessas caractersticas fornece uma grande faixa de possveis aplicaes que podem ser oferecidas aos usurios mveis. Essas aplicaes podem ficar disponveis em uma rede do provedor de servio ou na Internet pblica. As aplicaes mveis so de vrias categorias e incluem [14]: Comunicaes intranet/Internet; Servio de valor agregado(VAS Value added services ) servios de informao e jogos; M-commerce venda a varejo, compra de bilhetes, servios bancrios e comrcio financeiro; Aplicao baseada em localizao Navegao, condies de trfego de veculos, localizao de pessoas e hospitais, etc; Aplicaes verticais gerenciamento de frota, alocao de recursos, etc; Publicidade. A seguir, sero detalhadas as categorias de aplicaes mveis citadas anteriormente. e -mail , fax, mensagem unificada e acesso

Ato de se autenticar em uma rede.

19

3.1. Comunicaes
Aplicaes de comunicaes incluem aquelas em que o usurio utiliza a rede de comunicao mvel apenas como um canal para acessar mensagens ou informaes. Diferem de outras aplicaes em que os usurios acessam um servio fornecido por uma operadora de rede mvel. As aplicaes de comunicaes so: Acesso intranet permite aos usurios manter contato com a sede atravs de e-mail, fax e voice mail usando sistemas de mensagem unificada. Arquivos e dados podem ser acessados atravs da intranet da empresa; Acesso Internet a Internet um meio de grande valor para acessar

dados corporativos alm de informao sobre produtos e servios. As empresas esto usando a Internet como um ambiente para realizar negcios com seus clientes e fornecedores atravs do e-commerce (comrcio eletrnico), e como meio de divulgao de propagandas; E-mail e Fax e-mails em redes mveis podem ser de dois tipos.

possvel mandar o e-mail para um usurio mvel diretamente, ou usurios podem ter uma conta de e-mail em uma operadora de rede mvel ou em um provedor de servio Internet. No segundo caso, uma notificao ser enviada para o terminal mvel do usurio e incluiro informaes sobre o emissor, hora/data e assunto;

Mensagem unificada Usa somente uma caixa de correio eletrnico


para todas as mensagens, incluindo voice mail , e-mail , faxes, SMS ( short message service ) e mensagens de pager . Com vrias caixas de correio em somente um local, sistemas de mensagens unificados permitiro uma variedade de mtodos de acesso para recuperar mensagens de diferentes tipos. Alguns usaro sistemas de texto para voz para ler e-mail e, menos comum, faxes sobre uma linha telefnica normal. A maioria permitir a interrogao do contedo de vrias caixas de correio atravs de acesso aos dados, como a

20

Internet. Outros podem ser configurados para alertar o usurio no tipo de terminal de sua escolha quando as mensagens so recebidas [14].

3.2. Servios de Valor Agregado


Servios de valor agregado referem-se aos contedos fornecidos pela operadora da rede mvel para aumentar o valor de seus servios aos assinantes. Push e Pull so termos usados relacionados a aplicaes de fornecimento de dados. Push refere-se a transmisso de dados em um tempo pr-determinado, ou sob condies pr-determinadas. O fornecimento no solicitado de propaganda um exemplo de utilizao da tcnica push . Pull refere-se a demanda de dados em tempo real pelo usurio. Leitura de jornais eletrnicos diariamente um exemplo dessa tcnica [4]. Para agregar valor aos usurios da aplicao, o contedo disponvel deve possuir vrias caractersticas: Informao perfil do personalizada um e adequada de para as necessidades relevante e especficas do usurio. Uma aplicao de e-commerce que conhea o usurio exemplo informao personalizada; Contedo de localizao deve ser baseada na localizao atual do usurio, incluindo mapas, localizadores de hotel, etc; A interface de acesso e as telas de menu devem ser intuitivas e fcil de navegar; Vrios servios de valor agregado so descritos a seguir: M-commerce definido como a realizao de negcios atravs de dispositivos mveis, na Internet ou em servios de dados; Banking a popularidade dos servios bancrios eletrnicos deve-se ao fato da reduo do custo das transaes feitas 21

eletronicamente em relao s transaes feitas no prprio banco. Transaes bancrias que podem ser feitas em uma conexo sem fio incluem: verificao de saldo, transferncia de dinheiro entre contas, pagamento de taxas; Comrcio financeiro a velocidade com que as transaes so feitas usando a Internet e atualizao das informaes a todo o momento, tem tornado o comrcio financeiro uma aplicao bastante utilizada.

3.3. Aplicaes Verticais


Em um ambiente mvel, essas aplicaes utilizam a infra-estrutura mvel para dar suporte a execuo de tarefas especficas dentro da cadeia de valor da empresa, em oposio s aplicaes que so oferecidas para consumo direto. So exemplos dessas aplicaes: suporte a vendas, gerenciamento de frota, controle de cargas, etc.

3.4. Servios Baseados em Localizao


Servios baseados em localizao fornecem a capacidade de acessar servios de informao levando em considerao a localizao do usurio. So exemplos desses servios: localizadores de hotel e restaurante, servios de assistncia na estrada, servios de emergncia, informaes e notcias especficas da localizao. Esta tecnologia tem tambm aplicaes verticais tais como gerenciamento de recursos e rastreamento de veculos [4].

22

3.5. Publicidade
Publicidades so servios oferecidos do tipo push . Servios de

propaganda podem ser oferecidos aos clientes para subsidiar os custos com os servios de voz e outros servios de informao. Propaganda pode tambm ser sensvel a localizao, por exemplo, um usurio entra em um shopping e recebe publicidade especfica das lojas daquele shopping [4].

23

4. A Tecnologia Java 4.1 Uma Breve Histria de Java


Em 1990, a Sun Microsystems desenvolveu uma linguagem orientada a objetos denominada Oak, cujo propsito era o desenvolvimento de pequenos aplicativos e programas para controle de eletrodomsticos e dispositivos portteis [6]. Com essa linguagem seria possvel programar novas funes para os aparelhos domsticos, tornando-os mais flexveis. Por exemplo, um forno de microondas poderia ser programado para preparar diversos tipos de alimentos. Os fabricantes de um aparelho poderiam oferecer vrios aplicativos para tarefas e usurios diferentes [12]. Alm disso, a proposta da Sun previa o desenvolvimento de um sistema operacional que controlasse uma rede de eletrodomsticos e dispositivos portteis. Com isso seria possvel utilizar um microcomputador para automatizar uma residncia e seus eletrodomsticos [1]. Uma das primeiras concluses durante o processo de desenvolvimento foi a de que o sistema no poderia ficar preso a plataformas, pois os clientes no estavam interessados no tipo de processador que estavam utilizando, e fazer uma verso do projeto para cada tipo de sistema seria invivel. Com a popularizao da rede mundial de computadores (Internet), atravs da World Wide Web, a Sun decidiu adiar a idia dessa rede domstica e em 1995, direcionou a linguagem Oak para o desenvolvimento de aplicaes na Web, dando origem linguagem Java [12].

24

4.2 Arquitetura de Java


Java no somente uma linguagem de programao [12]. Ela formada por um conjunto de elementos que envolvem, alm da sintaxe da linguagem de programao, os formatos de arquivos (.java e .class), um conjunto de APIs1(classes, componentes, frameworks), e uma Mquina Virtual Java (JVM). Cada um desses elementos de Java sero detalhados a seguir.

4.2.1 A Linguagem de Programao Java


Java uma linguagem de programao de alto nvel, que segue o paradigma de programao orientado a objetos. A seguir so apresentadas as principais caractersticas de Java: Compilada e Independente de Plataforma (Portabilidade): Um programa escrito em Java precisa ser compilado antes de ser executado. O compilador traduz o cdigo-fonte em Java (extenso .java) e gera um cdigo em linguagem de mquina virtual Java (bytecode que prximo das instrues de mquina, mas no de uma mquina real) para um microprocessador virtual. [2]. Cada programa Java consiste da implementao de no mnimo uma classe. Uma classe um tipo definido pelo usurio que contm o molde e a especificao para os objetos2. No necessrio recompilar um programa para que ele rode numa mquina e sistema diferente, basta que a plataforma (mquina e sistema) tenha uma implementao que permita a emulao da mquina virtual Java. A figura 3 ilustra os diferentes ambientes operacionais nos quais um mesmo programa em Java pode ser executado.

Applications Programming Interface - Interfaces para programao de aplicaes que oferecem funcionalidades para a construo de interface com o usurio, banco de dados, etc. 2 So instncias de uma classe.

25

Figura 3. Portabilidade de Java. Segurana: Apresenta uma tipagem de dados forte, por somente permitir acesso a campos pelo nome (e no por endereo), um programa em Java pode ser verificado antes de ser executado para prevenir a execuo de cdigo no autorizado alm de proteger o sistema do cliente contra possveis ataques no intencionais, o ambiente tambm deve proteger contra aes premeditadas. A presena de coleta automtica de lixo, evita erros comuns que os programadores cometem quando so obrigados a gerenciar diretamente a memria. A eliminao do uso de ponteiros1, em favor do uso de vetores2, objetos e outras estruturas substitutivas, traz benefcios em termos de segurana. O programador proibido de obter acesso memria que no pertence ao seu programa. As presenas de mecanismos de tratamento de excees tornam as aplicaes mais robustas, no permitindo que elas falhem, mesmo quando esto rodando sob condies anormais [2]. Coleta de Lixo: A coleta de lixo uma eficiente tcnica de liberao de memria utilizada pela linguagem Java [15]. Muitas linguagens permitem que o programador aloque memria em tempo de execuo. Esta alocao consiste geralmente no retorno de um ponteiro que indica o incio do bloco da memria que foi alocado. Quando aquela memria no mais necessria, o programa deve liberar recursos para que ela possa ser reutilizada e evitar que o sistema pare por falta de memria. Nas linguagens de
1 2

So utilizados em programas para acessar a memria e manipular endereos. Estrutura de dados utilizada para armazenar informaes do mesmo tipo.

26

programao como C e C++, o programador deve se preocupar em controlar a memria alocada e liber-la quando no for mais utilizada. Esta, geralmente, uma tarefa complexa e propensa a erros, uma vez que deixa a cargo do programador o gerenciamento de memria da aplicao [15]. O sistema de coleta de lixo da linguagem Java tira esta responsabilidade do programador. Atravs de uma linha de execuo (thread) de baixa prioridade, o sistema de coleta de lixo mantm um registro da memria alocada e conta o nmero de referncias para cada ponteiro de memria. Nos intervalos em que a mquina virtual Java est inativa, o coletor de lixo (Garbage Collector CG) verifica quais os ponteiros de memria que no tm mais referncias apontando para eles e libera a memria. Suporte a programao concorrente (multithreandig): Programas em Java podem ter mais de uma linha de execuo ocorrendo simultaneamente. Os programadores podem definir quando e com que prioridade certas linhas de execuo sero rodadas. A vantagem disso que programas podem ficar realizando outras tarefas enquanto o usurio interage com ele. Java ainda fornece meios de sincronizar essas linhas de execuo. Quando um programa usa muitas delas e h o risco de utilizarem o mesmo conjunto de dados, necessrio sincronizar as aes para que no haja conflitos. Com essas qualidades, Java pode ser utilizada para a criao de vrios tipos de aplicativos, desde aplicaes standalone (local) at aplicaes designadas para serem controladas pelo software que as executa, tais como APPLETS (so pequenos programas escritos em Java que podem ser inseridos em documentos de hipertextos HTML1) que so carregados pela web e executados dentro de um browser2, SERVLETS, que so aplicaes para serem executados dentro de um servidor web, MIDLETs, que so aplicaes designadas para serem executados dentro de dispositivos mveis (telefones celulares, pagers, etc), XLETS, que so aplicaes para receptores de TV digital ou Set Top Boxes (dispositivo que estende a funcionalidade de um receptor de TV digital), entre outros [11] .

1 2

Linguagem de Marcao de Hipertexto. Programa que permite visualizar um documento criado em html.

27

4.2.2 O Arquivo Class


O formato de arquivo class um formato binrio, independente de hardware ou sistema operacional, e que representa o cdigo compilado a ser executado pela mquina virtual Java. Tipicamente armazenado em um arquivo com formato .class. O formato de arquivo .class define precisamente a representao de uma classe1 ou interface2, e contm as instrues da mquina virtual Java (bytecodes) e uma tabela de smbolos, bem como outras informaes adicionais [17]. A figura 4 ilustra um cdigo Java transformado para o bytecode aps a compilao.

Figura 4. Cdigo Java transformado para o bytecode aps a compilao.

4.2.3 A API de Java


A API ( Interface Programming Applications ) de Java consiste em um conjunto de bibliotecas de tempo de execuo que fornecem ao desenvolvedor de software uma forma padro de acessar os recursos do sistema [17]. A especificao da API de Java, bem como a mquina virtual, devem ser implementados para cada plataforma, o que garante independncia de
1

Um modelo para um objeto que contm variveis para descrev-los e mtodos para descrever seu comportamento. 2 Uma especificao do comportamento abstrato que as classes individuais podem implentar.

28

plataforma para os programas que rodam sobre os mesmos. Para acessar recursos nativos do sistema, a API Java invoca mtodo nativos. Em Java, h dois tipos dos mtodos: Java e nativo. Um mtodo Java escrito na linguagem Java, compilado para bytecodes , e armazenado em um arquivo .class. Um mtodo nativo escrito em alguma outra linguagem, tal como C, C++ ou assembly , e compilado para cdigo nativo de mquina de um processador particular. Os mtodos nativos so armazenados em uma biblioteca de vnculo dinmico cuja forma exata especfica da plataforma. Mtodos Java so independentes de plataforma; os mtodos nativos no so. Quando um programa Java chama um mtodo nativo, a JVM carrega a biblioteca de vnculo dinmico que contm o mtodo nativo e o invoca [17]. Esta API contribui no apenas com a independncia de plataforma, mas tambm com a segurana, pois os mtodos da mesma verificam se possuem permisso para efetuar qualquer ao potencialmente prejudicial (como por exemplo, apagar arquivos).

4.2.4 A Mquina Virtual Java (JVM)


A portabilidade dos aplicativos desenvolvidos em Java, dentro do conceito "escreva uma vez, execute em qualquer lugar" ( Write Once, Run Anywhere - WORA) sempre foi o principal slogan da linguagem e tornou Java a linguagem predileta para desenvolvimento de aplicaes para uso na Internet. Para que isto fosse possvel, foi definida uma "mquina virtual", denominada Mquina Virtual Java [10]. A mquina virtual Java um computador hipottico, implementado como uma aplicao de software em uma mquina real [15]. Ela executa instrues representadas em um cdigo de mquina independente de plataforma, denominado bytecode , que o cdigo gerado pelo compilador Java (javac). Portabilidade e segurana so caractersticas fundamentais da

plataforma Java obtidas pela existncia de uma mquina virtual para a qual os programas Java so feitos. 29

4.2.4.1 A Carga e execuo de classes


A atividade principal de uma JVM carregar classes e executar os bytecodes que elas contm. Os subsistemas principais de uma JVM so apresentados abaixo na figura 5. A JVM contm um class loader, ou carregador de classes, que carrega as classes oriundas do programa e da API de Java. Apenas as classes da API que so atualmente necessrias pelo programa em execuo so carregadas pela JVM

Figura 5. Subsistemas de uma JVM.

4.2.4.2 Class Loader (Carregador de Classes)


As atividades do class loader so compostas das fases de carga e linkagem , a qual divide-se em verificao, preparao e opcionalmente resoluo. Isto exemplificado no diagrama apresentado na figura 6.

Figura 6. Diagrama do class loader. 30

Durante a carga de uma classe, o class loader responsvel por encontrar uma representao binria para a mesma. Caso no seja possvel, um erro ser gerado. A fase de verificao checa se a estrutura binria da classe carregada bem formada, o carregador de classes tem essas informaes na hora em que se transfere um programa Java do disco local ou de um endereo remoto. Programas locais so considerados confiveis e tm menos restries. Programas remotos tm que passar pelo verificador, que ir dizer se o cdigo foi corrompido ou no, garantindo a no violao da integridade do sistema. A preparao envolve a criao dos campos estticos de classes ou interfaces e iniciao dos mesmos com seus valores padro. Na fase de resoluo, referncias simblicas so validadas e, tipicamente, substitudas com referncias diretas.

4.2.4.3 O Engenho de Execuo


Os bytecodes so executados dentro de um engenho de execuo, que pode variar em diferentes implementaes. A forma mais simples de engenho de execuo consiste na interpretao dos bytecodes um por vez. Outra opo a compilao just-in-time (JIT), onde os bytecodes so convertidos para cdigo nativo na primeira vez que o mtodo invocado; o cdigo nativo ser ento posto numa cache 1 e reutilizado na prxima vez que o mtodo for chamado, isso faz com que os programas escritos em Java no percam o desempenho para programas escritos em C ou C++. Uma outra opo a compilao adaptativa que converte para cdigo nativo apenas as reas de cdigo que so mais utilizadas no programa. O quarto tipo de engenho de execuo, conhecido como ahead-of-time (AOT), produz, a partir dos bytecodes , um programa executvel para a plataforma alvo. Por fim, pode adotar como alternativa a implementao da JVM inteiramente em hardware [17].

Memria de armazenamento temporrio.

31

A figura abaixo ilustra a execuo de uma Mquina Virtual Java em todos os passos.

Figura 7. Passos de Execuo de uma JVM.

4.3 Evoluo da Linguagem Java: do Lanamento at Java 2 4.3.1 Java Development Kit 1.0 (JDK)
Em 1995, a linguagem Java foi disponibilizada pela primeira vez para o grande pblico atravs da primeira verso do Java Development Kit (JDK 1.0). O JDK uma coleo de ferramentas de linha de comando para, entre outras tarefas, compilar, executar e depurar aplicaes Java. Alm disso, a existncia do interpretador Java e a sua biblioteca padronizada foram outros pontos a favor da linguagem. Nessa primeira verso do JDK 1.0, foram introduzidas vrias bibliotecas (pacotes 1 ). Java.lang e java.applet disponibilizam as classes que formam a base da linguagem. O pacote java.awt o que define as ferramentas para desenvolvimento de interfaces grficas. O pacote java.net fornece facilidades para acesso aos recursos da rede bem como para programao concorrente e distribuda.
1

Uma coleo de classes e interfaces.

32

Foram disponibilizados ainda os pacotes java.io e java.util. Java tambm permite a definio e controle de processos leves ( threads 1 ) atravs de elementos da prpria linguagem desde sua verso inicial. Nessa verso foram introduzidos vrios mecanismos importantes como RMI ( Remote Method Invocation ) e JNI ( Java Native Interface ). RMI usado em programas cliente-servidor e distribudos para acessar mtodos de objetos remotos. JNI permite o acesso a funes implementadas em outras linguagens, como C e C++, como se fossem mtodos Java, facilitando a integrao de sistemas legados [12].

4.3.2 Java Development Kit 1.1


A primeira verso serviu para consolidar a posio da linguagem no desenvolvimento da Web, mas existiam muitos pontos que podiam ser melhorados e vrios bugs (erros) a serem corrigidos. A verso JDK 1.1, lanada em 1997, trouxe uma srie de inovaes, dentre as quais destaca-se a integrao com bancos de dados, a qual foi facilitada com a introduo do Java Data Base Connection (JDBC). Com o JDK 1.1 tambm foi introduzido o conceito de modelo de componentes ( beans ) e de uma apresentao e comportamento da interface independente de plataforma (swing) [12].

4.3.3 Java 2

J com a maturidade alcanada, foi lanada a verso 1.2 do JDK em 1998, que posteriormente veio a ser chamada pela Sun de J2SDK(Java Software Development Kit 2) ou simplesmente Java 2. O J2SDK, foi dividido em duas partes, o JRE (Java Run-Time Environmen t) que o Ambiente de Execuo Java responsvel por fornecer as condies para executar as aplicaes Java e o SDK( Software Development Kit) o Kit de Desenvolvimento de Software, o qual superconjunto do JRE. O SDK contm

vrias linhas de execuo, rodando simultaneamente.

33

tudo que o JRE possui mais ferramentas adicionais como compiladores e depuradores responsveis pelo desenvolvimento das aplicaes Java. O mais importante, porm, foi que a plataforma Java foi dividida em trs edies a partir da verso Java 2. Cada uma dessas edies define um conjunto de ferramentas que podem ser usadas para uma determinada categoria de plataforma. Dentre outras coisas essas ferramentas contm: Mquinas Virtuais Java para uma ampla gama de dispositivos; Bibliotecas e APIs (Interfaces para Programao de Aplicaes)

especializadas para cada tipo de dispositivo; Ferramentas para desenvolvimento e configurao de dispositivos.

As trs edies so explicadas abaixo: Java 2 Standard Edition (J2SE): Java 2 Edio Padro, possui um conjunto de ferramentas que possibilita o desenvolvimento de aplicaes para desktop; Java 2 Enterprise Edition (J2EE): Java 2 Edio Corporarativa, um superconjunto distribudas, Pages), da J2SE, para
1

voltado o

para

aplicaes usando

corporativas outras

voltadas

servidor,

dentre

coisa, e

Enterprise JavaBeans

(EJB), aplicaes web (Servlets e JavaServer Object Request Broker Architecture )

CORBA 2 ( Common

XML 3 (Linguagem de Marcao Extensvel); Java 2 Micro Edition (J2ME): Java 2 Edio Micro, voltada para o desenvolvimento de aplicaes para dispositivos portteis. J2ME um subconjunto da J2SE, pois no apresenta todas as classes que J2SE apresenta.

1
2 3

uma arquitetura para o desenvolvimento e gerenciamento de aplicaes distribuda baseada em componentes. Tipo de arquitetura que permite as aplicaes distribudas comunicarem-se e trocarem informaes. uma maneira de representar as informaes.

34

Cada uma dessas edies apresenta um determinado grau de sofisticao em suas aplicaes, por exemplo, na edio J2EE o nmero de classes bem superior ao disponvel para J2ME. Com a diviso de Java em trs edies, foi possvel a evoluo da linguagem em diferentes direes, mostrando o verdadeiro esprito da linguagem. A figura 8 mostra o panorama de algumas plataformas que as edies contemplam.

Figura 8. A Plataforma Java 2.

4.4 O Processo da Comunidade Java (JCP)


O Processo da Comunidade Java ou Java Community Process (JCP) um frum criado pela Sun e por vrios parceiros da indstria de tecnologia, como forma de evoluir e manter a tecnologia aberta e disponvel para todos, permitindo que haja competio e inovao dentro do mundo Java, mas de forma a sempre garantir a compatibilidade e independncia de plataforma. Todas as tecnologias, desde servidores, como J2EE at os pequenos aparelhos que usam J2ME, passando pelo mundo dos desktops , todos tm em comum o fato de serem mantidos, modificados e evoludos atravs do Java Community Process [18]. 35

4.4.1 A Requisio de Especificao Java (JSR)


A especificao Java (JSR Java Specification Request ) um

documento, que diz o que um produto deve fazer, mas no diz como ele deve fazer. basicamente uma especificao que detalha toda a interface, e o que deve acontecer do ponto de vista do desenvolvedor que utiliza a especificao. A partir dessas informaes, qualquer fornecedor pode definir a sua implementao especfica [18]. Maiores informaes sobre o JCP podem ser encontradas em

http://www.jcp.org, onde, possvel conseguir uma lista de todo o JSRs que foram definidos ou esto no processo para serem definidos.

36

5. A Plataforma Java 2 Micro Edition (J2ME)

5.1. O que J2ME?


Java 2 Micro Edition (J2ME) a edio da linguagem Java para ser usada em dispositivos de computao portteis e mveis, que possuem as seguintes caractersticas: mobilidade, baixa capacidade de processamento e pouca memria disponvel, alimentao eltrica por baterias, pequenas reas de display , e limitados e variados mtodos de entrada e sada. Alguns exemplos destes dispositivos seriam os telefones celulares, pagers , PDAs(Assistentes Digitais Pessoais), Palms, entre outros [9]. J2ME no define um novo tipo de Java, mas adapta sua plataforma para que seja possvel executar programas em dispositivos, como os citados anteriormente. Sendo assim, todo programa desenvolvido para J2ME poder ser executado sem nenhum problema nas edies Standard (J2SE) e Enterprise (J2EE), assumindo que as APIs usadas estejam presentes para estas plataformas.

5.2. O que J2ME oferece?


Essencialmente, a plataforma J2ME busca criar um conjunto de conceitos para homogeneizar o desenvolvimento em pequenos dispositivos, transparecendo ao desenvolvedor todos os detalhes proprietrios do fabricante como arquitetura de hardware e sistema operacional do dispositivo sobre o qual esteja trabalhando. No passado, todo dispositivo era oferecido com um conjunto fixo de funcionalidades cuja programao era realizada exclusivamente pelo fabricante, sobre uma tecnologia altamente proprietria. Atravs de J2ME, torna-se possvel desenvolver, atualizar e instalar novas aplicaes segundo as necessidades particulares de cada usurio [6]. Alm disso, possvel 37

depois de feito o download da aplicao para o dispositivo, trabalhar conectado rede ( on-line ) ou desconectado da rede ( off-line ), no caso de se estar desconectado da rede, quando a rede estiver disponvel pode-se fazer a sincronizao 1 dos dados e das informaes utilizadas anteriormente. As aplicaes para a plataforma J2ME vo desde jogos, aplicaes que acessam banco de dados, etc. A figura 9 ilustra como novas aplicaes podem ser baixadas para os dispositivos.

Figura 9. Download de aplicaes J2ME. Utilizar Java na programao de pequenos aparelhos significa ganhar todas as vantagens que a tecnologia traz consigo:

Dinamismo: novas aplicaes podem ser baixadas da rede e Segurana: etc, garantem verificao a de classes, das forte tipagem, garbage pelo

instaladas no dispositivo a qualquer tempo;

colection

proteo

informaes

carregadas

dispositivo. Dados de uma aplicao no so acessveis por outras aplicaes; Portabilidade: aplicaes podem ser portadas entre dispositivos Orientao a Objetos: alto nvel de abstrao do cdigo, de diferentes fabricantes e de diferentes tipos;

modularizao e reusabilidade.
1

Determinao da ordem (seqncia) correta de execuo dos processos.

38

5.3. Os Conceitos de Configuraes e Perfis


Existe uma diversidade de dispositivos, no qual estes apresentam muitos pontos em comum, mas diferenciam-se em suas formas, funcionalidade e caractersticas. Existem tambm dispositivos com uma grande variedade de capacidade de processamento, memria e interao com o mundo exterior (interface com o usurio, mtodos de entrada e sada de informaes e dados). Afirmar que uma tecnologia serve para todos os dispositivos da mesma famlia, tal como nas outras edies de Java, no funciona nos dispositivos de recursos limitados devido a todas essas diferenas [7]. Para conceitos suportar essenciais esse tipo de diversificao pela dos dispositivos, J2ME que dois so:

foram

definidos

edio

Configuraes e Perfis . Esses dois conceitos sero detalhados a seguir.

5.3.1 Configuraes
Uma configurao define uma plataforma mnima para um grupo de dispositivos com caractersticas similares, tanto na memria quanto no poder de processamento. Sendo assim, uma configurao define as caractersticas suportadas tanto pela prpria linguagem de programao Java, pela mquina virtual e suas bibliotecas de classes e APIs, as quais um determinado fabricante pode esperar que estaro disponveis em todos os dispositivos de uma mesma categoria [8]. Atualmente existem duas configuraes definidas e validadas pela Sun : Configurao para dispositivos conectados (CDC). A CDC designada para dispositivos fixos um pouco maiores, com pelo menos dois megabytes de memria disponvel, conectividade com redes, possibilitando estabilidade e grande largura de banda. Usa a mquina virtual Compact Virtual Machine (CVM) que uma mquina virtual completa e projetada para os dispositivos que necessitam de toda a funcionalidade presente na edio J2SE (JVM), apresentando porm 39

bem

menos

requisitos

de

memria,

tendo

assim

suporte

para

implementao completa de sua especificao. Alguns exemplos desses dispositivos so: televiso com Internet, sistema de navegao de carros, entre outros. Configurao para dispositivos com limites de conexo (CLDC). A CLDC designada para dispositivos mveis, pequenos e com grande restrio de recursos, conectividade a algum tipo de rede, em geral sem-fio. Conexo intermitente e banda limitada. Usa uma mquina virtual reduzida em relao mquina virtual clssica, que a KVM ( Kilo Virtual Machine ). A KVM ser apresentada mais adiante. pagers e PDAs so alguns dos dispositivos telefones celulares,

pertencentes a CLDC. A CLDC ser detalhada posteriormente.

5.3.2 Perfil
Um perfil define uma plataforma Java para um segmento vertical especfico do mercado, ou seja, para uma categoria de dispositivos. O perfil a camada mais visvel para usurios e desenvolvedores de aplicaes. Define o conjunto mnimo de interfaces de programa da aplicao (APIs) disponvel em uma classe particular dos dispositivos representando um segmento de mercado vertical particular. Os perfis so implementados para uma configurao particular (CLDC ou CDC). As aplicaes so escritas para um perfil especfico sendo, deste modo, portteis para qualquer dispositivo que suporte aquele perfil. Um dispositivo pode sustentar mltiplos perfis. Existem vrios perfis como, por exemplo, o Perfil Fundamental ( Foundation Profile ), complementa a configurao CDC e o Perfil do Dispositivo de Informao Mvel (MIDP), para dispositivos de informao mveis que complementa a configurao CLDC [7]. Neste trabalho dar-se- nfase ao perfil MIDP que ser detalhado mais adiante. A introduo de perfil facilita a portabilidade de aplicaes dentro de uma mesma categoria, mas limita tal caracterstica para perfis diferentes. 40

5.4 As Mquinas Virtuais J2ME


Uma Mquina Virtual Java o fundamento para a Tecnologia Java, permitindo que aplicaes escritas na linguagem de programao Java sejam portveis diferentes. A mquina virtual faz a ponte entre a aplicao e a plataforma utilizada, convertendo o bytecode da aplicao em cdigo de mquina apropriado para o hardware e sistema operacional utilizados. Alm de gerenciar a execuo dos bytecodes da aplicao, a mquina virtual lida com tarefas relacionadas administrao da memria do sistema, provendo segurana contra cdigo malicioso e administrando as threads dos programas. A mquina virtual Java usada na verso standard (padro) e na verso enterprise (corporativa) foi desenvolvida para ser utilizada em sistemas desktop e servidores respectivamente. Em J2ME deve-se utilizar uma mquina virtual Java que seja apropriada para os dispositivos como telefones celulares, pagers e PDAs que possuem tamanho de memria reduzido e outra para dispositivos com um poder um pouco maior de memria tais como: set-top boxes , sistemas de navegao de carros, pcs handhelds e outros [8]. Em virtude disso, duas mquinas virtuais foram projetadas. Uma para ser utilizada na configurao CLDC, Kilo Virtual Machine (KVM), e outra para a configurao CDC, a Compact Virtual Machine (CVM). Ambas as mquinas virtuais, sero apresentadas a seguir. atravs de ambientes de hardware e sistemas operacionais

5.4.1 A mquina virtual K (KVM)


A KVM ou Kilo Virtual Machine a mais nova e otimizada mquina virtual Java para dispositivos com limites de restries. Possuindo cerca de 40 a 80K de memria, tornou-se bastante apropriada para dispositivos como pagers, telefones celulares e PDAs [9]. 41

A KVM pode executar em qualquer sistema que possua um processador de 16 ou 32 bits e um total de memria de 160 a 512K. Alm disso, no suporta tipos de dados longos e de ponto flutuante. Seu projeto foi baseado em algumas importantes consideraes, incluindo o tamanho reduzido para conservar um melhor espao em memria quanto possvel (tanto em termos de armazenamento quanto execuo) e a capacidade de rodar em processadores de pequeno poder computacional [9]. A meta do projeto para a construo da KVM era o de criar uma mquina virtual compacta que mantivesse os aspectos mais importantes da linguagem de programao Java, e que conseguisse executar em um dispositivo com recursos limitados, com s algumas dezenas ou centenas de kilobytes de memria disponvel (da vem o K, de kilobyte s) [9]. Mais especificamente, a KVM projetada para ser: Pequena e com baixo requisito de memria; Enxuta e portvel; Modular e customizvel; To completa e rpida quanto possvel.

A KVM implementada na linguagem C, por isso pode ser portvel para outras plataformas que contenham um compilador C.

42

5.4.2 A mquina virtual C (CVM)


A suporta. mquina virtual esta C foi desenvolvida virtual para adicionar quase maior as

funcionalidade aos dispositivos da segunda categoria dos quais a KVM no Praticamente mquina engloba todas caractersticas de uma mquina virtual Java convencional, s que de forma mais otimizada. Eis algumas caractersticas da CVM: Melhor desempenho em aplicaes real time 1 ; Coleta automtica de Lixo ( garbage collection ) otimizada; Mapeamento direto de threads Java para threads nativos; Execuo de classes diretas da memria ROM; Portabilidade; Sincronizao com um reduzido nmero de instrues;

Os conceitos de Perfil, Configuraes e Mquinas Virtuais formam as camadas da Arquitetura J2ME, mostrada na Figura abaixo.

Figura 10. Arquitetura J2ME.

Aplicaes que necessitam de um tempo de resposta dentro de certas restries.

43

5.5 A Configurao para Dispositivos com Limite de Conexo ( CLDC)


A configurao CLDC consiste de uma mquina virtual, a KVM, e um conjunto de bibliotecas de classes para serem utilizados dentro de um perfil definido pela indstria, tal como o MIDP [3]. A CLDC foi projetada pela Sun para ser uma configurao padro, portvel, com requisitos mnimos, para ser utilizada em dispositivos mveis, pequenos e com grande restrio de recursos, tais como pagers , telefones celulares, assistentes pessoais digitais e terminais de ponto de venda.

Os dispositivos que se enquadram nesta configurao apresentam como caractersticas: Processadores de 16 ou 32 bits; Requerem de 160Kb a 512Kb de memria total disponvel para a plataforma Java; Baixos consumos de potncia, freqentemente so dispositivos operados por bateria; Conectividade com alguma espcie de rede, freqentemente com uma conexo intermitente, sem fio e com largura de banda limitada (9600bps ou menos). A especificao da CLDC no impe nenhum requisito de hardware especfico, a no ser o requisito de memria de 160Kb-512Kb. Mais especificamente: 128Kb de memria no voltil para a mquina virtual e bibliotecas CLDC; Pelo menos 32Kb de memria voltil para o ambiente de execuo e objetos alocados. A CLDC abrange as seguintes reas: Caractersticas da mquina virtual e da linguagem; Entrada/sada; 44

Acesso rede; Segurana; Internacionalizao; Bibliotecas de classes e APIs suportadas (java.util.*, java.lang.*) .

As seguintes reas no so cobertas pela CLDC, devendo ser abrangidas por perfis montados no topo da CLDC: Interface com o usurio; Manipulao de eventos; Gerenciamento do ciclo de vida da aplicao (instalao, remoo, etc.).

5.5.1 Caractersticas Edition )

eliminadas

da

J2SE

(Java

Standard

Algumas caractersticas foram eliminadas da JVM que suporta CLDC (KVM) porque as bibliotecas de classes includas na CLDC so mais limitadas que as presentes na edio padro de Java. So elas: Suporte a operaes de ponto flutuante; Finalizao; Java native interface (JNI); Class loaders definidos pelo usurio; Reflexo; Grupos de threads e daemon threads ; Referncias fracas.

5.5.2 Processo de Verificao


CLDC requer que uma Java Virtual Machine seja capaz de identificar e rejeitar arquivos invlidos. Entretanto, sabendo que o processo padro de validao e verificao definido pela Sun para a edio J2SE bastante 45

consumidor de memria, e que esta tcnica se torna invivel para os dispositivos menores, a CLDC define um mecanismo alternativo para tal finalidade. Assim, na configurao CLDC, foi adotada uma estratgia dividida em duas partes: pr-verifio e verificao final . A primeira etapa, a prverificao, feita fora do dispositivo aonde a aplicao vai executar, normalmente na mquina onde as classes foram compiladas. Numa segunda etapa, j no dispositivo alvo, uma nova verificao, bem mais eficiente feita para poder validar o arquivo. Em seguida, o programa est pronto para ser executado pela mquina virtual Java.

Figura 11. Passos para a execuo de programas em dispositivos mveis.

5.5.3 APIs suportadas


As APIs da CLDC pode ser dividida em duas categorias: A primeira delas so subconjuntos da edio padro de Java (J2SE): java.lang classes fundamentais da linguagem de programao Java; java.io entrada/sada atravs de streams (conjuntos) de dados; 46

java.util variadas classes utilitrias.

A segunda categoria especfica da CLDC: javax.microedition.io classes para conexes genricas.

5.6 O Modelo MIDP


O Perfil do Dispositivo de Informaes Mveis (MIDP) o primeiro perfil disponvel para a plataforma J2ME. A combinao do CLDC e do MIDP fornece um ambiente completo de desenvolvimento para a criao de aplicaes em celulares e pagers [21]. Aplicaes que executam em dispositivos que suportam MIDP so denominados MIDlets. O MIDP foi feito para executar em cima da camada de configurao CLDC.

5.6.1 Requisitos mnimos de Hardware para um dispositivo MIDP


Os MIDs (Dispositivos de Informaes Mveis) MIDP (alm daquelas que so requeridas pelo CLDC): Display: Input: One handed keyboard Two handed keyboard Touch Screen; (Tela sensvel ao toque) Tamanho da tela: 96x54 pixels; Profundidade: 1 bit; Formato do pixel (proporo de aspecto): 1:1; devem possuir as

seguintes caractersticas mnimas de hardware para se enquadrar no perfil

Memria: 128Kbytes para os componentes MIDP; 8Kbytes para dados das aplicaes; 47

32Kbytes para o JAVA em tempo de execuo;

Rede: Duplex, sem fio, possivelmente intermitente (sem conexo permanente) e com largura de banda limitada.

5.6.2 Requisitos mnimos de Software para um dispositivo MIDP


Os MIDs possuem uma grande variedade de softwares de sistema. Por essa razo, o MIDP estabeleceu alguns requisitos mnimos de sistema [21]: Um kernel para controlar o hardware, que possua uma entidade escalonvel para rodar a Mquina Virtual Java; Um mecanismo para ler e escrever na memria para suportar as APIs; Acesso leitura e escrita rede sem fio; Capacidade de escrever num display bit-mapped; Um mecanismo para capturar entrada de um input device;

5.6.3 As APIs do MIDP


Por ser designado para operar sobre uma configurao (CLDC), o perfil MIDP agrega os pacotes citados na descrio da CLDC, a saber: java.lang classes fundamentais da linguagem de programao Java; java.io entrada/sada atravs de streams de dados; java.util variadas classes utilitrias; javax.microedition.io classes para conexes genricas. 48

O MIDP herda a conectividade do CLDC e suporta um subconjunto do HTTP (Protocolo de Transferncia de HiperTexto) , que pode ser implementado com protocolos IP1 (TCP/IP) e no-IP (WAP2 e i-mode3). A interface HttpConnection possui funcionalidades que permitem a realizao de funes especficas do HTTP. Aparelho como: telefones celulares, pagers e PDAs, que implemente MIDP devem suportar o HTTP 1.1, requisies HEAD, GET, POST e FORMS [21]. Em adio, foram acrescentados outros pacotes especficos do perfil MIDP, so eles: javax.microedition.lcdui classes utilizadas para a implementao de interfaces com o usurio para aplicaes MIDlet. Elas so constitudas de APIs de baixo nvel e de alto nvel. A API de baixo nvel fornece pouca abstrao e designada para aplicaes que necessitam ter controle preciso sobre o posicionamento e atuao dos componentes grficos, alm de necessitar manipular eventos de baixo nvel. Esta API implementada pela classe Graphics 4 . importante salientar que a utilizao da API de baixo nvel no garante a portabilidade da aplicao porque elas acessam detalhes que so especficos de um dispositivo em particular. A API de alto nvel designada para aplicaes que executam em dispositivos nos quais a portabilidade importante. Para conseguir portabilidade, a API de alto nvel apresenta algumas limitaes. Por exemplo, aplicaes utilizando API de alto nvel no podem acessar entradas de dispositivos, como teclas especficas.

Protocolo projetado para permitir a interconexo de redes de computadores que utilizam tecnologia de comutao de pacotes. 2 Padro para aplicaes de ambientes sem fio desenvolvido pelo WAP Frum. 3 Arquitetura para aplicaes de ambientes sem fio da operadora Japonesa NTT DoCoMo. 4 Esta uma classe bsica usada para desenhar objetos no display do dispositivo.

49

javax.microedition.rms MIDP fornece um mecanismo para que os MIDlets armazenem e recuperem dados de forma persistente. o chamado Record Management System (RMS). A API RMS contm as classes necessrias para implementar uma base

de dados de armazenamento persistente no dispositivo. Essa base de dados limitada em suas potencialidades para armazenar e recuperar a informao devido s limitaes do tamanho do dispositivo. A classe RecordStores localizada no pacote javax.microedition.rms uma coleo de registros que permanece o mesmo durante mltiplas chamadas do MIDlet. A plataforma responsvel por manter a integridade desses registros, mesmo aps dispositivo sofrer reboots ou trocas de baterias.

javax.microedition.midlet define aplicaes MIDP (MIDlets) e as interaes entre estas aplicaes e o ambiente no qual a aplicao executa. O pacote de javax.microedition.midlet contm a classe MIDlet . Esta e fornece o mtodo

classe

executa

ciclo

de

vida

do

MIDlet

getAppProperty(key) para recuperar informao a partir das propriedades da aplicao definidas em um arquivo jad, que contm a descrio de algumas das caractersticas da mesma. O MIDP define um modelo de aplicao que permite que os recursos limitados dos MIDs sejam compartilhados por vrias aplicaes, as MIDlets. Este compartilhamento vivel mesmo com os limitados recursos e framework de segurana do MID, pois eles so obrigados a compartilhar classes e esto sujeitos a um conjunto de polticas e controles que permitem isso. Os elementos de uma MIDlet Sute( um ou mais MIDlets agrupados) formam software de gerenciamento de aplicao , do qual se espera, a 50

implementao

de

funes

necessrias

pelos

usurios

para

instalar,

selecionar, rodar e remover midlets, estes elementos so: Ambiente de Execuo : compartilhado por todas as MIDlets que esto na mesma MIDlet suite, e qualquer MIDlet pode interagir com outra que esteja no mesmo pacote. Empacotamento do MIDlet Suite : uma ou mais MIDlets podem ser empacotadas de um num nico arquivo seu JAR, que contm arquivo as classes da compartilhadas e os arquivos de recursos utilizados pelas MIDlets, alm manifesto descrevendo contedo( Descritor Aplicao Java - JAD). Existem vrios atributos pr-definidos que permitem identificao de uma MIDlet, como nome, verso, tamanho de dados, descrio, etc. Descritor de Aplicao : utilizado para gerenciar a MIDlet e usada pela prpria MIDlet para atributos de configurao especfica. O descritor permite que seja verificado que a MIDlet adequada ao aparelho antes de se carregar todo o arquivo JAR da MIDlet suite. Ele tambm permite que parmetros sejam passados para as MIDlets sem modificar os arquivos JAR. Ciclo de Vida da Aplicao : uma MIDlet no deve possuir um mtodo public void static main() . O software de gerenciamento de aplicao deve suprir a classe inicial necessria pelo CLDC para iniciar a MIDlet. Quando uma MIDlet instalada, ela mantida no aparelho e fica pronta para uso. Quando executada, uma instncia criada atravs de seu construtor pblico sem argumentos, e seus mtodos so chamados para mudar pelos estados da MIDlet. Quando ela terminada, ou destruda, os recursos utilizados por ela podem ser recuperados, incluindo os objetos criados e suas classes. O software de gerenciamento de aplicao disponibiliza um ambiente no qual a MIDlet instalado, iniciado, parado e desinstalado. Tambm 51

responsvel por manusear os erros que podem ocorrer durante alguma destas etapas. O compartilhamento de dados e outras informaes entre MIDlets so controlados pelas APIs individuais e suas implementaes. Assim, por exemplo, os mtodos da API de um sistema de gerenciamento de registros devem ser especificados para manusear com dados que podem ser compartilhados com outras MIDlets. O Software de Gerenciamento de Aplicao pode administrar as atividades de mltiplos MIDlets dentro de um ambiente em tempo de execuo ( runtime ). Alm disso, o MIDlet pode iniciar sozinho algumas mudanas de estados e notificar para o software de gerenciamento de Aplicao que estas mudanas ocorreram.

52

6. Tcnicas e Diretrizes para o Desenvolvimento de Aplicaes Sem Fio


Desenvolver software para as plataformas de servidores e desktops uma tarefa diferente quando se for comparada ao desenvolvimento de aplicaes para dispositivos mveis. Sistemas para servidores e dektops utilizam plataformas que possuem grande quantidade de memria e alto poder de processamento. Quando se desenvolvem aplicaes para dispositivos mveis, novos obstculos surgem devido aos recursos limitados disponveis nos dispositivos, como tamanho da tela reduzida, pouca memria disponvel, e baixo poder de processamento. Alm disso, outros obstculos surgem em virtude dos ambientes que os dispositivos operam; mobilidade e redes sem fio que tipicamente oferecem largura de banda mais baixa e menos confiabilidade no trfego em comparao com as redes com fio [11]. Essas limitaes exigem que a construo de aplicaes sem fio seja bem planejada em relao interface com o usurio, que deve ser simples e intuitiva. Alm disso deve-se administrar a utilizao da memria de forma econmica e eficiente, diminuir o tempo de interao com o sistema, para que no se utilize em demasia a bateria do dispositivo e avaliar as condies ambientais em que os dispositivos mveis operam, devido baixa largura de banda e segurana na transmisso dos dados.

6.1 Restries em Aplicaes Sem Fio

O crescimento do mercado de dispositivos sem fio est estimulando esforos na adaptao quase total de qualquer tecnologia j desenvolvida aos computadores de mesa ( desktops ) para que estejam disponveis aos dispositivos mveis. Essa adaptao no uma tarefa trivial. As aplicaes sem fio devem trabalhar dentro das restries dos dispositivos, tais como:

53

Pouca memria: os dispositivos como telefones celulares e pagers possuem memrias limitadas, obrigando a considerar o gerenciamento de memria um fator primordial.

Baixo poder de processamento: os dispositivos de sem fio tambm possuem uma potncia de processamento limitada (variando de 32Kbytes a 64Mbytes).

Entrada de dados: as capacidades de entrada so limitadas. A maioria dos telefones celular dispe de uma entrada com doze botes: sendo dez nmeros e alguns smbolos especiais como (*) e (#), como mostrado na Figura 12. J Palmtops possuem entrada atravs de canetas ou teclados alfanumricos.

Figura 12. Teclas de um telefone celular. Tela: O vdeo pode ter uma dimenso pequena (96 pixels de largura por 54 pixels comprimento) e monocromtico. A quantidade de informaes que se pode escrever em uma tela de um telefone celular bastante limitada. fcil perceber as limitaes dos dispositivos, mas, alm disso, no se pode deixar de mencionar em que condies esses dispositivos operam: As Redes Wireless possuem baixa largura de banda. As Redes Wireless esto sujeitas a mais erros do que a redes com fio. A grande mobilidade dos dispositivos pode gerar perda da conexo.

54

6.2 Desafios para o desenvolvimento sem fio


Como apresentados aplicao. mencionado alguns dos anteriormente, principais desenvolver que os aplicativos desenvolvedores para de

dispositivos sem fio uma tarefa desafiadora. Na seo abaixo sero pontos aplicaes sem fio devem estar atentos antes de iniciar a construo de uma

6.2.1 Transmisso de Erros


As mensagens enviadas sobre conexes sem fio esto sujeitas a interferncia e demora, isso pode alterar o contedo recebido pelo usurio do dispositivo de destino ou pelo servidor. necessrio assegurar que o aplicativo esteja preparado para resolver estes problemas. Erros de transmisso podem ocorrer em qualquer ponto de uma transmisso sem fio e em qualquer ponto quando se envia ou recebe uma mensagem. Eles podem acontecer depois que um pedido foi iniciado, no meio da transmisso, ou depois que uma resposta foi enviada. Os protocolos de rede de sem fio so capazes de descobrir e corrigir alguns erros, mas preciso que o programador faa estratgias para tratamentos de erros que so provveis de acontecer [11].

6.2.2 Latncia
Latncia o tempo que uma mensagem leva at chegar ao seu destino. A Latncia principalmente afetada pela natureza de cada sistema que emite a mensagem, e pelo tempo de processamento necessrio em cada n de origem at o destino.

importante lembrar que uma mensagem pode ser entregue para um usurio muito tempo depois de ser enviada. Uma demora longa poderia ser devido a problemas de cobertura ou erros de transmisso ou o dispositivo do 55

usurio pode estar desligado ou ter ficado sem a bateria. Alguns sistemas continuam tentando transmitir a mensagem at que seja entregue. Outros sistemas armazenam a mensagem que no pode ser enviada em determinado momento, e quando o dispositivo for reconectado rede, a mensagem enviada. A grande preocupao evitar que sejam enviadas informaes desatualizadas.

6.2.3 Segurana

Quaisquer informaes transmitidas sobre redes sem fio esto sujeitas a interceptaes. Algumas informaes podem ser confidenciais, como nmeros de carto de crdito e outras informaes pessoais. Para prover uma soluo de segurana fim a fim, deve-se implementar a segurana nas duas partes, tanto no cliente quanto no servidor, e estar assegurado que os sistemas intermedirios, tambm sejam seguros.

Uma soluo para utilizar quando as informaes manipuladas so altamente confidenciais seria a criptografia, onde o remetente codifica os dados antes de transmiti-los pela rede sem fio, e o receptor autorizado recebe os dados codificados e os decifra usando uma tecla especificada.

As

aplicaes

de

Comrcio

Eletrnico

utilizam

Protocolo

de

Transferncia de Hipertexto Seguro (HTTPS), que o HTTP sobre a Camada de Sockets Seguros 1 (SSL). O SSL trabalha de forma eficiente com comrcio eletrnico e existem expectativas que ele seja bastante utilizado pelo mcommerce 2 tambm. Para J2ME j existe uma verso do SSL para dispositivos mveis chamado kSSL( Kilo Safe Sockets Layer) .

1 2

Protocolo de segurana da Web criado pela Netscape. Comrcio Eletrnico feito atravs de dispositivos mveis.

56

6.3 Diretrizes para o Desenvolvimento de Aplicaes Mveis


Nesta seo, elas: Ambiente: Fazer uma pesquisa sobre o ambiente em que a aplicao ser utilizada, antes de comear o desenvolvimento da aplicao. Deve-se primeiro saber as necessidades dos usurios em potenciais, os requisitos impostos pelas redes e em que plataformas o aplicativo funcionar (telefones celulares, palmtops , etc); Dividir as Tarefas da Aplicao: preciso pensar cuidadosamente quanto deciso de quais operaes devem ser feitas no servidor e quais devem ser feitas no dispositivo mvel. MIDlets permitem localizar muitas da funcionalidades do aplicativo no dispositivo, servidor, process-los e exibi-los diminuindo o trfego da rede; Representao dos dados: Os dados podem ser representados de muitas formas, uns mais compactos do que outros. Deve-se considerar representaes disponveis e escolher aquelas que exigem menos bits para ser transmitidos. Por exemplo, nmeros normalmente so muito mais compactos se transmitidos na forma binria do que se transmitidos na forma de string; Latncia da Mensagem: Em algumas aplicaes, pode ser possvel fazer outras tarefas enquanto uma mensagem est sendo processada. Se a demora considervel, importante manter o usurio informado do progresso da transmisso. Simplicidade da Interface: Manter a interface do aplicativo simples e intuitiva, de forma que o usurio raramente precise consultar o manual do usurio para fazer uma tarefa. importante reduzir a quantidade de informaes exibidas no dispositivo; apresentar as seqncias das entradas do usurio com um nmero mnimo de acionamento de boto ou teclas; oferecer sempre que possvel listas de seleo para o usurio. 57 podem recuperar dados do na tela do dispositivo localmente. Esta sero apresentadas algumas diretrizes teis durante o

processo de desenvolvimento de aplicaes para dispositivos mveis [21]. So

abordagem reduz a interao com a rede sem fio, conseqentemente

6.4 Tcnicas para otimizar a performance em aplicaes J2ME

Aplicaes utilizadas em dispositivos mveis devem ser de rpida execuo, pois quanto menor o tempo de execuo, menos tempo de uso da bateria, acarretando uma maior satisfao para o usurio [11]. Nesta seo so apresentadas algumas tcnicas de programao para aumentar a performance de aplicaes J2ME. Sempre que possvel utilizar variveis locais ao invs de variveis de classes, assim o acesso aos atributos de objeto mais rpido com o uso das variveis locais; Tentar diminuir as chamadas de mtodos, pois quando um mtodo chamado, a mquina virtual java aloca um novo nodo da pilha de execuo, isso faz com que a memria seja sobrecarregada; Minimizar a criao de objetos, pois quando um objeto criado, na maioria das vezes ele ser destrudo, isso leva uma diminuio da performance da aplicao. Para evitar a criao de muitos objetos devese utilizar objetos que possam ser reciclados ou mantidos na memria o mximo de tempo possvel;

Tentar no concatenar strings, a concatenao com o operador + leva a


criao de um novo objeto e por conseqncia utiliza mais a memria e o processamento; Evitar a sincronizao, se um mtodo demora algumas fraes de segundos para executar, deve-se colocar a sua chamada em uma thread em separado.

58

7. Estudo de Caso 7.1- Aplicao Agenda Telefnica


A aplicao desenvolvida corresponde a uma agenda telefnica que utiliza a plataforma J2ME, ou mais especificamente, a configurao CLDC e o perfil MIDP, vistos anteriormente. Trata-se de uma aplicao simples, que pode ser utilizada em pagers ou em telefones celulares que apresentam as seguintes funcionalidades: Adicionar um contato; Excluir de um contato; Pesquisar um contato; Sair da Agenda.

Atravs da notao em UML, o diagrama de casos de uso abaixo (Figura 13), mostra as funcionalidades da Agenda:

Figura 13. - Diagrama de Casos de uso

59

7.2 Estrutura da Aplicao


Esta aplicao utiliza o pacote javax.microedition.rms, Record

Management System ,

que contm as classes necessrias para implementar

uma base de dados de armazenamento persistente no dispositivo. Essa base de dados chamada de persistente, porque mesmo quando o dispositivo sofre reboots , troca de bateria ou desligamentos, os dados gravados permanecem inalterados. A base limitada em suas potencialidades para armazenar e recuperar a informaes devido s limitaes do dispositivo.

7.3 O Processo de desenvolvimento


Para o desenvolvimento das aplicaes, foi utilizado o J2ME Wireless Toolkit 1.0.4, que um Kit de Desenvolvimento Java (JDK) para J2ME, proporcionando aos desenvolvedores de aplicaes um ambiente para emular dispositivos, ferramentas, documentao e exemplos necessrios para o desenvolvimento de aplicaes MIDP/CLDC. O KtoolBar, que vem junto com o J2ME Wireless Toolkit, um ambiente de desenvolvimento mnimo que apresenta uma interface grfica de usurio (GUI), para compilar e executar os aplicativos MIDP, porm ele no constitui um IDE devido a no apresentar edio e depurao da aplicao, caractersticas obrigatrias em um IDE. A Figura 14, mostra o KtoolBar.

Figura 14. KtoolBar As aplicaes podem ser desenvolvidas com um simples editor de texto com os arquivos possuindo a extenso .java ou com ambientes de desenvolvimento integrados (IDEs), compatveis com o J2ME Wireless 60

Toolkit , que automatizam grande parte do desenvolvimento. Utilizando-se o Sun One 4 Mobile Edition 4.0, ambiente de desenvolvimento que se integra com o J2ME Toolkit para simplificar a codificao e depurao na construo de MIDlets. A figura 15 mostra o Sun One 4 Mobile Edition 4.0 integrado com o emulador.

Figura 15. - Ambiente de Desenvolvimento Sun One Mobile Edition 4.0

61

7.4 Resultados Obtidos


A seguir, so apresentadas as principais telas da aplicao

desenvolvida, para isso utilizamos um dos emuladores que fazem parte do J2ME Wireless Toolkit . Trata-se de um dispositivo que simula um telefone celular (Figura 16 e Figura 17).

Tela Principal

Adicionar nome Figura 16. Telas da aplicao.

Confirmao

62

Pesquisar nome

Resultado da pesquisa Figura 17. Telas da aplicao.

Deletar nome

63

8. Consideraes Finais e Trabalhos Futuros

Neste trabalho, foi abordada uma tecnologia muito importante para a consolidao do paradigma da computao mvel, a linguagem J2ME. Dentre as muitas questes trazidas pela computao mvel, uma questo fundamental seria os fatores que um desenvolvedor deve preocupar-se na implementao de uma aplicao para um sistema mvel. Um sistema mvel tem diversas peculiaridades que o torna diferente de um sistema distribudo comum. Dentre as principais restries esto: alto ndice de perda de pacotes, baixa largura de banda, alta latncia de acesso aos dados, dispositivos com pouca capacidade de processamento, armazenamento e energia, dentre outras questes. Assim, J2ME auxilia o desenvolvimento de aplicaes mveis, tentando trabalhar da melhor forma possvel, para que as restries da computao mvel no tornem as aplicaes inviveis para o uso. As sugestes para trabalhos futuros abrangem os seguintes segmentos: Aplicaes empresarias : Relatrio de Despesas: Todas as empresas tm seus representantes externos, especialmente o pessoal de vendas. Essas pessoas esto constantemente em movimento. O relatrio de despesas pode ser integrado em um aplicativo disponibilizado em um Palm; Gerenciamento de Projetos: Desenvolvimento de gerenciadores de projetos portteis que possam ser executados de um PDA; Sade: Acompanhamento mdico: Estes tipos de aplicaes podem ser utilizados papel; para armazenar e processar informaes sobre pacientes do hospital usando dispositivos portteis em vez de

64

Transporte: Aplicaes que informem ao usurio de transporte urbano, por exemplo, qual a linha de nibus que presta servios a um determinado bairro e quais os horrios dos coletivos. Informaes que poderiam ser mostradas no visor de um telefone celular;

Acesso a banco de dados remotos: Aplicaes que permitam ao usurio a partir de seu dispositivo de informao mvel acessar os dados residentes em servidores remotos;

Entretenimento: Desenvolvimento de interfaces para jogos, que podem ser baixados ou atualizados da Internet diretamente para os dispositivos de informao mveis.

65

9. Referncias

[1]

Brief

History

of

the

Green

Project.

Disponvel

em:

http:

//java.sun.com/people/jag/green/index.html. [2] Cesta, A. Tutorial: A Linguagem de Programao Java. Instituto de

Computao, 1996. Disponvel em: http://www.dcc.unicamp.br/~aacesta. [3] Java Connected, Limited Device Configuration. Specification Version 1.0a 2 Platform Micro Edition, 2000. Disponvel em:

http://www.sun.java.com/. [4] Dias, K. L; Sadok, D. F.H. Internet Mvel: Tecnologias, Aplicaes e

QoS. XIX Simpsio Brasileiro de Redes de Computadores, 2001. [5] Dornan, A. Wireless Communications O Guia Essencial de

Comunicao sem Fio. Editora Campus, 2001. [6] Gomes, A. Tutorial: J2ME Viso Geral. Disponvel em:

http://www.mundooo.com.br/ [7] Gupta, V. Dass, A. Chauhan, Y. Cracking the Code Wireless

Programming with J2ME. Hungry Minds, Inc, 2002. [8] Introduction to Java 2 Platform Micro Edition and KVM. Disponvel

em: http://www.sun.java.com. [9] Java 2 Platform Micro Edition (J2ME ) Technology for Creating Mobile

Devices. White Paper. Sun, 2000. Disponvel em http://www.java.sun.com/

66

[10] 2000. [11]

Lisboa, C. PicoJava :

A Mquina Java Real. Disponvel em:

http://www.inf.ufrgs.br/procpar/disc/cmp157/trabalhos/sem2000-2/tf/lisboa,

Mahmoud,

Q.

H.

Wireless

Software

Design

Techniques

What every wireless software developer should know. May 2002. Disponvel em: http://wireless.java.sun.com/midp/articles/uidesign/ [12] Magan, M; Vargas, P; Azzolin, D. Tcnicas para Desenvolvimento de

Aplicaes Orientadas a Objetos Utilizando a Linguagem Java. III Simpsio Brasileiro de Linguagens de Programao, 1999. [13] MIDP Style Guide - Mobile Information Device Profile (MIDP)

1.0a. Sun, 2002. Disponvel em: http://www.sun.java.com. [14] Ribeiro, A. Servios de Dados Mveis. Trabalho de Concluso de

Disciplina - Sistemas de Comunicaes Mveis. 2002. [15] Rocha, H. Tutorial: Desenvolvimento de Applets & Aplicaes em

Java. 1998. [16] Sharma, C. Aplicaes Comerciais da Internet Sem Fio. Editora Makron

Books, 2001 [17] Silva, W. Tecnologias Java para Sistemas Embarcados. Trabalho de

Concluso de Curso. 2001 [18] Souza, B. O mais importante do Java Esforo de uma comunidade.

Revista Java Magazine, Edio 4, 2003. [19] Tanenbaum, A.S.; Woodhull, A.S. Sistemas Operacionais: Projeto e

Implementao, 2a. ed., Porto Alegre: Bookman, 2000.

67

[20]

The Java Language Environment - A White Paper May 1996 James

Gosling and Henry McGilton. [21] Topley, Kim. J2ME in a Nutshell. The Mobile Information Device

Profile and MIDlets. OREILLY, 2002. [22] Walrand, J.; Varaiya, P. High-Performance Communication Networks,

Margan Kaufman, 2000.

68

Lista de Siglas
1G - Primeira Gerao de Sistemas Celulares. 2G - Segunda Gerao de Sistemas Celulares. 3G -Terceira Gerao de Sistemas Celulares. AMPS - Advanced Mobile Telephone System. AOT- Ahead-of-Time. APIs - Applications Programming Interface. BSs - Base Stations. CDC - Configurao para dispositivos conectados. CDMA - Code Division Multiple Access CG - Garbage Collector. CLDC - Configurao para dispositivos com limites de conexo. CORBA - Common Object Request Broker Architecture. CVM - Compact Virtual Machine. EJB - Enterprise JavaBeans. ESN - Eletronic Serial Number. FDMA - Frequency Division Multiple Access. GSM - Global System for Mobile Communications. HLR - Home Location Register. HTTP - Protocolo de Transferncia de Hipertexto. HTTP - Protocolo de Transferncia de HiperTexto. HTML - Linguagem de Marcao de Hipertexto. HTTPS - Protocolo de Transferncia de Hipertexto Seguro. IMT - 2000 - International Mobile Telecommunications 2000. IP - Internet Protocol. IS-136-Interim Standard 136. IS-54 - Interim Standard 54 IS-95 - Interim Standard 95. ITU - International Telecommunication Union. J2ME - Java 2 Micro Edition J2EE - Java 2 Enterprise Edition. J2SDK- Java Software Development Kit 2. 69

J2ME- Java 2 Micro Edition. J2SE - Java 2 Standard Edition. JAR - Java Archive. JAD - Java Archive Descriptor. JCP - Java Community Process. JDBC - Java Data Base Connection. JDK - Java Development Kit. JIT - Just in Time. JNI - Java native interface. JNI - Java Native Interface. JRE - Java Run-Time Environment. JSR - Java Specification Request. JTACS- Japan Total Access Communications Systems. JVM - Java Virtual Machine. KVM - Kilo Virtual Machine. M-commerce - Mobile commerce. MIN- Mobile Identification Number. MIDP - Perfil do Dispositivo de Informaes Mveis. MS - Mobile Stations. MSC - Mobile Switching Center. NMT - Nordic Mobile Telephones system. PDC - Personal Digital Cellular. PDAs - Personal Digital Assistant PSTN - Public Switched Telephone Network. RMS - Record Management System. RMI - Remote Method Invocation SIM - Subscriber Identification Module. SMS- Short Messages Service. SSL - Camada de Sockets Seguros. TACS - Total Access Communications Systems. TCP/IP - Transmission Control Protocol. TDMA - Time Division Multiple Access VLR - Visitor Location Register. WAP - Wireless Application Protocol. 70

XML - Linguagem de Marcao Extensvel.

71

Plataformas Utilizadas no Trabalho


Hardware: Microcomputador Pentium III 128 MB de memria RAM.

Softwares: Emulador J2ME Wireless Toolkit. Disponvel para download em http://www.java.sun.com ; Ambiente de Desenvolvimento Integrado Sun One Mobile Studio 4. Disponvel para download em http://www.java.sun.com; Ferramenta Case Rational Rose. Disponvel em

http://www.rational.com/rose.

72